ORA-04063
En Oracle, generalmente se puede crear un objeto aunque haya un error de compilación dentro del procedimiento o paquete. Con tal característica, un usuario puede desplegar un esquema sin tener que arreglar cada problema con objetos inválidos. Desafortunadamente, este no es el caso de las vistas. Si hay un error de compilación en un procedimiento, función o paquete dentro de la vista, no se creará, y se encontrará con ORA-04063.
El problema
El error ORA-04063 se produce porque se ha intentado ejecutar un procedimiento almacenado o se ha intentado utilizar una vista que tiene errores.
Para los procedimientos almacenados, el problema puede ser un problema de sintaxis o referencias a otros procedimientos que no existen.
Para las vistas, un posible problema podría ser una referencia en la consulta de definición de la vista a una tabla inexistente. También puede tratarse de una tabla que tenga referencias a tipos inexistentes o inaccesibles. Esta información se revela cuando se expande el mensaje en la utilidad oerr:
ORA-04063: table/view has errors
Causa: Se ha intentado ejecutar un procedimiento almacenado o utilizar una vista que tiene errores. En el caso de los procedimientos almacenados, el problema puede ser errores de sintaxis o referencias a otros procedimientos inexistentes. En el caso de las vistas, el problema podría ser una referencia en la consulta de definición de la vista a una tabla inexistente. También puede ser una tabla que tiene referencias a tipos inexistentes o inaccesibles.
Acción: Corrija los errores y/o cree los objetos referenciados según sea necesario.
La solución
Para resolver ORA-04063, ejecute la consulta PL/SQL por sí misma en SQL*Plus. Después de ejecutar la consulta, utilice el comando «show error» de SQL*Plus para ver el motivo del error y la ubicación (por línea) del mismo. La sintaxis de este comando es:
SQL > mostrar errores
Para ver la retroalimentación mejorada del comando mostrar errores, una dba_errors y dba_service para ver la retroalimentación dentro de las líneas del código fuente PL/SQL.
Puede optar por utilizar el comando CREATE FORCE VIEW, que creará la vista pero la marcará como no válida. Asegúrese de volver a crear la vista después de ejecutar este comando.
En el siguiente ejemplo, el cuerpo del paquete PLOG en el esquema LM_EMPLOY no existe o tiene un error de compilación:
ORA-04063: el cuerpo del paquete «LM_EMPLOY.PLOG» tiene errores
En este caso, para resolver el error, conéctese a la base de datos como usuario LM_EMPLOY y ejecute el siguiente comando:
SQL > alter package body plog compile;
Luego utilice el comando «show error» (SQL > show errors) para ver qué errores hay que corregir.
Mirando hacia el futuro
Aunque es difícil evitar proactivamente ver ORA-04063, siempre es una buena práctica volver a comprobar la sintaxis de todos sus comandos. Asegúrese de que las dependencias son correctas y de que todas las variables a las que se hace referencia existen.
Si sigue teniendo problemas con ORA-04063, puede considerar ponerse en contacto con el administrador de la base de datos para obtener ayuda si no es el DBA del sistema. Otra solución puede ser contactar con un profesional de Oracle para resolver el problema. Recuerde comprobar siempre las credenciales y la certificación de los consultores de Oracle para asegurarse de que tienen la experiencia y los conocimientos pertinentes para ayudarle a satisfacer sus necesidades de bases de datos.