ORA-04063: table/view has errors

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.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.