2010-11-18 36 views
2

我在一個由數據庫鏈接創建的服務器上有一個物化視圖。 在Mview上有一項工作正在運行。 (使用前面的dbms_refresh.make創建)。實現中的更改

現在我在原表中創建了3個新字段。 我的查詢是。

1)我是否需要再次刪除並創建Mview,如果是的話,是否需要再次在主服務器上創建Mview日誌 2)在Mview上運行的作業會發生什麼,我需要創建它嗎?

也有在Mview上創建的視圖,所以 - 如果我運行創建或替換視圖查詢,它會產生任何問題?

請指導。

謝謝!

回答

3

如果您需要在物化視圖中包含新列,那麼您需要重新創建物化視圖。您必須顯式刪除視圖,因爲沒有「創建或替換實例化視圖」語句。

DROP MATERIALIZED VIEW blah; 
CREATE MATERIALIZED VIEW blah... 

刪除/重新創建物化視圖應重新創建刷新作業。不是100%確定的,但您應該重新創建日誌。

而且,如果你並不需要在您的視圖中的新列,你真的不需要做任何事情......

2

刪除/創建物化視圖後,您應該重新編譯其他視圖,因爲它們可能已失效。

您可以檢查是否與

select * 
from user_objects 
where status = 'INVALID'; 

重新編譯發生視圖可以與

alter view the_view compile; 

exec dbms_utility.compile_schema(user); 

這樣做只是重新編譯架構中的一切。這樣做的時候一定不要有跑步工作!

+0

是否確定「創建或替換」適用於物化視圖?回覆:DCookie的回答(和我的經驗)「創建或替換」會在物化視圖上返回Oracle錯誤。 – Andrew 2011-06-29 20:42:53

+0

你是對的,物化視圖不能被替換。我編輯了我的答案。 – 2011-06-30 08:28:46

相關問題