ORA-04063: taulukossa/näkymässä on virheitä

ORA-04063

Oraclessa voit yleensä luoda objektin, vaikka proseduurissa tai paketissa olisi käännösvirhe. Tällaisen ominaisuuden avulla käyttäjä voi ottaa skeeman käyttöön korjaamatta jokaista ongelmaa, jossa on virheellisiä objekteja. Valitettavasti näin ei ole näkymien kohdalla. Jos näkymän sisältämässä proseduurissa, funktiossa tai paketissa on kääntämisvirhe, sitä ei luoda, ja näyttöön tulee ORA-04063.

Ongelma

Ora-04063-virhe esiintyy, koska joko yritettiin suorittaa tallennettu proseduuri tai yritettiin käyttää näkymää, jossa on virheitä.

Säilytettyjen proseduurien osalta ongelma voi olla syntaksiongelma tai viittaukset toisiin proseduureihin, joita ei ole olemassa.

Näkymien osalta mahdollinen ongelma voi olla viittaus näkymän määrittelevässä kyselyssä olemattomaan tauluun. Kyseessä voi olla myös taulukko, jossa on viittauksia olemattomiin tai saavuttamattomiin tyyppeihin. Tämä tieto paljastuu, kun viestiä laajennetaan oerr-apuohjelmassa:

ORA-04063: table/view has errors

Cause: Yritys suorittaa tallennettua proseduuria tai käyttää näkymää, jossa on virheitä. Tallennettujen proseduurien osalta ongelma voi olla syntaksivirheitä tai viittauksia muihin, olemattomiin proseduureihin. Näkymien osalta ongelma voi olla viittaus näkymän määrittelykyselyssä olemattomaan tauluun. Voi olla myös taulukko, jossa on viittauksia olemattomiin tai saavuttamattomiin tyyppeihin.

Toimenpide: Korjaa virheet ja/tai luo viitattuja objekteja tarpeen mukaan.

Ratkaisu

Ratkaistaksesi ORA-04063:n suorita PL/SQL-kysely itsessään SQL*Plusissa. Kun olet suorittanut kyselyn, käytä SQL*Plus-komentoa ”show error” nähdäksesi virheen syyn ja virheen sijainnin (riveittäin). Tämän komennon syntaksi on:

SQL > show errors

Käskyn laajennetun show errors -palautteen tarkastelemiseksi yhdistä dba_errors ja dba_service nähdäksesi palautteen PL/SQL-lähdekoodin rivien sisällä.

Voit halutessasi käyttää CREATE FORCE VIEW -komentoa, joka luo näkymän, mutta merkkaa sen virheelliseksi. Muista luoda näkymä uudelleen tämän komennon suorittamisen jälkeen.

Seuraavassa esimerkissä skeeman LM_EMPLOY pakettirunkoa PLOG ei joko ole olemassa tai siinä on käännösvirhe:

ORA-04063: pakettirunko ”LM_EMPLOY.PLOG” has errors

Tässä tapauksessa voit korjata virheen muodostamalla yhteyden tietokantaan LM_EMPLOY-käyttäjänä ja suorittamalla seuraavan komennon:

SQL > alter package body plog compile;

Käyttämällä sitten komentoa ”näytä virheet” (SQL > näytä virheet) näet, mitkä virheet on korjattava.

Katsominen tulevaisuuteen

Vaikka on vaikea ennaltaehkäisevästi estää ORA-04063:n näkemistä, on aina hyvä käytäntö tarkistaa kaikkien komentojen syntaksi kahdesti. Varmista, että riippuvuudet ovat oikein ja että kaikki muuttujat, joihin viitataan, ovat olemassa.

Jos sinulla on edelleen ongelmia ORA-04063:n kanssa, voit ottaa yhteyttä tietokannan ylläpitäjään saadaksesi apua, jos et ole järjestelmän DBA. Toinen ratkaisu voi olla ottaa yhteyttä Oraclen ammattilaiseen ongelman ratkaisemiseksi. Muista aina tarkistaa Oraclen konsulttien valtakirjat ja sertifioinnit varmistaaksesi, että heillä on asianmukainen kokemus ja asiantuntemus, joka auttaa sinua täyttämään tietokantasi tarpeet.

Vastaa

Sähköpostiosoitettasi ei julkaista.