刷新现有的物化视图

Coo*_*cle 1 oracle materialized-views

我创建了一个包含以下信息的物化视图.

CREATE MATERIALIZED VIEW EMPLOYEE_INFO
AS
SELECT * FROM EMPLOYEE_TABLE WHERE LOCATION = 'Brazil'
Run Code Online (Sandbox Code Playgroud)

我最初没有为这个MV添加任何刷新间隔.现在,我需要每天在0000HRS刷新这个MV.以下命令是否可以帮助我每天在0000HRS更改它?

ALTER MATERIALIZED VIEW EMPLOYEE_INFO
REFRESH COMPLETE 
START WITH SYSDATE
Run Code Online (Sandbox Code Playgroud)

如果我需要每6小时更新一次,我该如何进行?可能吗?

Rim*_*mas 9

对于定期刷新,您必须使用NEXT子句.每天00:00刷新:

ALTER MATERIALIZED VIEW EMPLOYEE_INFO
 REFRESH COMPLETE
 NEXT TRUNC(SYSDATE) + 1
Run Code Online (Sandbox Code Playgroud)

每6小时更新一次:

ALTER MATERIALIZED VIEW EMPLOYEE_INFO
 REFRESH COMPLETE
 NEXT SYSDATE + 6/24
Run Code Online (Sandbox Code Playgroud)

从文档(ALTER MATERIALIZED VIEW):

从条款开始

指定START WITH日期以指示第一个自动刷新时间的日期.

下一条款

指定NEXT以指示用于计算自动刷新之间间隔的日期表达式.

START WITH和NEXT值都必须评估到将来的某个时间.如果省略START WITH值,则Oracle数据库通过根据实例化视图的创建时间计算NEXT表达式来确定第一个自动刷新时间.如果指定START WITH值但省略NEXT值,则Oracle Database仅刷新实例化视图一次.如果省略START WITH和NEXT值,或者如果完全省略alter_mv_refresh,则Oracle数据库不会自动刷新实例化视图.

在下一次自动刷新时,Oracle数据库刷新实例化视图,评估NEXT表达式以确定下一个自动刷新时间,并继续自动刷新.