Un error que la aplicación trata en silencio igual cuesta tiempo y puede explicar un resultado extraño. La sección de errores lista los códigos ORA- que registró el trace, qué significa cada uno y en qué sentencia apareció.
Qué muestra la sección
La sección Errores aparece cuando el trace tiene líneas ERROR o PARSE ERROR. El texto de arriba explica el límite del dato: El trace guarda solo el código; el texto completo del mensaje lo tiene quien recibió el error. El nombre de la constraint violada, por ejemplo, está en el log de la aplicación, y no en el trace.
Cada código es una tarjeta, del más frecuente al menos frecuente. El título es el código con el nombre, como ORA-00001 · restricción única violada, y al lado vienen las ocurrencias, la primera vez que apareció el error y la línea del trace. La tarjeta trae:
- Qué es, Cuándo aparece y Qué hacer, cuando el código está en el catálogo de la consola. Fuera de él, la tarjeta dice Código fuera del catálogo de la consola., y los códigos de 20000 a 20999 aparecen como error generado por la aplicación, porque son los de
RAISE_APPLICATION_ERROR; - el enlace Documentación de Oracle para ORA-NNNNN, en la versión de la base de datos del trace, de 10.2 a 23ai. En las versiones que Oracle documenta por capítulo, de 10.2 a 18, el código sin enlace exacto lleva al capítulo de su rango, y una nota indica buscar el código en la página;
- en el ORA-00060, cuando el trace tiene el deadlock, el enlace Ver el deadlock (deadlocks).
Cómo leerla
La tabla Dónde apareció de cada tarjeta muestra los lugares del error, por la primera ocurrencia en el trace.
| Columna | Qué indica |
|---|---|
| Llamada | La última llamada del cursor antes del error, como EXEC o FETCH. En el PARSE ERROR, PARSE. |
| Sentencia | El número y el comienzo del texto de la sentencia, con enlace al detalle. En una forma, que suma sentencias que solo difieren en los literales, la etiqueta N variantes va antes del texto. En el PARSE ERROR, el texto del SQL que falló, sin enlace. |
| Prof. | La profundidad: 0 en la llamada de la aplicación, 1 o más en el SQL recursivo. |
| Ocurrencias | Cuántas veces apareció el error en ese lugar. |
| Primera vez | Fecha y hora de la primera ocurrencia o, sin la hora en el trace, los segundos desde su inicio. |
| Línea | La línea del trace de la primera ocurrencia. |
En el detalle de la sentencia, la tarjeta Errores cuenta las líneas ERROR de su cursor.
PARSE ERROR
La línea PARSE ERROR es el SQL que la base de datos no pudo analizar: error de sintaxis, objeto que no existe, falta de privilegio. Ese SQL no recibe cursor, así que no se convierte en sentencia en Sentencias SQL: el lugar del error se identifica por el texto, que el trace graba justo después de la línea. Con la Privacidad de los informes activada en Mi cuenta, el texto con comillas aparece solo hasta la primera de ellas, seguida de ***: en un SQL rechazado, no se puede saber con seguridad dónde termina cada valor (literales ocultos).
ORA-01403, fin de datos
El ORA-01403 (no se encontraron datos) es normal en bucles de lectura, como un SELECT INTO sin fila o el fin de un cursor en PL/SQL. Aparece en la lista, pero no cuenta en el hallazgo de errores. Cuando es el único código del trace, el Diagnóstico muestra el hallazgo de información fin de datos.
Cuándo preocupa
- Cualquier código además del ORA-01403 genera el hallazgo errores de Oracle, de gravedad alta, con el enlace Ver errores.
- Muchas ocurrencias del mismo código en la misma sentencia: la aplicación provoca el error en serie, como insertar y tratar la clave duplicada. La espera
SQL*Net break/reset to clienten el perfil suele acompañar este patrón. - Error en una sentencia recursiva: el problema está en la función, en el procedimiento o en el trigger, y no en el SQL que llamó la aplicación.
Adónde ir después
El trace sintético del ejemplo no tiene errores, y el informe de ejemplo no tiene esta sección.
- Errores de Oracle, para la causa y la solución.
- Fin de datos, para el ORA-01403.
- Detalle de la sentencia en la que apareció el error.