2010-11-18 8 views
2

DBリンクによって作成された1つのマテリアライズド・ビューが1つのサーバーにあります。 そのMviewで1つのジョブが実行されています。 (以前のdbms_refresh.makeで作成)。マテリアライズドの変更

元のテーブルに3つの新しいフィールドが作成されました。 私のクエリはです。

1)Mviewをもう一度削除して作成する必要がある場合は、メインサーバでMviewログを再度作成する必要があります 2)Mviewで実行中のジョブはどうなりますか、aginを作成する必要はありますか?

また、Mviewで作成されたビューがありますので、 - 私はビューの作成または置換を実行すると問題が生じますか?

ご案内しています。

ありがとうございます!

答えて

3

マテリアライズド・ビューに新しい列を追加する必要がある場合は、マテリアライズド・ビューを再作成する必要があります。 「マテリアライズド・ビューの作成または置換」文がないため、ビューを明示的に削除する必要があります。

DROP MATERIALIZED VIEW blah; 
CREATE MATERIALIZED VIEW blah... 

ドロップ/リフレッシュ・ジョブを再作成する必要があり、マテリアライズド・ビューを再作成します。 100%確実ではありませんが、おそらくログも再作成してください。

そして、あなたはあなたのビューに新しい列を含める必要がない場合は、あなたが本当に何もする必要はありません...

2

マテリアライズド・ビューを削除または作成した後は、無効になった可能性があるため、後で他のビューを再コンパイルする必要があります。それはビューが

alter view the_view compile; 

または

exec dbms_utility.compile_schema(user); 

これで行うことができます

select * 
from user_objects 
where status = 'INVALID'; 

再コンパイルして起こったかどうかをチェックすることができます

は、単にあなたのスキーマ内のすべてを再コンパイルします。これを実行中に実行中のジョブがないことを確認してください!

+0

あなたは「を作成または交換は、」マテリアライズド・ビューのために働くことは確かです?再:DCookieの答え(と私の経験) '作成または置換'は、マテリアライズドビューでOracleエラーを返します。 – Andrew

+0

正しいですが、マテリアライズド・ビューは置き換えられません。私は私の答えを編集しました。 –

関連する問題