- Este tópico contém 9 respostas, 3 vozes e foi atualizado pela última vez 15 anos, 4 meses atrás por
Ishii.
-
AutorPosts
-
3 de novembro de 2010 às 10:24 pm #96709
luan
ParticipanteOlá 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 numberJá 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
4 de novembro de 2010 às 12:34 am #96715Ishii
ParticipanteOlá,
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
4 de novembro de 2010 às 12:21 pm #96721jspaulonci
ParticipanteBom 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.
4 de novembro de 2010 às 1:42 pm #96724Ishii
ParticipanteOlá,
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
4 de novembro de 2010 às 2:30 pm #96725luan
ParticipanteBom dia,
então a versão do oracle aqui está
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 – 64bit ProductionO 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
4 de novembro de 2010 às 2:44 pm #96726Ishii
ParticipanteOlá,
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
4 de novembro de 2010 às 3:03 pm #96727luan
ParticipanteOlá, realmente o alter system funcionou, obrigado.
Mas qual impacto em performance isso pode causar?Abs
4 de novembro de 2010 às 3:20 pm #96728Ishii
ParticipanteOlá,
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
4 de novembro de 2010 às 3:50 pm #96730luan
ParticipanteOlá 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
4 de novembro de 2010 às 4:01 pm #96733Ishii
ParticipanteOlá,
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
-
AutorPosts
- Você deve fazer login para responder a este tópico.