2014-09-23 91 views
1

我使用以下信息创建了物化视图。刷新现有物化视图

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小时刷新一次,我该如何执行?可能吗?

回答

7

对于定期刷新,您必须使用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表达式以确定下一个自动刷新时间,并自动继续刷新。

+0

如果我使用下面的命令,它会刷新直到当前的日期和时间戳吗? ALTER MATERIALIZED VIEW EMPLOYEE_INFO REFRESH COMPLETE START WITH SYSDATE – 2014-09-23 17:52:00

+0

当前时间刷新一次。 – Rimas 2014-09-23 18:33:07