ORA-04063: tabulka/pohled má chyby

ORA-04063

V systému Oracle můžete obecně vytvořit objekt, i když se v proceduře nebo balíčku vyskytne chyba kompilace. Díky takové funkci může uživatel nasadit schéma, aniž by musel opravovat každý problém s neplatnými objekty. Bohužel to neplatí pro pohledy. Pokud se v proceduře, funkci nebo balíčku v rámci pohledu vyskytne chyba kompilace, nebude vytvořen a narazíte na ORA-04063.

Problém

K chybě ORA-04063 dochází proto, že byl proveden pokus o spuštění uložené procedury nebo pokus o použití pohledu, který obsahuje chyby.

U uložených procedur může být problém v syntaxi nebo v odkazech na jiné neexistující procedury.

U pohledů může být možným problémem odkaz v definujícím dotazu pohledu na neexistující tabulku. Může se také jednat o tabulku, která obsahuje odkazy na neexistující nebo nedostupné typy. Tato informace je odhalena po rozbalení zprávy v nástroji oerr:

ORA-04063: tabulka/pohled má chyby

Příčina: Pokus o spuštění uložené procedury nebo použití pohledu, který obsahuje chyby. U uložených procedur mohou být problémem syntaktické chyby nebo odkazy na jiné, neexistující procedury. U pohledů může být problémem odkaz v definujícím dotazu pohledu na neexistující tabulku. Může se také jednat o tabulku, která obsahuje odkazy na neexistující nebo nedostupné typy.

Akce:

Řešení

Pro vyřešení ORA-04063 proveďte samotný dotaz PL/SQL v SQL*Plus. Po spuštění dotazu použijte příkaz SQL*Plus „show error“ pro zobrazení důvodu chyby a umístění chyby (podle řádků). Syntaxe tohoto příkazu je:

SQL > show errors

Chcete-li zobrazit rozšířenou zpětnou vazbu příkazu show errors, spojte dba_errors a dba_service pro zobrazení zpětné vazby v rámci řádků zdrojového kódu PL/SQL.

Můžete se rozhodnout použít příkaz CREATE FORCE VIEW, který vytvoří pohled, ale označí jej za neplatný. Po spuštění tohoto příkazu nezapomeňte pohled znovu vytvořit.

V následujícím příkladu tělo balíčku PLOG ve schématu LM_EMPLOY buď neexistuje, nebo má chybu kompilace:

ORA-04063: tělo balíčku „LM_EMPLOY.PLOG“ má chyby

V tomto případě se pro odstranění chyby připojte k databázi jako uživatel LM_EMPLOY a spusťte následující příkaz:

SQL > alter package body plog compile;

Poté použijte příkaz „show error“ (SQL > show errors), abyste zjistili, jaké chyby je třeba opravit.

Pohled do budoucna

Ačkoli je obtížné preventivně zabránit tomu, abyste viděli ORA-04063, je vždy dobré překontrolovat syntaxi všech vašich příkazů. Ujistěte se, že závislosti jsou správné a všechny odkazované proměnné existují.

Pokud se i nadále setkáváte s problémy s ORA-04063, můžete zvážit, zda se neobrátit na správce databáze s žádostí o pomoc, pokud nejste systémovým DBA. Dalším řešením může být kontaktování odborníka společnosti Oracle, který problém vyřeší. Nezapomeňte vždy zkontrolovat pověření a certifikaci konzultantů Oracle, abyste se ujistili, že mají příslušné zkušenosti a odborné znalosti, které vám pomohou splnit vaše databázové potřeby.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.