物化檢視(Materialized View)的重新整理回滾約束

zhyuh發表於2005-01-25

算上一篇(http://blog.itpub.net/post/334/15305)的續篇

對於物化檢視(Materialized View)的完全重新整理,如果將物化檢視加入到表中,則重新整理時能用delete替代truncate。這樣在重新整理失敗時能夠回滾。

但是採用物化檢視組(Materialized View Group)重新整理時,要考慮一些約束。

[@more@]

1. 對undo表空間的需求。delete替代truncate,必然產生大量undo資訊,所以要考慮使undo tablespace足夠大

2. 如果一個物化檢視組(Materialized View Group)只包括一個物化檢視(Materialized View),則仍然採用truncate方式重新整理,失敗時無法回滾。

  (這部分測試過程略)

3. 如果將多個物化檢視加入到一個組中,則對undo tablespace會有更高要求。從這點考慮,建立一個小的物化檢視,用這個小的物化檢視和要重新整理的檢視去組成一個組。然後再用dbms_refresh.refresh過程去重新整理

SQL> create materialized view eden_dummy as select * from dual;

SQL> exec dbms_refresh.make(name => 'eden_group',list => 'eden_dummy, eden_cstm_mv',next_date => sysdate,interval => 'sysdate + 1/24', implicit_destroy => true);

dba_refresh_children:物化檢視和組的關係資訊

dba_refresh:組的資訊

關於物化檢視組(Materialized View Group)的資訊,可以參考字典

SQL>exec dbms_refresh.refresh('EDEN_GROUP');

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/207/viewspace-788349/,如需轉載,請註明出處,否則將追究法律責任。

相關文章