2012年8月3日金曜日

無効になったPL/SQLのリコンパイル

テーブルの再作成などによって、無効化されたPL/SQLプログラムを抽出して再コンパイルする方法

USER_OBJECTS(場合によっては、ALLだったりする)から、STATUSがINVALIDのPL/SQLプログラムを抽出する。
ここで、抽出されたPL/SQLが無効化されているものなので、ALTER文(alter object_type object_name compile)でコンパイルしなおしてあげる。

以下のSQL文で抽出すると、ALTER文が生成されるので、コピペしてあげればリコンパイルができます。
SELECT 'ALTER ' || OBJECT_TYPE || ' ' || OBJECT_NAME || ' COMPILE;' FROM USER_OBJECTS WHERE STATUS = 'INVALID'