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.