プロが教える店舗&オフィスのセキュリティ対策術

あるテーブルを再作成(Drop→Create)すると、
そのテーブルを参照しているビュー等をリコンパイルしないといけないですよね。

参照しているビューをあらかじめ分かっている場合はいいのですが、
分かっていない場合、オブジェクトブラウザの”状態”で、エラーがないか
確認しています。

質問は
   PL*SQLで同じ事(エラーがあるか確認)をする事は可能でしょうか。
   出来る場合、リコンパイルも行えるのでしょうか。
   出来ない場合、他の方法で確認する事は出来ないでしょうか。

環境は
   Oracle8i
   Windows2000  です。

よろしくお願いします。

A 回答 (1件)

ユーザ自作のSQLで、INVALID状態のオブジェクトを調べることは可能です。


オブジェクトブラウザは、同じ事を陰で処理しているだけです。
リコンパイルも行えます。


"ビュー等"という事ですが、どのようなオブジェクトに対応すれば良いのか
判らないので、ビューについてだけ、リコンパイルするスクリプトを掲示します。

declare
cursor CUR1 is select * from all_objects where object_type='VIEW' and status<>'VALID';
begin
for cur_record in cur1 loop
execute immediate
'alter view '||cur_record.owner||'.'||cur_record.object_name||' compile';
end loop;
end;

こんな感じでビューのリコンパイルが自動化できるはずです。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

これで、作業が早く進みます。
object_typeを他のもの(例えばテーブルやパッケージ)にし、
動的SQLも同様にすれば、view以外でも使えますね。

お礼日時:2006/01/18 13:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す