我使用以下信息创建了一个物化视图。
CREATE MATERIALIZED VIEW EMPLOYEE_INFO
AS
SELECT * FROM EMPLOYEE_TABLE WHERE LOCATION = 'Brazil'
我最初没有为此MV添加任何刷新间隔。现在,我需要每天在0000HRS刷新这个MV。 以下命令是否可以帮助我在0000HRS每天更改它?
ALTER MATERIALIZED VIEW EMPLOYEE_INFO
REFRESH COMPLETE
START WITH SYSDATE
如果我需要每6小时更新一次,我该如何进行?有可能吗?
答案 0 :(得分:9)
对于定期刷新,您必须使用NEXT
子句。每天00:00刷新:
ALTER MATERIALIZED VIEW EMPLOYEE_INFO
REFRESH COMPLETE
NEXT TRUNC(SYSDATE) + 1
每6小时更新一次:
ALTER MATERIALIZED VIEW EMPLOYEE_INFO
REFRESH COMPLETE
NEXT SYSDATE + 6/24
来自文档(ALTER MATERIALIZED VIEW):
START WITH Clause
指定START WITH日期以指示第一个自动刷新时间的日期。
NEXT子句
指定NEXT以指示用于计算自动刷新之间间隔的日期表达式。
START WITH和NEXT值必须评估到将来的某个时间。如果省略START WITH值,则Oracle数据库通过根据实例化视图的创建时间计算NEXT表达式来确定第一个自动刷新时间。如果指定START WITH值但省略NEXT值,则Oracle Database仅刷新实例化视图一次。如果省略START WITH和NEXT值,或者如果完全省略alter_mv_refresh,则Oracle数据库不会自动刷新实例化视图。
在下次自动刷新时,Oracle数据库刷新实例化视图,评估NEXT表达式以确定下一个自动刷新时间,并继续自动刷新。