「REFRESH FAST ON COMMIT」または「REFRESH FAST」を使用してマテリアライズド ビューを作成するための条件を満たさない複雑なクエリがあります。「BUILD IMMEDIATE」で具体化されたビューを作成しました。クエリで使用されるすべてのテーブルにマテリアライズド ビュー ログを作成しました。私の質問は、マテリアライズド ビューを更新するときに、マテリアライズド ビュー ログを使用して、マテリアライズド ビューに 'REFRESH FAST ON COMMIT' または 'REFRESH FAST' 作成オプションを設定せずにテーブルを増分的に更新するかどうかです。クエリをやり直して、更新時にすべてのレコードを最初から作成しますか。
1 に答える
0
私はあなたの質問を完全には理解していませんが、ここにいくつかの答えがあります:
REFRESH FAST
、 、REFRESH COMPLETE
を設定できますREFRESH FORCE
。
REFRESH FORCE
これは、Oracle が FAST リフレッシュを試行し、それが不可能な場合は COMPLETE リフレッシュを実行することを意味します。REFRESH FORCE
句を省略した場合のデフォルトです。
COMPLETE リフレッシュは MATERIALIZED VIEW LOG に影響を与えず、すべての FAST MATERIALIZED VIEW がリフレッシュされるまで残ります。つまり、COMPLETE リフレッシュはクエリをやり直し、すべてのレコードを最初から作成します。
FAST リフレッシュ可能な MATERIALIZED VIEW を作成しようとしたようですが、成功しませんでした。
プロシージャDBMS_MVIEW.EXPLAIN_MVIEWを試して、FASTリフレッシュができない理由を確認してください。この手順には次の表が必要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
)
于 2017-01-06T10:38:50.367 に答える