問題がまだ続くかどうかはわかりませんが、あなたが提供したアーティスを見てみると、何かに気づきました(これはここでの解決策かもしれません):
オンコミットリフレッシュ
マテリアライズド・ビューは、ONCOMMITメソッドを使用して自動的にリフレッシュできます。したがって、マテリアライズド・ビューが定義されている表を更新したトランザクションがコミットされるたびに、それらの変更はマテリアライズド・ビューに自動的に反映されます。このアプローチを使用する利点は、マテリアライズド・ビューを更新することを覚えておく必要がないことです。 唯一の欠点は、余分な処理が必要になるため、コミットを完了するために必要な時間がわずかに長くなることです。 ただし、データウェアハウスでは、同じテーブルを更新しようとする並行プロセスが発生する可能性は低いため、これは問題にはなりません。
- 太線に注意してください。
次に、次のようになります。
表7-1要求の更新方法について
更新オプションパラメータの説明完了 C定義クエリを再計算して更新します マテリアライズドビューの。
速い Fマテリアライズドビューに変更を段階的に適用して更新します 。ローカルのマテリアライズド・ビューの場合、オプティマイザーによって最も効率的であると推定されるリフレッシュ方法を選択します。考慮される更新方法は、ログベースのFASTおよびFAST_PCTです。
FAST_PCT P詳細テーブルの変更されたパーティションの影響を受けるマテリアライズドビューの行を再計算して更新します。
力 ?高速リフレッシュを試みます。それが不可能な場合は、完全なリフレッシュを実行します。ローカルのマテリアライズド・ビューの場合、オプティマイザーによって最も効率的であると推定されるリフレッシュ方法を選択します。考慮される更新方法は、ログベースのFAST、FAST_PCT、およびCOMPLETEです。
- 太線に注意してください。
- 私は個人的にFORCEオプションを好みます。
しばらくしてからこれが再び発生するかどうかを教えてください(DBのパラメーターと、DBが実行されているマシンによって異なりますので、どれだけヒントを与えることもできません)。
高速更新が可能な場合
すべてのマテリアライズドビューが高速で更新できるわけではありません。 したがって、パッケージ DBMS_MVIEW.EXPLAIN_MVIEWを使用してください。 マテリアライズド・ビューで使用できるリフレッシュ方法を判別するため。
マテリアライズド・ビューを高速リフレッシュ可能にする方法がわからない場合は、 DBMS_ADVISOR.TUNE_MVIEWを使用できます。 プロシージャ。高速で更新可能なマテリアライズドビューを作成するために必要なステートメントを含むスクリプトを提供します。
乾杯