ORA-04063
In Oracle kunt u in het algemeen een object maken, zelfs als er een compilatiefout in de procedure of het pakket is opgetreden. Met een dergelijke functie kan een gebruiker een schema implementeren zonder elk probleem met ongeldige objecten op te lossen. Helaas is dit niet het geval voor views. Als er een compilatiefout in een procedure, functie of package binnen de view zit, zal deze niet worden aangemaakt, en zult u ORA-04063 tegenkomen.
Het probleem
Fout ORA-04063 treedt op omdat ofwel een poging is gedaan om een opgeslagen procedure uit te voeren of een poging is gedaan om een view te gebruiken die fouten bevat.
Voor opgeslagen procedures kan het probleem een syntaxisprobleem zijn of verwijzingen naar andere procedures die niet bestaan.
Voor views kan een mogelijk probleem een verwijzing zijn in de definiërende query van de view naar een niet-bestaande tabel. Dit kan ook een tabel zijn met verwijzingen naar niet-bestaande of ontoegankelijke typen. Deze informatie wordt onthuld wanneer het bericht wordt uitgebreid in het hulpprogramma oerr:
ORA-04063: table/view has errors
Cause: Poging om een opgeslagen procedure uit te voeren of een view te gebruiken die fouten heeft. Voor opgeslagen procedures kan het probleem syntaxfouten zijn of verwijzingen naar andere, niet-bestaande procedures. Voor views kan het probleem een verwijzing zijn in de definiërende query van het view naar een niet-bestaande tabel. Kan ook een tabel zijn die verwijzingen heeft naar niet-bestaande of ontoegankelijke types.
Actie: Repareer de fouten en/of maak objecten waarnaar wordt verwezen, indien nodig.
De oplossing
Om ORA-04063 op te lossen, voert u de PL/SQL-query zelf uit in SQL*Plus. Nadat u de query hebt uitgevoerd, gebruikt u het SQL*Plus-commando “show error” om de reden voor de fout en de locatie (per regel) van de fout te bekijken. De syntaxis voor dit commando is:
SQL > show errors
Om uitgebreide feedback van het show errors-commando te bekijken, voegt u dba_errors en dba_service samen om feedback binnen de regels PL/SQL-broncode te bekijken.
U kunt ervoor kiezen om het CREATE FORCE VIEW-commando te gebruiken, waarmee de view wordt gemaakt maar ongeldig wordt gemarkeerd. Zorg ervoor dat u de view opnieuw maakt nadat u dit commando hebt uitgevoerd.
In het volgende voorbeeld bestaat de package body PLOG in het schema LM_EMPLOY ofwel niet of heeft een compilatiefout:
ORA-04063: package body “LM_EMPLOY.PLOG” heeft fouten
In dit geval, om de fout op te lossen, maak verbinding met de database als LM_EMPLOY gebruiker en voer het volgende commando uit:
SQL > alter package body plog compile;
Gebruik vervolgens het “show error” commando (SQL > show errors) om te zien welke fouten gecorrigeerd moeten worden.
Voruitkijken
Hoewel het moeilijk is om proactief te voorkomen dat u ORA-04063 te zien krijgt, is het altijd een goede gewoonte om de syntax van al uw commando’s dubbel te controleren. Zorg ervoor dat afhankelijkheden correct zijn en dat alle variabelen waarnaar wordt verwezen bestaan.
Als u problemen blijft ondervinden met ORA-04063, kunt u overwegen contact op te nemen met uw databasebeheerder voor hulp als u niet de systeem-DBA bent. Een andere oplossing kan zijn om contact op te nemen met een Oracle-professional om het probleem op te lossen. Vergeet niet om altijd de referenties en certificering van de Oracle-consultants te controleren om ervoor te zorgen dat ze de relevante ervaring en expertise hebben om u te helpen aan uw databasebehoeften te voldoen.