ORA-04063: table/view has errors

ORA-04063

In Oracle, si può generalmente creare un oggetto anche se c’è un errore di compilazione nella procedura o nel pacchetto. Con tale caratteristica, un utente può distribuire uno schema senza risolvere ogni problema con oggetti non validi. Sfortunatamente, questo non è il caso delle viste. Se c’è un errore di compilazione in una procedura, funzione o pacchetto all’interno della vista, questa non verrà creata, e si incorrerà in ORA-04063.

Il problema

L’errore ORA-04063 si verifica perché è stato fatto un tentativo di eseguire una stored procedure o un tentativo di usare una vista che ha degli errori.

Per le stored procedure, il problema può essere un problema di sintassi o riferimenti ad altre procedure che non esistono.

Per le viste, un possibile problema potrebbe essere un riferimento nella query di definizione della vista ad una tabella inesistente. Può anche essere una tabella che ha riferimenti a tipi inesistenti o inaccessibili. Queste informazioni vengono rivelate quando il messaggio viene espanso nell’utilità oerr:

ORA-04063: table/view has errors

Cause: Tentativo di eseguire una stored procedure o di usare una vista che ha degli errori. Per le stored procedure, il problema potrebbe essere un errore di sintassi o riferimenti ad altre procedure inesistenti. Per le viste, il problema potrebbe essere un riferimento nella query di definizione della vista a una tabella inesistente. Può anche essere una tabella che ha riferimenti a tipi inesistenti o inaccessibili.

Azione: Correggere gli errori e/o creare oggetti di riferimento come necessario.

La soluzione

Per risolvere ORA-04063, eseguire la query PL/SQL da sola in SQL*Plus. Dopo aver eseguito la query, usate il comando SQL*Plus “show error” per visualizzare il motivo dell’errore e la posizione (per linea) dell’errore. La sintassi per questo comando è:

SQL > show errors

Per visualizzare il feedback del comando show errors migliorato, unisci dba_errors e dba_service per visualizzare il feedback all’interno delle linee del codice sorgente PL/SQL.

Puoi scegliere di usare il comando CREATE FORCE VIEW, che creerà la vista ma la segnerà come non valida. Assicuratevi di ricreare la vista dopo aver eseguito questo comando.

Nel seguente esempio, il package body PLOG nello schema LM_EMPLOY o non esiste o ha un errore di compilazione:

ORA-04063: package body “LM_EMPLOY.PLOG” ha degli errori

In questo caso, per risolvere l’errore, connettersi al database come utente LM_EMPLOY ed eseguire il seguente comando:

SQL > alter package body plog compile;

Poi usare il comando “show error” (SQL > show errors) per vedere quali errori devono essere corretti.

Guardando avanti

Anche se è difficile prevenire proattivamente di vedere ORA-04063, è sempre una buona pratica controllare due volte la sintassi di tutti i vostri comandi. Assicuratevi che le dipendenze siano corrette e che tutte le variabili a cui si fa riferimento esistano.

Se continuate ad avere problemi con ORA-04063, potete considerare di contattare il vostro amministratore di database per assistenza se non siete il DBA del sistema. Un’altra soluzione potrebbe essere quella di contattare un professionista Oracle per risolvere il problema. Ricordatevi di controllare sempre le credenziali e le certificazioni dei consulenti Oracle per assicurarvi che abbiano l’esperienza e le competenze necessarie per aiutarvi a soddisfare le vostre esigenze di database.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.