刷新现有的物化视图

时间:2014-09-23 14:38:58

标签: oracle materialized-views

我使用以下信息创建了一个物化视图。

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

1 个答案:

答案 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表达式以确定下一个自动刷新时间,并继续自动刷新。