• 締切済み

viewの状態について

こんにちは。 viewについての質問です。 環境構築について、table、view等を作成しています。 その際、viewを作成する際に、viewを呼んで作成されるパターンがあります。※呼ばれるviewはまだ作成されていない時です。 この時もちろんエラーになるのですが、このviewをリコンパルする時に、ソースを再実行以外に何か良いコマンド等ないでしょうか? ex)リコンパイル view名 みたいな感じです。 また、viewが正常に作成されているかどうかがわかるコマンド等ご存知でしたら教えて頂けないでしょうか? 宜しくお願い致します。

みんなの回答

  • uresiiwa
  • ベストアンサー率45% (49/107)
回答No.2

質問のお答えとしては、NO.1さんのおっしゃる通りとなります。 なお、"CREATE OR REPLACE VIEW FORCE"と、FORCEオプションはつけておられますよね。でないと、コンパイルエラー時にビューの作成自体に失敗してしまうので、「INVALIDなビューを探してリコンパイル」という方法が取れません。 <おすすめの手順> 1.FORCEオプション付きで全ビュー作成 (すべてひととおりのオブジェクトが作成された後) 2.dba_objects・user_objectsなどシステムテーブルから、STATUSがINVALIDのものだけ抜き出してリコンパイル(PL/SQLプロシージャか、スクリプト化しておくとよい。) ※依存関係の階層が深い場合は、2を2回以上繰り返さないと、INVALIDがなくならない場合もあるので気をつけましょう。

teng046
質問者

お礼

uresiiwaさん ご回答ありがとうございます。 FORCEオプション、知らなかったです。勉強になります。 教えて頂いて恐縮ですが、「CREATE OR REPLACE FORCE VIEW」になるかと思います。 ありがとうございました。

  • mitoneko
  • ベストアンサー率58% (469/798)
回答No.1

ALTER VIEW view_name COMPILE;  でコンパイルができます。  また、all_objects ディクショナリーviewで調べたいviewのレコードを検索してstatusフィールドを調べれば有効か無効か識別できます。  当然しかるべき権限は必要です。念のため

teng046
質問者

お礼

mitonekoさん ご回答ありがとうございました。 色々システムのviewを探したのですが、よくわからなく・・・。 all_objects の status ですね。 ありがとうございました。