ORA-04063
Az Oracle-ben általában akkor is létrehozhat egy objektumot, ha az eljárás vagy a csomagon belül fordítási hiba van. Egy ilyen funkcióval a felhasználó anélkül telepíthet egy sémát, hogy minden egyes érvénytelen objektummal kapcsolatos problémát kijavítana. Sajnos a nézetek esetében ez nem így van. Ha a nézeten belüli eljárásban, függvényben vagy csomagban fordítási hiba van, akkor az nem jön létre, és az ORA-04063-at kapja.
A probléma
Az ORA-04063 hiba azért fordul elő, mert vagy egy tárolt eljárást próbáltak végrehajtani, vagy egy hibás nézetet próbáltak használni.
A tárolt eljárások esetében a probléma lehet egy szintaktikai probléma vagy más, nem létező eljárásokra való hivatkozás.
A nézetek esetében a lehetséges probléma lehet egy nem létező táblára való hivatkozás a nézetet definiáló lekérdezésben. Ez lehet olyan táblázat is, amely nem létező vagy nem elérhető típusokra való hivatkozásokat tartalmaz. Ez az információ az oerr segédprogramban az üzenet kibontásakor derül ki:
ORA-04063: table/view has errors
Cause: Megkísérelt olyan tárolt eljárást végrehajtani vagy olyan nézetet használni, amely hibás. A tárolt eljárások esetében a probléma lehet szintaktikai hiba vagy más, nem létező eljárásokra való hivatkozás. Nézet esetén a probléma lehet egy nem létező táblára való hivatkozás a nézetet definiáló lekérdezésben. Lehet olyan táblázat is, amely nem létező vagy elérhetetlen típusokra hivatkozik.
Action: A hibák javítása és/vagy a hivatkozott objektumok létrehozása szükség szerint.
A megoldás
Az ORA-04063 megoldásához hajtsa végre a PL/SQL-lekérdezést önmagában az SQL*Plus-ban. A lekérdezés futtatása után az SQL*Plus “show error” parancsával megtekintheti a hiba okát és a hiba helyét (soronként). A parancs szintaxisa a következő:
SQL > show errors
A bővített show errors parancs visszajelzéseinek megtekintéséhez egyesítse a dba_errors és a dba_service parancsokat a PL/SQL forráskód sorain belüli visszajelzések megtekintéséhez.
A CREATE FORCE VIEW parancsot is használhatja, amely létrehozza a nézetet, de érvénytelennek jelöli azt. A parancs futtatása után mindenképpen hozza létre újra a nézetet.
A következő példában az LM_EMPLOY sémában a PLOG csomagtest vagy nem létezik, vagy fordítási hiba van:
ORA-04063: package body “LM_EMPLOY.PLOG” has errors
Ebben az esetben a hiba elhárításához csatlakozzon az adatbázishoz LM_EMPLOY felhasználóként, és futtassa a következő parancsot:
SQL > alter package body plog compile;
Ezután a “show error” paranccsal (SQL > show errors) megnézheti, milyen hibákat kell javítani.
Nézzünk előre
Noha nehéz proaktívan megelőzni az ORA-04063 megjelenését, mindig jó gyakorlat, hogy kétszer is ellenőrizzük az összes parancsunk szintaxisát. Győződjön meg arról, hogy a függőségek helyesek, és minden hivatkozott változó létezik.
Ha továbbra is problémái adódnak az ORA-04063-mal, fontolja meg, hogy az adatbázis-adminisztrátorhoz fordul segítségért, ha nem Ön a rendszer DBA-ja. Egy másik megoldás lehet, ha egy Oracle szakemberhez fordul a probléma megoldása érdekében. Ne feledje, hogy mindig ellenőrizze az Oracle-tanácsadók megbízólevelét és tanúsítványát, hogy megbizonyosodjon arról, hogy rendelkeznek a megfelelő tapasztalattal és szakértelemmel ahhoz, hogy segítsenek az adatbázis igényeinek kielégítésében.