通过物化视图方式同步两服务器中数据表的两种不同方式的比较

  最近在搞Oracle数据库物化视图的数据同步,通过查阅资料,找到两种不同的方式。

 

  表设置:服务器A为主服务器,有一个表test,服务器B需要同步服务器A中的test表数据。服务器B中有个数据库链接LINK_A

 

 

  方法一:

 

  在服务器A上

  CREATE MATERIALIZED VIEW LOG ON TEST;

 

  在服务器B上

  CREATE MATERIALIZED VIEW TEST REFRESH FAST ON DEMAND

   START WITH TO_DATE('18-09-2008 00:00:00','dd-mm-yyyy hh24:mi:ss') NEXT SYSDATE+1 AS

   SELECT * FROM TEST@LINK_A;

 

  优点:代码较少,在服务器B上运行完上述SQL命令后,会自动在服务器B上建立TEST表,并从服务器A将TEST表中的数据完全复制到服务器B中,还自动建立一个JOB,并每隔指定时间用FAST方式同步数据。

  缺点:在服务器B上的TEST表完全依赖于物化视图TEST,一旦将物化视图TEST删除,自动建立的JOB、TEST表以及TEST相关的索引、触发器等都会消失。

 

 

  方法二:

 

  在服务器A上

  CREATE MATERIALIZED VIEW LOG ON TEST;

 

  

  在服务器B上

  CREATE TABLE TEST AS SELECT * FROM TEST@LINK_A WHERE 1=2;

  CREATE MATERIALIZED VIEW TEST ON PREBUILT TABLE REFRESH FAST ON DEMAND

   AS SELECT * FROM TEST@LINK_A;

  DBMS_MVIEW.REFRESH(LIST=>'TEST',METHOD=>'COMPLETE');

  SYS.DBMS_JOB.SUBMIT(JOB=>:JOB,WHAT=>'DBMS_MVIEW.REFRESH(LIST=>''TEST'',METHOD=>''FAST'');',

              NEXT_DATE=>TO_DATE('18-09-2008 00:00:00','dd-mm-yyyy hh24:mi:ss'),

              INTERVAL=>'SYSDATE+1');

 

  优点:在服务器B上的TEST表不依赖于物化视图TEST,无论对物化视图做任务操作,都不会影响TEST表中的数据和相关触发器等设置。

  缺点:代码较多,得手动建立TEST表结构,手动做一次完全复制,手动建立JOB。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞天神笔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值