Um erro que a aplicação trata em silêncio ainda custa tempo e pode explicar um resultado estranho. A seção de erros lista os códigos ORA- que o trace registrou, o que cada um quer dizer e em que comando apareceu.
O que a seção mostra
A seção Erros aparece quando o trace tem linhas ERROR ou PARSE ERROR. O texto do alto explica o limite do dado: O trace guarda só o código; o texto completo da mensagem fica com quem recebeu o erro. O nome da constraint violada, por exemplo, está no log da aplicação, e não no trace.
Cada código é um cartão, do mais frequente para o menos frequente. O título é o código com o nome, como ORA-00001 · restrição única violada, e ao lado vêm as ocorrências, a primeira vez que o erro apareceu e a linha do trace. O cartão traz:
- O que é, Quando aparece e O que fazer, quando o código está no catálogo da console. Fora dele, o cartão diz Código fora do catálogo da console., e os códigos de 20000 a 20999 aparecem como erro levantado pela aplicação, porque são os do
RAISE_APPLICATION_ERROR; - o link Documentação da Oracle para ORA-NNNNN, na versão do banco do trace, de 10.2 a 23ai. Nas versões que a Oracle documenta por capítulo, de 10.2 a 18, o código sem link exato leva ao capítulo da faixa dele, e uma nota diz para procurar o código na página;
- no ORA-00060, quando o trace tem o deadlock, o link Ver o deadlock (deadlocks).
Como ler
A tabela Onde apareceu de cada cartão mostra os lugares do erro, pela primeira ocorrência no trace.
| Coluna | O que diz |
|---|---|
| Chamada | A última chamada do cursor antes do erro, como EXEC ou FETCH. No PARSE ERROR, PARSE. |
| Comando | O número e o começo do texto do comando, com link para o detalhe. Numa forma, que soma comandos que só diferem nos literais, o selo N variantes vem antes do texto. No PARSE ERROR, o texto do SQL que falhou, sem link. |
| Prof. | A profundidade: 0 na chamada da aplicação, 1 ou mais no SQL recursivo. |
| Ocorrências | Quantas vezes o erro apareceu nesse lugar. |
| Primeira vez | Data e hora da primeira ocorrência ou, sem a hora no trace, os segundos desde o início dele. |
| Linha | A linha do trace da primeira ocorrência. |
No detalhe do comando, o cartão Erros conta as linhas ERROR do cursor dele.
PARSE ERROR
A linha PARSE ERROR é o SQL que o banco não conseguiu analisar: erro de sintaxe, objeto que não existe, falta de privilégio. Esse SQL não ganha cursor, então não vira comando em Comandos SQL: o lugar do erro é identificado pelo texto, que o trace grava logo depois da linha. Com a Privacidade dos relatórios ligada em Minha conta, o texto com aspas aparece só até a primeira delas, seguida de ***: num SQL recusado, não dá para saber com segurança onde cada valor termina (literais escondidos).
ORA-01403, fim de dados
O ORA-01403 (nenhum dado encontrado) é normal em laços de leitura, como um SELECT INTO sem linha ou o fim de um cursor em PL/SQL. Ele aparece na lista, mas não conta no achado de erros. Quando é o único código do trace, o Diagnóstico mostra o achado de informação fim de dados.
Quando preocupa
- Qualquer código além do ORA-01403 gera o achado erros Oracle, de severidade alta, com o link Ver erros.
- Muitas ocorrências do mesmo código no mesmo comando: a aplicação provoca o erro em série, como inserir e tratar a chave duplicada. A espera
SQL*Net break/reset to clientno perfil costuma acompanhar esse padrão. - Erro num comando recursivo: o problema está na função, na procedure ou no trigger, e não no SQL que a aplicação chamou.
Para onde ir depois
O trace sintético do exemplo não tem erros, e o relatório de exemplo não tem esta seção.
- Erros Oracle, para a causa e a resolução.
- Fim de dados, para o ORA-01403.
- Detalhe do comando em que o erro apareceu.