- Este tópico contém 4 respostas, 4 vozes e foi atualizado pela última vez 12 anos, 1 mês atrás por leo_jf.
-
AutorPosts
-
27 de setembro de 2012 às 12:29 am #104499leo_jfParticipante
Boa Tarde prezados,
tenho um aplicativo c# que lê um spring e caso retorne OK faz um update na base.
Entretanto entre uns 1000 registros 2 não foram commitados e não sei o por que.
Solicitei a equipe dba um log de erro (timeout do banco ou algo do genero), mas incrivelmente não souberam me retornar e dizer o que houve.
Haveria alguma maneira de eu ter esse retorno de erro no meu update. Como saber se o commit realmente foi executado.
Outra dúvida: Um analista aqui disse que é possivel, no oracle, “simular” um post (ou seja um update sem commitar no banco) através de alguma package do oracle.
Alguém sabe se isso existe, pois não lembro de ter ouvido falar.qq ajuda é bem vinda!
forte abraços a todos27 de setembro de 2012 às 1:46 am #104500hudsonaParticipanteOi Leo
Se existe essa package eu não sei, mas você tem algumas formas de lidar com esse problema.
Eu acredito que esses registros não foram atualizados porque o filtro deles (where) provavelmente não deve ter atendido a nenhuma linha.
Voce pode colocar essa lista em um bloco pl/sql e utilizar uma exception para indicar os casos que não sofreram commit ou uma trigger.
Acho mais provável teu problema ser lógico mesmo, mas se estiver convencido que o problema não é esse, um commit no final de todas as inserções na mesma sessão vai matar esse problema.
Abs
27 de setembro de 2012 às 6:35 pm #104510josenizParticipanteSolicitei a equipe dba um log de erro (timeout do banco ou algo do genero), mas incrivelmente não souberam me retornar e dizer o que houve
Todo o controle de timeout, transação, código de erro em instruções SQL, número registros inseridos/atualizados é de responsabilidade da aplicação. Essas informações não são “logadas” no alert.log do rdbms.
27 de setembro de 2012 às 9:02 pm #104523Fábio PradoParticipanteleo_jf,
Acho que a forma mais fácil de vc identificar este problema é pedir para o DBA habilitar uma auditoria FGA para a instrução UPDATE que está sendo executada. Deste modo vcs conseguirão saber qdo ela foi executada (com erro ou sucesso). Se vc avisar logo o DBA, ele tbém poderá fazer uma consulta para extrair todas as instruções SQL que foram executadas, da SGA. Se a instrução ainda estiver na SGA, vcs saberão qtas linhas ela afetou! Se ali mostrar 998 linhas e vc estava esperando afetar 1000 linhas, o erro está na aplicação!!!!
Obs.: No meu blog compartilho alguns scripts que vcs podem consultar instruções sql na SGA: http://www.fabioprado.net/2010/09/scripts-sessoes.html
[]s
Fábio Prado
http://www.fabioprado.net28 de setembro de 2012 às 7:00 pm #104539leo_jfParticipanteFabio,
Muito obrigado pela dica.
Foi muito util sua ajuda.A todos agradeço a pronta ajuda.
Tenham um bom final de semana.
-
AutorPosts
- Você deve fazer login para responder a este tópico.