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