Oracle 11x 中用于增量刷新的实体化视图和相应的主 table 日志

Materalized Views and corresponding master table log for incremental refresh in Oracle 11x

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

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

您可以设置REFRESH FASTREFRESH COMPLETEREFRESH FORCEREFRESH FORCE 表示 Oracle 尝试进行快速刷新,如果这不可能,则执行完全刷新。如果您省略该子句,则 REFRESH FORCE 是默认值。

完全刷新不会触及任何物化视图日志,它们会一直保留到所有快速物化视图都已刷新,即完全刷新重做查询并从头开始构建所有记录。

显然您尝试创建一个可快速刷新的实体化视图,但您没有成功。

尝试程序 DBMS_MVIEW.EXPLAIN_MVIEW 以检查无法快速刷新的原因。此程序需要 table 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
)