Oracle パッケージのコンパイル

パッケージボディをcreate or replace package bodyで入れ替えたりしていると 自動的にコンパイルしてくれてprocedure/functionが使用できていたものが、急にエラーで使えなかったりすることがあった。 この原因を突き止めたいのだが、とりあえず手動でコンパイルすると使えるようになる。

-- PACKAGE/PACKAGE BODY両方
SQL> ALTER PACKAGE パッケージ名 COMPILE;
-- PACKAGEのみ
SQL> ALTER PACKAGE パッケージ名 COMPILE PACKAGE;
-- PACKAGE BODYのみ
SQL> ALTER PACKAGE パッケージ名 COMPILE BODY;

参考は以下。

プロシージャのコンパイル

[PL/SQL] ストアドを再コンパイルする