2014-09-23 60 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