ORA-7445

Un error ORA-7445 siempre es consecuencia de una violación del programa Oracle.
La violación más común que se produce es un intento de acceso a una posición de memoria que no existe (en realidad: a una posición de memoria no mapeada en el proceso Oracle).

¿Como se pueden producir este tipo de errores?

El código de la BBDD Oracle está programado, en su inmensa mayoría, en el lenguaje 'C'. Sí: aún existen programas desarrollados en 'C'.
Cuando decimos 'C', nos referimos, textualmente, al lenguaje 'C': No a sus variantes 'C++', etc.

Por supuesto, el código de Oracle utiliza punteros. Para los abuelos que han programado en 'C', sabrán que la combinación de 'C' + punteros = 'problemas de acceso a memoria' o los famosos 'punteros desmadrados'.
Cuando se trabaja con punteros en 'C', uno de los errores de programación más comunues es el manejo incorrecto de los punteros:

  • No inicializarlos.
  • Inicializarlos de forma indebida.
  • Manejarlos de forma incorrecta.
  • Confundir puntero con contenido.
  • ...

Cualquiera de estas situaciones puede provocar una 'violación de acceso' o acceso a una posición de memoria que no existe.
Si no la provoca, el efecto puede ser mucho peor: Modificar una variable (posición de memoria) al azar.

¿Qué se debe hacer si detectamos un error ORA-7445?

Los errores ORA-7445, entre otros, presentan estas cracterísticas:

  • Quedan reflejados en el fichero alert.
  • El error lleva asociado unos parámetros. estos parámetros indican dónde se ha producido el error.
  • Generan un fichero de traza asociado. En el alert se indica el nombre del fichero.
  • En Unix, suelen producir un fichero 'core': es el dump (volcado de memoria) de todo el proceso. Se puede analizar con un debugger.

Si detectamos un error de este tipo lo correcto es abrir un caso a Soporte Oracle (TAR) enviando la siguiente información (como mínimo):

  • La linea del fichero alert donde se refleja el error.
  • El fichero de traza generado.
  • Si se ha generado un fichero core, es conveniente guardarlo por si Oracle Soporte nos indica realizar alguna acción con el fichero.

El crear un TAR es de gran ayuda para depurar el código de Oracle.