2017-01-06 6 views
1

'REFRESH FAST ON COMMIT'または 'REFRESH FAST'を使用してマテリアライズド・ビューを作成する条件を満たしていない複雑な問合せがあります。私は 'BUILD IMMEDIATE'を使用してマテリアライズド・ビューを作成しました。私は、クエリで使用されるすべてのテーブルのマテリアライズド・ビュー・ログを作成しました。私の質問は、マテリアライズド・ビューをリフレッシュして、マテリアライズド・ビュー・ログを使用して、 'R​​EFRESH FAST ON COMMIT'または 'REFRESH FAST' createオプションを設定したマテリアライズド・ビューを増分的にリフレッシュすることです。クエリをやり直して、リフレッシュ時にすべてのレコードを最初から作成しますか?Oracle 11xの増分リフレッシュ用のMateralizedビューと対応するマスター表ログ

あなたはREFRESH FASTREFRESH COMPLETEREFRESH FORCE設定することができます。

+1

私はあなたの混乱を理解していると思います。あなたのMVは 'refresh fast'の要件を満たしていないので、MVログは必要ありません。それは事実です。さて、それは事実ですから、まだMVログが必要ですか?答えは、ログは1つのマテリアライズド・ビューのためだけではないということです。あなたは、同じベーステーブルを使用する異なるMVを持つかもしれません。これらのMVのうちのいくつかは高速リフレッシュ可能であり、他のものはそうでないかもしれない。ベーステーブル上のMVログはただ一つのログにすぎません。テーブル上の他のMVが高速にリフレッシュできなくても、更新可能なMVがあればそれを使用してそのテーブルを使用します。 – mathguy

答えて

0

私は完全にここにあなたの質問を取得しなかったが、いくつかの答えです。 REFRESH FORCEは、OracleがFASTリフレッシュを試みることを意味し、これが不可能な場合は、完全リフレッシュを実行します。句を省略すると、デフォルトはREFRESH FORCEになります。

完全リフレッシュはMATERIALIZED VIEW LOGには触れず、FAST MATERIALIZED VIEWのすべてがリフレッシュされるまで残ります。つまり、COMPLETEはクエリをやり直して最初からすべてのレコードを再構築します。

明らかに、リフレッシュ可能なMATERIALIZED VIEWを作成しようとしましたが、成功しませんでした。

FASTリフレッシュが不可能な理由を確認するには、手順DBMS_MVIEW.EXPLAIN_MVIEWを試してください。この手順にはテーブルMV_CAPABILITIES_TABLEが必要です:

CREATE TABLE MV_CAPABILITIES_TABLE 
(
    STATEMENT_ID  VARCHAR2(30 BYTE), 
    MVOWNER   VARCHAR2(30 BYTE), 
    MVNAME   VARCHAR2(30 BYTE), 
    CAPABILITY_NAME VARCHAR2(30 BYTE), 
    POSSIBLE   CHAR(1 BYTE), 
    RELATED_TEXT  VARCHAR2(2000 BYTE), 
    RELATED_NUM  NUMBER, 
    MSGNO   INTEGER, 
    MSGTXT   VARCHAR2(2000 BYTE), 
    SEQ    NUMBER 
) 
+0

OKをリフレッシュすると、デフォルトで強制的にリフレッシュされ、マテリアライズド・ビュー・ログが使用されます。 –

+0

リフレッシュのためにマテリアライズド・ビュー・ログを作成する必要がありますか? –

+0

基本表のMATERIALIZED VIEW LOGは、高速リフレッシュの前提条件です。あなたの問題は何ですか?あなたは何を達成しようとしますか? –

関連する問題