如果我使用快速刷新子句,则不会创建物化视图

Materialized View won't get created if I use refresh fast clause

我用这个子句创建了物化视图

CREATE MATERIALIZED VIEW mvName
REFRESH FAST
START WITH TO_DATE('01-APR-2016 12:19:00','dd-mon-yyyy hh24:mi:ss')
NEXT SYSDATE+1/1440 as ....;

使用此脚本,不会创建物化视图。但是如果我使用 REFRESH COMPLETE,那么它将创建物化视图。

oracle 文档中还有一条注释说 如果您指定 REFRESH FAST,则 CREATE 语句将失败,除非实体化视图主表的实体化视图日志已经存在。当直接路径插入发生时,Oracle 数据库自动创建直接加载程序日志。无需用户干预。

而且我不确定我遇到的问题是否是因为这条我不完全理解的评论(特别是这条评论:那么 CREATE 语句将失败,除非物化视图日志已经存在物化视图主表)。

FAST REFRESH 选项允许我们通过应用自上次刷新以来的增量,将物化视图与其基础 table(s) 同步。诀窍在于 Oracle 需要知道增量是多少。

所以我们需要在底层源上创建物化视图日志table。而且,正如错误消息所表明的那样,我们无法使用 FAST REFRESH 选项创建物化视图,除非 SELECT 子句中的所有 table 都有此类日志。 Find out more

我们不需要带有 COMPLETE REFRESH 选项的实体化视图的日志,因为它每次都会查询整个 table。

create materialized view log on xx_test_tab;

CREATE MATERIALIZED VIEW mvName
REFRESH FAST
START WITH TO_DATE('01-APR-2016 12:19:00','dd-mon-yyyy hh24:mi:ss')
NEXT SYSDATE+1/1440 as select * from xx_test_tab;