1

REFRESH FAST ON COMMIT15分ごととして定義されているOracleのマテリアライズドビューがある場合。最初に作成されたときに機能し、楽しく更新されます。何が原因で高速リフレッシュが停止しますか?

これに基づいて、更新が停止していることがわかります。

select mview_name, last_refresh_date from all_mviews;
4

3 に答える 3

5

私たちが発見したことは、MV の更新を停止しているようです。更新中に 2 つのデータベース間の接続が失敗した場合、更新は失敗します)。

#1 の場合、更新が失敗し、二度と機能しないため、MV を再作成する必要があります。#2 の場合、更新が再開されるかどうかは不明です。高速リフレッシュ MV は信頼できないことが判明したため、Windows スケジューラでリフレッシュを開始するジョブを作成しました。

于 2009-09-08T12:55:01.703 に答える
1

私の最後の仕事で時折起こったのは、DBA アクティビティがパラメーターjob_queue_processesを 0 に設定することがあるということでした。これにより、パラメーター値が 0 より大きい値に設定されるまで、マテリアライズド ビューの更新が停止します。

于 2009-09-08T18:31:39.810 に答える
1

マテリアライズドビューに依存します。次の oracle データ ディクショナリからのクエリは、すべての (oracle ユーザーの) マテリアライズド ビューの一覧と、それらの更新速度を示します。

SELECT MVIEW_NAME, FAST_REFRESHABLE FROM USER_MVIEWS;

FAST_REFRESHABLE 列は、次のいずれかの値を示します。 NO:マテリアライズド ビューは高速リフレッシュできないため、複雑です。

DIRLOAD:高速リフレッシュは直接ロードでのみサポートされています。

DML:高速リフレッシュは、DML 操作でのみサポートされています。

DIRLOAD_DML:高速リフレッシュは、直接ロードと DML 操作の両方でサポートされています。

DIRLOAD_LIMITEDDML:直接ロードおよび DML 操作のサブセットに対して高速リフレッシュがサポートされています。

過去に私に問題を与えたのはDIRLOAD_LIMITEDDMLです。MVIEWクエリにCOUNT、MAXなどがある場合、私は通常それらを取得しました。通常、これらは挿入と削除で更新されますが、更新では更新されません。

于 2009-09-08T21:17:10.600 に答える