物化视图(Materialized View)的刷新回滚约束

算上一篇(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');

请使用浏览器的分享功能分享到微信等