UnDomain Un friki suelto por la red

workaround


ORA-600: kqd-objerror$

Renombrando una tabla, un usuario ha dejado un trigger en estado invalido. Al intentar recompilar o borrar el trigger, el sistema nos da un error ORA-603 causado por un ORA-600 (algunas veces solo el ORA-600).

Buscando algo por el Metalink de Oracle, y después de no encontrar nada, Google me remitió a la solución esta web: http://oracleblues.blogspot.com/2010/08/ora-600-kqd-objerror.html

Aunque la nota a la que hace referencia (1160244.1) no la he encontrado, los pasos para solucionarlo son sencillos, aunque alguno da un poco de miedo.

El error se debe a que el trigger no se encuentra en la lista de objetos inválidos de la BDD. Al intentar hacer algo con él, se intenta actualizar dicho registro, pero como no existe, se produce el error. En resumen: es un error de inconsistencia de datos del sistema.

El error que nos produce es como el siguiente:
ORA-00600: código de error interno, argumentos: [kqd-objerror$], [D], [0], [90], [OBJETO], [], [], [], [], [], [], []

Es posible que el código varíe en el segundo argumento, ya que la [D] corresponde a un Delete y una [U] a un Update (además de indicar el objeto en cuestión).

La solución se basa en añadir este objeto a la lista de objetos inválidos de la BDD. Esta lista es la tabla de sistema OBJERROR$.

Pero hay un paso imprescindible, que da un poco de miedo: shutdown abort.
Esto se hace para evitar que la modificación que hemos hecho manualmente sea eliminada por el propio sistema.

Los pasos a seguir son los siguientes:

INSERT INTO SYS.OBJERROR$ VALUES(SELECT OBJECT_ID FROM DBA_OBJECTS WHERE OBJECT_NAME='nombre_objeto');
COMMIT;
SHUTDOWN ABORT
STARTUP

Después de esto, ya podremos hacer lo que necesitemos con el objeto en cuestión.

Espero que sea de utilidad.

Distribuir contenido

Mientras tanto, en "¿Alguien ha visto mi martillo?"...


Inicio de sesión


Todo el contenido mostrado ha sido obtenido libremente por la red. Las marcas indicadas son propiedad de sus legítimos dueños y se muestran a modo informativo de manera libre y voluntaria, sin intención publicitaria ni ánimo de lucro. Todo el material propio, y salvo que se indique lo contrario, se encuentra bajo licencia Creative Commons. Si tienes el Copyright de algún contenido o has detectado algna anomalia, por favor, infórmalo al correo undomain@gmail.com para ser corregido cuanto antes. El autor de esta Web no se hace responsable del contenido de terceras personas y de sites ajenos a este.

Powered by Drupal, an open source content management system