無効なオブジェクトを再コンパイルする方法

この記事では無効なオブジェクトを再コンパイルする方法について解説します。

 無効なオブジェクトとは

無効なオブジェクトとは文字通り、状態が無効になっているオブジェクトです。

ビューや索引、プロシージャなどのPL/SQLオブジェクトで無効になってしまう場合があります。

無効になる原因としては、そのオブジェクトが参照しているオブジェクトが不足している場合や変更になった場合があります。

データのインポート時に、参照元のオブジェクトよりも先に参照先のオブジェクトをインポートした場合などに発生します。

状態が一時的に無効になってしまったオブジェクトでも実行時までに正常に実行できる状態であれば問題はありません。

正常に実行されれば自動的にステータスも有効になります。


 無効なオブジェクトの確認方法

無効なオブジェクトは下記のSQLで確認できます。

select owner, object_type, object_name, status
  from dba_objects where status = 'INVALID';

データのインポートを行った際などは確認しておくと無難です。


 無効なオブジェクトの再コンパイル方法

無効なオブジェクトは手動でまとめて再コンパイルすることができます。

oracleによって自動的に用意されているスクリプト「utlrp.sql」を使用します。

「Oracle_home」はOracleホームのパスです。

SQL> @Oracle_home/rdbms/admin/utlrp.sql
実行後に再度無効なオブジェクトが存在するかを確認し、無くなっていれば成功です。