ORA-04063: tabel/view har fejl

ORA-04063

I Oracle kan du som regel oprette et objekt, selv om der er en kompileringsfejl i proceduren eller pakken. Med en sådan funktion kan en bruger implementere et skema uden at rette hvert problem med ugyldige objekter. Desværre er dette ikke tilfældet for visninger. Hvis der er en kompileringsfejl i en procedure, funktion eller pakke i visningen, vil den ikke blive oprettet, og du vil støde på ORA-04063.

Problemet

Fejlen ORA-04063 opstår, fordi der enten er forsøgt at udføre en lagret procedure, eller fordi der er forsøgt at bruge en visning, der har fejl.

For lagrede procedurer kan problemet være et syntaksmæssigt problem eller henvisninger til andre procedurer, der ikke findes.

For visninger kan et muligt problem være en henvisning i visningens definerende forespørgsel til en ikke-eksisterende tabel. Det kan også være en tabel, der har henvisninger til ikke-eksisterende eller utilgængelige typer. Disse oplysninger afsløres, når meddelelsen udvides i oerr-hjælpeprogrammet:

ORA-04063: tabel/view har fejl

Baggrund: Forsøg på at udføre en lagret procedure eller bruge et view, der har fejl. For lagrede procedurer kan problemet være syntaksfejl eller henvisninger til andre, ikke-eksisterende procedurer. For visninger kan problemet være en henvisning i visningens definerende forespørgsel til en ikke-eksisterende tabel. Det kan også være en tabel, der har henvisninger til ikke-eksisterende eller utilgængelige typer.

Aktion:

Løsningen

For at løse ORA-04063 skal du udføre PL/SQL-forespørgslen i sig selv i SQL*Plus for at rette fejlene og/eller oprette de objekter, der henvises til. Når du har kørt forespørgslen, skal du bruge SQL*Plus-kommandoen “show error” for at få vist årsagen til fejlen og fejlens placering (efter linje). Syntaksen for denne kommando er:

SQL > show errors

For at få vist udvidet feedback fra kommandoen show errors skal du sammenføje dba_errors og dba_service for at få vist feedback inden for linjerne i PL/SQL-kildekoden.

Du kan vælge at bruge kommandoen CREATE FORCE VIEW, som vil oprette visningen, men markere den ugyldig. Sørg for at genskabe visningen, efter at du har kørt denne kommando.

I følgende eksempel findes pakkekroppen PLOG i skemaet LM_EMPLOY enten ikke eller har en kompileringsfejl:

ORA-04063: pakkekroppen “LM_EMPLOY.PLOG” has errors

I dette tilfælde skal du for at løse fejlen oprette forbindelse til databasen som LM_EMPLOY-bruger og køre følgende kommando:

SQL > alter package body plog compile;

Brug derefter kommandoen “show error” (SQL > show errors) for at se, hvilke fejl der skal rettes.

Syntaksering fremadrettet

Selv om det er svært proaktivt at forhindre at se ORA-04063, er det altid god praksis at dobbelttjekke syntaksen i alle dine kommandoer. Sørg for, at afhængigheder er korrekte, og at alle variabler, der refereres til, eksisterer.

Hvis du fortsat oplever problemer med ORA-04063, kan du overveje at kontakte din databaseadministrator for at få hjælp, hvis du ikke er system-DBA. En anden løsning kan være at kontakte en Oracle-specialist for at løse problemet. Husk altid at kontrollere Oracle-konsulenternes legitimationsoplysninger og certificering for at sikre, at de har den relevante erfaring og ekspertise til at hjælpe dig med at opfylde dine databasebehov.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.