REFRESH FAST ON COMMIT
15分ごととして定義されているOracleのマテリアライズドビューがある場合。最初に作成されたときに機能し、楽しく更新されます。何が原因で高速リフレッシュが停止しますか?
これに基づいて、更新が停止していることがわかります。
select mview_name, last_refresh_date from all_mviews;
REFRESH FAST ON COMMIT
15分ごととして定義されているOracleのマテリアライズドビューがある場合。最初に作成されたときに機能し、楽しく更新されます。何が原因で高速リフレッシュが停止しますか?
これに基づいて、更新が停止していることがわかります。
select mview_name, last_refresh_date from all_mviews;
私たちが発見したことは、MV の更新を停止しているようです。更新中に 2 つのデータベース間の接続が失敗した場合、更新は失敗します)。
#1 の場合、更新が失敗し、二度と機能しないため、MV を再作成する必要があります。#2 の場合、更新が再開されるかどうかは不明です。高速リフレッシュ MV は信頼できないことが判明したため、Windows スケジューラでリフレッシュを開始するジョブを作成しました。
私の最後の仕事で時折起こったのは、DBA アクティビティがパラメーターjob_queue_processes
を 0 に設定することがあるということでした。これにより、パラメーター値が 0 より大きい値に設定されるまで、マテリアライズド ビューの更新が停止します。
マテリアライズドビューに依存します。次の 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などがある場合、私は通常それらを取得しました。通常、これらは挿入と削除で更新されますが、更新では更新されません。