1

「REFRESH FAST ON COMMIT」または「REFRESH FAST」を使用してマテリアライズド ビューを作成するための条件を満たさない複雑なクエリがあります。「BUILD IMMEDIATE」で具体化されたビューを作成しました。クエリで使用されるすべてのテーブルにマテリアライズド ビュー ログを作成しました。私の質問は、マテリアライズド ビューを更新するときに、マテリアライズド ビュー ログを使用して、マテリアライズド ビューに 'REFRESH FAST ON COMMIT' または 'REFRESH FAST' 作成オプションを設定せずにテーブルを増分的に更新するかどうかです。クエリをやり直して、更新時にすべてのレコードを最初から作成しますか。

4

1 に答える 1

0

私はあなたの質問を完全には理解していませんが、ここにいくつかの答えがあります:

REFRESH FAST、 、REFRESH COMPLETEを設定できますREFRESH FORCEREFRESH 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 に答える