我使用此子句创建物化视图
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 doc中还有一条说明如果指定REFRESH FAST,则CREATE语句将失败,除非物化视图主表已存在物化视图日志。当直接路径INSERT发生时,Oracle数据库会自动创建直接加载器日志。无需用户干预。
而且我不确定我遇到的问题是否是因为我不完全理解的这个评论(具体是这个:然后CREATE语句将失败,除非物化视图已存在物化视图日志主表)。
答案 0 :(得分:1)
FAST REFRESH选项允许我们通过自上次刷新以来仅应用 delta 来实现物化视图与其基础表的同步。诀窍是Oracle需要知道delta是什么。
因此我们需要在底层源表上创建物化视图日志。并且,正如错误消息所表明的那样,我们无法使用FAST REFRESH选项创建物化视图,除非SELECT子句中的所有表都具有此类日志。 Find out more。
我们不需要使用COMPLETE REFRESH选项的物化视图的日志,因为它每次都会查询整个表。
答案 1 :(得分:1)
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;