2

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

これで、元のテーブルに3つの新しいフィールドを作成しました。私の質問はです。

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

また、Mviewで作成されたビューがあるので、-ビュークエリの作成または置換を実行すると、問題が発生しますか?

ご案内ください。

ありがとう!

4

2 に答える 2

3

マテリアライズド ビューに新しい列を含める必要がある場合は、マテリアライズド ビューを再作成する必要があります。「具体化されたビューの作成または置換」ステートメントがないため、ビューを明示的に削除する必要があります。

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

マテリアライズド ビューを削除/再作成すると、更新ジョブが再作成されます。100%確実ではありませんが、おそらくログも再作成する必要があります。

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

于 2010-11-18T17:32:01.403 に答える
2

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

それが起こったかどうかを確認できます

select * 
from user_objects
where status = 'INVALID';

ビューを再コンパイルするには

alter view the_view compile;

また

exec dbms_utility.compile_schema(user);

これは、スキーマ内のすべてを再コンパイルするだけです。これを行っている間、実行中のジョブがないことを確認してください!

于 2010-11-18T07:47:34.447 に答える