Love澤's Room

技術系ネタをまとめていたブログ。現在はカテゴリにこだわらず更新しています。

『ORA-06508: PL/SQL: コールしているプログラム単位が見つかりませんでした』への対応

こんにちは。
先日、Oracleのエラーが出て調査したので、まとめます。
色々と原因・解決方法はあるかとは思いますが、今回はググって検索上位に出た内容とは違っているように見えたので、残しておきます。

エラー内容

今回のエラーは下記の通りでした(一部抜粋&名称マスクしています)。

ORA-20001: [パッケージ.プロシージャ1]でエラーが発生しました。
エラー詳細: [ORA-20001: [パッケージ.プロシージャ2]でエラーが発生しました。
エラー詳細: [ORA-20001: [パッケージ.プロシージャ3]でエラーが発生しました。
エラー詳細: [ORA-06508: PL/SQL: コールしているプログラム単位が見つかりませんでした]]]
ORA-06512: "パッケージ", 行107
ORA-06512: "パッケージ", 行123

今回の対応

(構成イメージ)
バッチ(ストアド呼び出し処理):プロシージャ1がエラーとなったで、エラーログを記録。
→ プロシージャ1:コンパイル正常。プロシージャ2がエラーとなったのでエラー。
→ プロシージャ2:コンパイル正常。プロシージャ3がエラーとなったのでエラー。
→ プロシージャ3:コンパイル正常。プロシージャ4を呼び出せずエラー。
→ プロシージャ4:コンパイル異常。

構成イメージに記載の通り、プロシージャ1~3は正常にコンパイルされていたのですが、プロシージャ3から呼んでいるプロシージャ4がコンパイルエラー(ステータス=INVALID)となっていました。
プロシージャ4を修正し、再コンパイルしたことで、エラーが解決しました。

終わってみれば単純で解決方法も簡単でしたが、ずっとプロシージャ3を調査していたので割と時間がかかりました。
どなたかの参考になれば。