ダンプファイルなんかからインポートすると、ビューが"INVALID"になっていることがあります。
たぶん、インポートされる順序に寄るのだと思っています。
たとえば、ビューの中でストアドファンクション使ってたりするケース。ビューをインポートする時点ではまだファンクションが無いわけですからエラーになります。
PROCEDURE、FUNCTION、PACKAGEでも同じように順序によって"INVALID"になる場合がありますね。
まあ、実際にビューが実行される時点でそのファンクションがあれば問題なく実行され、ステータスも"VALID"になるので問題ないのですが、インポートが完了した時点で、"INVALID"があるっていう状況は不安がありませんか?
そんなとき、別管理しているソースをコンパイルするのではなく、オラクル内に格納されているソースを、再コンパイル(リコンパイル)する構文です。
ALTER VIEW <view name> COMPILE;
ALTER FUNCTION <function name> COMPILE;
ALTER PROCEDURE <procedure name> COMPILE;
ALTER PACKAGE <package name> COMPILE;
「ORA-24344: 正常に終了しましたが、コンパイル・エラーがあります。」
が出たらホントにエラーです。気づけてよかったですね。
たぶん、インポートされる順序に寄るのだと思っています。
たとえば、ビューの中でストアドファンクション使ってたりするケース。ビューをインポートする時点ではまだファンクションが無いわけですからエラーになります。
PROCEDURE、FUNCTION、PACKAGEでも同じように順序によって"INVALID"になる場合がありますね。
まあ、実際にビューが実行される時点でそのファンクションがあれば問題なく実行され、ステータスも"VALID"になるので問題ないのですが、インポートが完了した時点で、"INVALID"があるっていう状況は不安がありませんか?
そんなとき、別管理しているソースをコンパイルするのではなく、オラクル内に格納されているソースを、再コンパイル(リコンパイル)する構文です。
ALTER VIEW <view name> COMPILE;
ALTER FUNCTION <function name> COMPILE;
ALTER PROCEDURE <procedure name> COMPILE;
ALTER PACKAGE <package name> COMPILE;
「ORA-24344: 正常に終了しましたが、コンパイル・エラーがあります。」
が出たらホントにエラーです。気づけてよかったですね。
サンキューです。