刷新现有物化视图
问题描述:
我使用以下信息创建了物化视图。刷新现有物化视图
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小时刷新一次,我该如何执行?可能吗?
答
对于定期刷新,您必须使用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):
WITH子句START
指定START WITH dat e表示第一次自动刷新时间的日期。
在下一项
指定NEXT,以指示用于计算自动刷新之间的时间间隔的日期表达。
START WITH和NEXT值都必须在未来的某个时间评估。如果省略START WITH值,则Oracle数据库将通过评估NEXT表达式关于实例化视图的创建时间来确定第一个自动刷新时间。如果您指定了START WITH值但省略了NEXT值,则Oracle数据库仅刷新实体化视图一次。如果您省略了START WITH和NEXT值,或者如果完全省略alter_mv_refresh,则Oracle数据库不会自动刷新实体化视图。
在下一次自动刷新时,Oracle数据库将刷新物化视图,评估NEXT表达式以确定下一个自动刷新时间,并自动继续刷新。
如果我使用下面的命令,它会刷新直到当前的日期和时间戳吗? ALTER MATERIALIZED VIEW EMPLOYEE_INFO REFRESH COMPLETE START WITH SYSDATE – 2014-09-23 17:52:00
当前时间刷新一次。 – Rimas 2014-09-23 18:33:07