Banco travado não retorna erro

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
xprata
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 93
Registrado em: Ter, 06 Abr 2010 11:31 am
Localização: São Paulo - SP

Boa tarde senhores,
Faço o básico com oracle, tenho uma rotina (programação c#) que verifica se o banco esta de pé.
Como faço isso! faço uma conexão e atualizo uma tabela, conseguindo fazer isso o meu retorno é sucesso e com esta informação atualizo uma tela que demonstra que o banco esta ok

Quando tenho problema de conexão, link lento, rede lenta,etc da timeout no momento do open, dai trato o erro e informo a tela.
Não tenho acesso para olhar o banco, e hj fui informando que o banco estava congelado, mas minha aplicação informou que estava ok.

Existe alguma forma de verificar se a conexão com o banco esta ok, fora a forma normal que é fazendo um open ?
Alguém já viu algo parecido, com este tal congelamento ?
Obrigado
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Olá XPRATA,

Pode haver situações onde você consegue se conectar com sucesso na base, mas não consegue fazer nenhuma operação DML (INSERT,DELETE,UPDATE).

Um exemplo disso é quando o banco trabalha com modo ARCHIVE e o ORACLE não consegue mais guardar no disco do servidor os arquivos de cópia do REDO LOG.

Quando um banco em ARCHIVE se depara com o disco cheio e isso impede o mesmo de gerar mais logs no disco, o banco "congela", impedindo operações de DML.

Para sanar este tipo de problema, você poderia criar uma tabela de "demo"/"teste" e fazer com que a sua rotina C# insira e remova (INSERT/DELETE) um único registro de teste nesta tabela. No caso do modo ARCHIVE com falta de espaço em disco, sua rotina C# vai conseguir se conectar no banco, mas a operação de INSERT/DELETE irá falhar e você poderá recuperar a mensagem de erro.

Talvez os foristas possam lhe dar sugestões de outras situações onde pode ocorrer um congelamento de banco e de como você poderia verificar estas situações pela sua rotina C#.

Espero ter podido ajudar em sua dúvida,

Abraços,

Sergio Coutinho
xprata
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 93
Registrado em: Ter, 06 Abr 2010 11:31 am
Localização: São Paulo - SP

Sergio obrigado pelo retorno.
Esta sua dica funciona para update?pois minha aplicação faz um update.
abs
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Oi xprata,

Creio que sim .. não teria problema em testar o update.

Mas o que eu recomendaria é que você criasse uma "tabela demo" no mesmo schema que o seu sistema acessa e montasse uma rotina para fazer o INSERT/DELETE especificamente nesta tabela.

Porque o que você quer é somente ter um processo que teste se o ambiente está OK, não é?

Abraços,

Sergio Coutinho
xprata
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 93
Registrado em: Ter, 06 Abr 2010 11:31 am
Localização: São Paulo - SP

Então foi o que fiz, criei uma tabela para fazer update, onde informa a data do ultimo update que fiz...
Dai controlo conexão e vejo se minha rotina não trava, pois sempre verifico esta data....
Essa do congelamento foi nova e não tive nenhum tipo de erro de retorno...a minha rotina verifica o espaço do banco e um dia antes ela pegou espaço ficando pequeno...mas o DBA fala que não teve problema...
crishpg
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 8
Registrado em: Sex, 12 Out 2012 11:26 am
Localização: Santa ROSA
Contato:
Cristiano Schmitt
Administrador de Banco de Dados e Tecnologia

cara lendo sua mensagem, não sei se você chegou a fazer o tratamento na sua aplicação c# com try catch. Para buscar o erro quando congela o banco de dados.. seria uma boa forma de recuperar o erro.
att Cristiano
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 9 visitantes