2012-07-23 109 views
0

我一直試圖理解物化視圖概念很長一段時間,但無法獲得它的確切功能,除了它是不同服務器中的表的物理表(副本)。刷新物化視圖

我曾嘗試以下

CREATE MATERIALIZED VIEW TEMP_MV 
BUILD DEFERRED 
REFRESH COMPLETE 
ON DEMAND 
AS 
SELECT C1,C2,C3 FROM TAB; 

在這裏,我已經使用BUILD DEFERRED,這樣我將只得到了基表的結構 後來我可以用REFRESH得到記錄,但如何執行REFRESH

我甚至試過BUILD IMMEDIATE,這樣它就會顯示記錄,但如果我已經在基表中插入新記錄,我無法在MV中獲得這些新記錄。

CREATE MATERIALIZED VIEW TEMP_MV 
BUILD IMMEDIATE 
REFRESH COMPLETE 
ON DEMAND 
FOR UPDATE 
AS 
SELECT C1,C2,C3 FROM TAB; 

我使用Oracle 10g。 請幫助我更好地理解MV。

感謝

回答

2

如果不指定你的物化視圖的定義和物化視圖的時間表沒有定義,刷新提交,你需要調用DBMS_MVIEW.REFRESH以刷新物化視圖中的數據。這就是REFRESH COMPLETE ON DEMAND提到的「需求」 - 當你想要刷新時你必須告訴物化視圖。

0

首先創建登錄基礎關係。
我使用emp表作爲基礎關係,並且我想在提交1秒後更新物化視圖。
因此,使用此查詢創建登錄基關係
在emp上創建物化視圖日誌;
然後
創建物化視圖測試
刷新快速
開始與SYSDATE
下SYSDATE +(1 /(24 * 60 * 60))
作爲
SELECT * FROM EMP;

+0

請首先看到[如何回答](https://stackoverflow.com/help/how-to-answer) – 2017-07-12 03:25:36