ORA-04063
Oracle では、一般的にプロシージャまたはパッケージ内で編集エラーがある場合でも、オブジェクトは作成することが可能です。 このような機能により、ユーザーは無効なオブジェクトの問題をいちいち修正することなくスキーマをデプロイすることができます。 残念ながら、これはビューの場合ではありません。 ビュー内のプロシージャ、関数、またはパッケージにコンパイルエラーがある場合、それは作成されず、ORA-04063に遭遇することになります。
問題
エラー ORA-04063 は、ストアド プロシージャを実行しようとした、またはエラーがあるビューを使用しようとしたために発生します。
ストアド プロシージャについては、問題は構文の問題または存在しない他のプロシージャへの参照である可能性があります。 これは、存在しない、またはアクセスできない型への参照を持つテーブルである可能性もあります。 この情報は、メッセージが oerr ユーティリティで展開されると明らかになります:
ORA-04063: table/view has errors
Cause: ストアドプロシージャを実行しようとした、またはエラーがあるビューを使用しようとしました。 ストアドプロシージャの場合、問題は、構文エラーまたは他の存在しないプロシージャへの参照である可能性があります。 ビューの場合、問題は、ビューの定義クエリで存在しないテーブルへの参照である可能性があります。 また、存在しない、またはアクセスできない型への参照を持つテーブルである可能性もあります。
Action: 7707>
解決策
ORA-04063を解決するには、SQL*PlusでPL/SQLクエリを単独で実行します。 クエリを実行した後、SQL*Plus の “show error” コマンドを使用して、エラーの理由とエラーの場所(行単位)を表示します。 このコマンドの構文は次のとおりです。
SQL > show errors
拡張show errorsコマンドフィードバックを表示するには、PL/SQLソースコードの行内のフィードバックを表示するためにdba_errorsとdba_serviceを結合してください。 次の例では、スキーマ LM_EMPLOY のパッケージ本体 PLOG が存在しないか、コンパイル エラーになります:
ORA-04063: パッケージ本体 “LM_EMPLOY.PLOG” has errors
この場合、エラーを解決するには、LM_EMPLOY ユーザーとしてデータベースに接続し、次のコマンドを実行します:
SQL > alter package body plog compile;
次に “show error” コマンド(SQL > show errors)で修正すべきエラーの内容を確認してください。
Looking Forward
ORA-04063 の表示を事前に防ぐことは困難ですが、すべてのコマンドの構文をダブルチェックすることは常に良い習慣です。 依存関係が正しく、参照されているすべての変数が存在することを確認します。
ORA-04063で問題に直面し続ける場合、あなたがシステムDBAでないなら、支援のためにデータベース管理者に連絡することを検討してもよいでしょう。 また、Oracle の専門家に連絡して、問題を解決することもできます。 Oracle のコンサルタントの資格と認定を常に確認し、データベースのニーズを満たすために関連する経験と専門知識を持っていることを確認することを忘れないでください。