Pular para o conteúdo
Visualizando 10 posts - 1 até 10 (de 10 do total)
  • Autor
    Posts
  • #96709
    luan
    Participante

      Olá galera, boa tarde..
      Estou em uma situação que não consegui achar onde está o problema na query abaixo:

      SELECT P.CNPJ, D.FANTASIA, NULL VL_PROC, NULL VL_AUT_PROC, NULL CONT_PROC_01, NULL CONT_PROC_02, SUM(A.VALOR) VL_CONS, SUM(A.VALORAUTORIZADOPGTO) VL_AUT_CONS, COUNT(*) CONT_CONS_01, COUNT(DECODE(A.STATUSAUDITORIA,'NAO AUDITADO',NULL,1)) CONT_CONS_02
      FROM GUIA_DADO H
      JOIN GUIA_CONSULTA A ON ( H.IDGUIADADO = A.IDGUIADADO )
      JOIN PRESTADOR_CONTRATO G ON ( A.IDCONTRATO = G.ID )
      JOIN PRESTADOR_DETAIL P ON (P.IDDETAIL = G.IDPRESTADORDETAIL)
      JOIN PRESTADOR_DADO D ON ( P.IDPRESTADOR = D.IDPRESTADOR )
      WHERE A.STATUS = 'LIBERADO' AND A.FLAG = 'FINALIZADO'
      AND H.DATAEMISSAO
      BETWEEN TO_DATE('01/10/2010','dd/mm/yyyy')
      AND LAST_DAY(TO_DATE('01/10/2010','dd/mm/yyyy')) +1
      GROUP BY P.CNPJ, D.FANTASIA

      Quando executo o código acima me retorna o seguinte erro:
      ORA-00600: código de erro interno, argumentos: [kkestGetIdxKey: no key for idx!], [], [], [], [], [], [], []
      00600. 00000 – “internal error code, arguments: [%s], [%s], [%s], [%s], [%s], [%s], [%s], [%s]”
      *Cause: This is the generic internal error number for Oracle program
      exceptions. This indicates that a process has encountered an
      exceptional condition.
      *Action: Report as a bug – the first argument is the internal error number

      Já tentei substituir ao invés de passar um char pro to_date, passar direto um date como parametro, mas sempre me retorna esse mesmo erro.

      Alguém tem alguma idéia?

      detalhe que quando passo assim:

      BETWEEN TO_DATE('01/10' || '/' || TO_CHAR(H.DATAEMISSAO,'yyyy'),'dd/mm/yyyy')
      AND LAST_DAY(TO_DATE('01/10' || '/' || TO_CHAR(H.DATAEMISSAO,'yyyy'),'dd/mm/yyyy')) +1

      Funciona normalmente.

      Muito obrigado

      Abraços

      #96715
      Ishii
      Participante

        Olá,

        Sugiro mesmo acionar o Metalink para identificar a causa disso. Em alguns outros fóruns a resposta da Oracle foi que isso é bug e que foi corrigido no patch 11.1.0.7

        Como não foi colocada qual a versão do Oracle e o SO que você opera, acho melhor, ou alterar a query que não deve ter problema em nenhuma das versões ou abrir um chamado na Oracle.

        []s Ishii

        #96721
        jspaulonci
        Participante

          Bom dia Luan, independente do seu workaround no seu select, sugiro fortemente que abra um chamado na Oracle e aplique a correção, isso evitará que tenha outros problemas no futuro.

          #96724
          Ishii
          Participante

            Olá,

            João essa referência que fiz sobre outros fóruns falam que a resposta da Oracle é que, apesar de ser um bug catalogado e corrigido, ele não é crítico e pode ser resolvido via workaround mesmo, até é sugerido uma alteração de um parâmetro do init.ora para alguns casos do Oracle 11.1.0.6 porém esclarecendo que o ORA-00600 sempre deve ser analisado pelo ponto de vista de que há um problema no Kernel do Oracle e nem sempre ele pode ser crítico.

            []s Ishii

            #96725
            luan
            Participante

              Bom dia,

              então a versão do oracle aqui está
              Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 – 64bit Production

              O que é bem estranho é que funciona se mudo a passagem do ano como TO_CHAR(H.DATAEMISSAO,’yyyy’), o problema é que necessito também passar como parametro o ano, mas já tentei todos os workaround imagináveis e sempre cai no mesmo erro 🙁 …
              Em qual log eu consigo mais informações sobre o erro?

              Obrigado

              Abs

              #96726
              Ishii
              Participante

                Olá,

                Nesses fóruns que mencionei algumas pessoas sugerem alterar o _optimizer_enable_extended_stats = false. Teste alterando via alter system e executando essa query se funcionar (POG clara) mude no init.ora e reinicie a instância com isso. Porém… ainda reforço a verificação do Metalink ou até a aplicação do patch 11.1.0.7 uma vez que esse bug foi corrigido nesse patch conforme a documentação da Oracle…

                []s Ishii

                #96727
                luan
                Participante

                  Olá, realmente o alter system funcionou, obrigado.
                  Mas qual impacto em performance isso pode causar?

                  Abs

                  #96728
                  Ishii
                  Participante

                    Olá,

                    Entendo que POG é sempre POG e nesses casos temos o famoso axioma do paleativo-definitivo, em resumo:

                    “Tudo que está ‘solucionado’ paleativamente NUNCA será feito definitivamente até que o problema não tenha outra solução”

                    A descrição desse Bug parece-me muito diferente dessa alteração do parâmetro, não sei qual o impacto que isso pode ocorrer em outras queries, mas como é realmente um BUG deve-se corrigir em definitivo (aplicando o patch Oracle…) pois senão estará apenas “criando um paleativo da query”

                    []s Ishii

                    #96730
                    luan
                    Participante

                      Olá Ishii,

                      Muito obrigado pela ajuda e pelas respostas!
                      Irei aplicar o patch para ver se soluciono isto de vez, pelos menos já apagou o fogo aqui rs…

                      Abraços

                      #96733
                      Ishii
                      Participante

                        Olá,

                        Ok, sem problemas… eu devia lançar essa do Axioma Paleativo-Definitivo nas leis de Murphy…senão pelo menos vou colocar no meu blog 😀

                        []s Ishii

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