1、需求:目前有两个数据库中的一张表(ACCUM)是通过物化视图来同步的,现第三个数据库亦有同步此表的要求,那么能否利用已有的物化视图日志MLOG$_ACCUM来刷新两个物化视图呢?
2、更多有关物化视图的刷新资料可参考 yangtinkun版主的blog: http://yangtingkun.itpub.net/post/468/20584
3、既然说可以利用一个物化视图来刷新多个物化视图,那就做个测试来证实下吧:
----实验.(注:此实验源数据库与目标数据库为同一数据库)
1.在源数据库(wiptest)上创建MV_LOG:
select * from bb; (返回4行数据)
create table bb_2 as select * from bb where rownum<2;
select * from bb_2; (返回1行数据)
create materialized view log on bb_2 tablespace mv_test with rowid;
2.先在其中一个目标数据库(wiptest)上创建MVIEW:
create materialized view bb_2_mv1 tablespace mv_test
refresh fast with rowid
START WITH sysdate +0.01 next sysdate +1/1440
as
select * from bb_2;
select * from bb_2_mv1; (返回1行数据)
3.测试一个MV_LOG对应一个MVIEW是否成功:
insert into bb_2 select * from bb where rownum<3;
select * from bb_2; (返回3行数据)
过一分钟以后测试:
select * from bb_2_mv1; (返回3行数据)
4.在另外一个目标数据库(wiptest)上创建MVIEW:
create materialized view bb_2_mv2 tablespace mv_test
refresh fast with rowid
START WITH sysdate +0.01 next sysdate +1/1440
as
select * from bb_2;
select * from bb_2_mv2; (返回3行数据)
5.测试一个MV_LOG对应两个MVIEW是否成功:
insert into bb_2 select * from bb where rownum<4;
过一分钟后测试:
select * from bb_2_mv1; (返回6行数据)
select * from bb_2_mv2; (返回6行数据)
insert into bb_2 select * from bb where rownum<4;
过一分钟后测试:
select * from bb_2_mv1; (返回9行数据)
select * from bb_2_mv2; (返回9行数据)
简单的实验就此完成。结论很明显:完全可以利用一个已有的物化视图日志来刷新多个物化视图。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12045182/viewspace-578107/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/12045182/viewspace-578107/