ORA-04063
In Oracle kann ein Objekt im Allgemeinen auch dann erstellt werden, wenn ein Kompilierungsfehler innerhalb der Prozedur oder des Pakets vorliegt. Mit einer solchen Funktion kann ein Benutzer ein Schema bereitstellen, ohne jedes Problem mit ungültigen Objekten zu beheben. Leider ist dies bei Views nicht der Fall. Wenn ein Kompilierungsfehler in einer Prozedur, einer Funktion oder einem Paket innerhalb der Ansicht auftritt, wird diese nicht erstellt, und es kommt zu ORA-04063.
Das Problem
Fehler ORA-04063 tritt auf, weil entweder versucht wurde, eine gespeicherte Prozedur auszuführen, oder weil versucht wurde, eine fehlerhafte Ansicht zu verwenden.
Bei gespeicherten Prozeduren kann das Problem ein Syntaxproblem oder Verweise auf andere Prozeduren sein, die nicht existieren.
Bei Ansichten könnte ein mögliches Problem ein Verweis in der definierenden Abfrage der Ansicht auf eine nicht vorhandene Tabelle sein. Dies kann auch eine Tabelle sein, die Verweise auf nicht existierende oder nicht zugängliche Typen hat. Diese Informationen werden angezeigt, wenn die Meldung im oerr-Dienstprogramm erweitert wird:
ORA-04063: Tabelle/View hat Fehler
Ursache: Es wurde versucht, eine gespeicherte Prozedur auszuführen oder eine Ansicht zu verwenden, die Fehler aufweist. Bei gespeicherten Prozeduren kann das Problem in Syntaxfehlern oder Verweisen auf andere, nicht existierende Prozeduren liegen. Bei Views kann das Problem ein Verweis in der definierenden Abfrage des Views auf eine nicht existierende Tabelle sein. Es kann sich auch um eine Tabelle handeln, die Verweise auf nicht existierende oder nicht zugängliche Typen enthält.
Aktion: Beheben Sie die Fehler und/oder erstellen Sie referenzierte Objekte wie erforderlich.
Die Lösung
Um ORA-04063 zu beheben, führen Sie die PL/SQL-Abfrage selbst in SQL*Plus aus. Verwenden Sie nach dem Ausführen der Abfrage den SQL*Plus-Befehl „show error“, um den Grund für den Fehler und den Ort (nach Zeile) des Fehlers anzuzeigen. Die Syntax für diesen Befehl lautet:
SQL > show errors
Um ein erweitertes Feedback zum Befehl show errors anzuzeigen, verbinden Sie dba_errors und dba_service, um das Feedback innerhalb der Zeilen des PL/SQL-Quellcodes anzuzeigen.
Sie können auch den Befehl CREATE FORCE VIEW verwenden, der den View erstellt, ihn aber als ungültig markiert. Stellen Sie sicher, dass Sie die Ansicht neu erstellen, nachdem Sie diesen Befehl ausgeführt haben.
Im folgenden Beispiel ist der Paketkörper PLOG im Schema LM_EMPLOY entweder nicht vorhanden oder hat einen Kompilierungsfehler:
ORA-04063: Paketkörper „LM_EMPLOY.PLOG“ hat Fehler
In diesem Fall, um den Fehler zu beheben, verbinden Sie sich mit der Datenbank als LM_EMPLOY-Benutzer und führen Sie den folgenden Befehl aus:
SQL > alter package body plog compile;
Dann verwenden Sie den Befehl „show error“ (SQL > show errors), um zu sehen, welche Fehler korrigiert werden müssen.
Vorausschauend
Es ist zwar schwierig, proaktiv zu verhindern, dass ORA-04063 angezeigt wird, aber es ist immer eine gute Praxis, die Syntax aller Ihrer Befehle zu überprüfen. Vergewissern Sie sich, dass die Abhängigkeiten korrekt sind und alle Variablen, auf die verwiesen wird, existieren.
Wenn Sie weiterhin Probleme mit ORA-04063 haben, können Sie Ihren Datenbankadministrator um Hilfe bitten, wenn Sie nicht der System-DBA sind. Eine andere Lösung kann darin bestehen, einen Oracle-Experten zu kontaktieren, um das Problem zu beheben. Denken Sie daran, die Referenzen und Zertifizierungen der Oracle-Berater zu überprüfen, um sicherzustellen, dass sie über die entsprechende Erfahrung und das Fachwissen verfügen, um Ihnen bei der Erfüllung Ihrer Datenbankanforderungen zu helfen.