利用一个物化视图日志刷新多个物化视图

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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值