1

我有一个复杂的查询,它不满足使用“REFRESH FAST ON COMMIT”或“REFRESH FAST”创建物化视图的条件。我已经使用“立即构建”创建了物化视图。我已经在查询中使用的所有表上创建了物化视图日志。我的问题是,当我刷新物化视图时,它是否会使用物化视图日志来增量刷新表,而没有设置“REFRESH FAST ON COMMIT”或“REFRESH FAST”创建选项的物化视图。它会在刷新时重做查询并从头开始构建所有记录。

4

1 回答 1

0

我没有完全明白你的问题,但这里有一些答案:

您可以设置REFRESH FAST和。 表示 Oracle 尝试进行 FAST 刷新,如果这不可能,则执行 COMPLETE 刷新。如果省略该子句,则为默认值。REFRESH COMPLETEREFRESH FORCEREFRESH FORCEREFRESH FORCE

COMPLETE refresh 不会触及任何 MATERIALIZED VIEW LOG,它们一直保持到所有 FAST MATERIALIZED VIEW 都被刷新,即 COMPLETE refresh 重做查询并从头开始构建所有记录。

显然,您尝试创建一个可快速刷新的 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 回答