Pular para o conteúdo
  • Este tópico contém 4 respostas, 4 vozes e foi atualizado pela última vez 12 anos, 1 mês atrás por Avatar de leo_jfleo_jf.
Visualizando 5 posts - 1 até 5 (de 5 do total)
  • Autor
    Posts
  • #104499
    Avatar de leo_jfleo_jf
    Participante

      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 todos

      #104500
      Avatar de hudsonahudsona
      Participante

        Oi 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

        #104510
        Avatar de josenizjoseniz
        Participante

          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

          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.

          #104523
          Avatar de Fábio PradoFábio Prado
          Participante

            leo_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.net

            #104539
            Avatar de leo_jfleo_jf
            Participante

              Fabio,

              Muito obrigado pela dica.
              Foi muito util sua ajuda.

              A todos agradeço a pronta ajuda.

              Tenham um bom final de semana.

            Visualizando 5 posts - 1 até 5 (de 5 do total)
            • Você deve fazer login para responder a este tópico.
            plugins premium WordPress