ORA-04063
I Oracle kan du i allmänhet skapa ett objekt även om det finns ett kompileringsfel i proceduren eller paketet. Med en sådan funktion kan en användare distribuera ett schema utan att åtgärda varje problem med ogiltiga objekt. Tyvärr är detta inte fallet för vyer. Om det finns ett kompileringsfel i en procedur, en funktion eller ett paket i vyn kommer det inte att skapas och du kommer att stöta på ORA-04063.
Problemet
Fel ORA-04063 uppstår eftersom man antingen har försökt exekvera en lagrad procedur eller försökt använda en vy som har fel.
För lagrade procedurer kan problemet vara ett syntaxproblem eller referenser till andra procedurer som inte existerar.
För vyer kan ett möjligt problem vara en referens i vyns definitionsfråga till en icke-existerande tabell. Det kan också vara en tabell som har referenser till icke-existerande eller otillgängliga typer. Denna information avslöjas när meddelandet expanderas i verktyget oerr:
ORA-04063: table/view has errors
Bakgrund: Försök att utföra en lagrad procedur eller använda en vy som har fel. För lagrade procedurer kan problemet vara syntaxfel eller referenser till andra, icke-existerande procedurer. För vyer kan problemet vara en referens till en icke-existerande tabell i vyens definierande fråga. Kan också vara en tabell som har referenser till icke-existerande eller otillgängliga typer.
Åtgärd:
Lösningen
För att lösa ORA-04063, kör PL/SQL-frågan själv i SQL*Plus. När du har kört frågan använder du kommandot ”show error” i SQL*Plus för att visa orsaken till felet och felets placering (per rad). Syntaxen för det här kommandot är:
SQL > show errors
För att visa utökad feedback för kommandot show errors, koppla ihop dba_errors och dba_service för att visa feedback inom raderna i PL/SQL-källkoden.
Du kan välja att använda kommandot CREATE FORCE VIEW, vilket skapar vyn men markerar den som ogiltig. Se till att återskapa vyn efter att du kört det här kommandot.
I följande exempel finns paketkroppen PLOG i schemat LM_EMPLOY antingen inte eller har ett kompileringsfel:
ORA-04063: package body ”LM_EMPLOY.PLOG” has errors
I det här fallet kan du lösa felet genom att ansluta till databasen som LM_EMPLOY-användare och köra följande kommando:
SQL > alter package body plog compile;
Använd sedan kommandot ”show error” (SQL > show errors) för att se vilka fel som behöver rättas.
Looking Forward
Som det är svårt att proaktivt förhindra att se ORA-04063 är det alltid bra att dubbelkolla syntaxen i alla dina kommandon. Se till att beroenden är korrekta och att alla variabler som refereras finns.
Om du fortsätter att få problem med ORA-04063 kan du överväga att kontakta din databasadministratör för att få hjälp om du inte är systemets DBA. En annan lösning kan vara att kontakta en Oracle-specialist för att lösa problemet. Kom ihåg att alltid kontrollera Oracle-konsulternas referenser och certifiering för att säkerställa att de har relevant erfarenhet och expertis för att hjälpa dig att uppfylla dina databasbehov.