ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 利用一个物化视图日志刷新多个物化视图

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

原创 Linux操作系统 作者:zuohao_lu 时间:2009-03-24 10:03:12 0 删除 编辑

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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-01-19

  • 博文量
    38
  • 访问量
    183477