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
Banco travado não retorna erro
- stcoutinho
- 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
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
- stcoutinho
- 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
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
-
- 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...
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...
-
- 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
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
att Cristiano
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 8 visitantes