|
Oracle suele crear un fichero de traza cuando se produce un error ORA-07445 (coredump) u ORA-00600 (error no controlado, posible bug). Vamos a ver como encontrar la sentencia SQL que provocó el error, así como los parámetros con los que se lanzó la citada sentencia SQL.
Siguiendo las indicaciones de la nota técnica de Oracle 154170.1, tenemos que hacer los siguiente:
-
Buscar cadena "Cursor Dump".
-
Quedarse con el nº del "Current cursor".
-
Buscar "Cursor#n", donde "n" es el nº encontrado en el punto anterior.
-
Unas líneas más abajo, la línea "sqltxt" muestra la sentencia SQL.
-
Y para encontrar los valores de las variables bind, hay que ir buscando "bind#0", "bind#1", etc.
De este modo, obteniendo la sentencia SQL y el valor de sus parámetros se podría volver a ejecutar la sentencia que provocó el error.
En los "Enlaces de interés" (más abajo), están las urls de acceso a las notas técnicas de la Web de Soporte Oficial de Oracle, que explican lo que son los errores ORA-00600 y ORA-07445, así como un formulario que permite buscar si hay bugs registrados relacionados con dichos errores, cuando te encuentres con uno.
Ejemplo:
Veamos un ejemplo de un fichero de traza generado por un error ORA-07445 al lanzar un job:
/u01/app/oracle/admin/VENUS/bdump/venus_j000_8990958.trc
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit
...
ORA-07445: exception encountered: core dump [] [] [] [] [] []
...
******************** Session Cursor Dump ********************** Current cursor: 7, pgadep: 1 Open cursors(pls, sys, hwm, max): 33(22, 11, 64, 800) ... ---------------------------------------- Cursor#7(1104419c0) state=BOUND curiob=11047e4b8 curflg=d fl2=0 par=0 ses=700000688a93ff8 sqltxt(7000003c83d6628)=DECLARE job BINARY_INTEGER := :job; next_date DATE := :mydate; broken BOOLEAN := FALSE; BEGIN PK_MAILS_PENDIENTES_U.P_ENVIA_MAILS; :mydate := next_date; IF broken THEN :b := 1; ELSE :b := 0; END IF; END; ... Bind#0 oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00 oacflg=00 fl2=0001 frm=00 csi=00 siz=24 off=0 kxsbbbfp=1104cf190 bln=22 avl=04 flg=05 value=277462 Bind#1 oacdty=12 mxl=07(07) mxlc=00 mal=00 scl=00 pre=00 oacflg=13 fl2=0001 frm=00 csi=00 siz=8 off=0 kxsbbbfp=fffffffffffbd4c bln=07 avl=07 flg=09 value="3/21/2011 0:55:24" ...
Por tanto los valores de los parámetros :job y :mydate son "277462" y "3/21/2011 0:55:24" respectivamente.
En los enlaces de más abajo, hay uno muy interesante de la Web Oficial de Soporte de Oracle, que muestra un formulario para buscar posibles bugs que puedan ser la causa del error ORA-00600 u ORA-07445 q te está sucediendo. Dicha búsqueda se puede hacer incluso "copiando/pegando" la sección "Call Stack Trace" del fichero de traza correspondiente.
Enlaces de interés:
|