利用oracle快照实现两台数据库服务…

利用oracle快照实现两台数据库服务器表同步。

举例,如源数据库A,目标数据库B,数据库B需要同步数据库A的表CROSS,具体步骤如下:

1、首先在数据库B中创建DBLINK;

-- Create database link
create database link DB_LINK_TEST
  connect to ITS_L identified by ITSADMIN
  using 'orcl_fwq';

2、在数据库A中创建需要被同步的表,如表CROSS,语句就不写了,在数据库B中无需创建表,用快照即可,第5步说明;

 

3、在数据库B中测试DBLINK

     select * from CROSS@DB_LINK_TEST;

    如能正常执行就说明DBLINK没有问题;

 

4、在数据库A中创建快照日志(当快照的刷新方式为 fast  的时候需要创建,具体刷新方式见最后说明)

    Create snapshot log on CROSS;

 

5、在数据库B中创建相应的快照

    Create snapshot CROSS as select * from CROSS@DB_LINK_TEST;

    这里的快照“CROSS”就可以当做数据库B的同步表使用,数据可删除修改;

    在第2步骤中省略了在数据库B中创建表在这里补上了;

 

6、设置快照刷新时间,可定时触发

    Alter snapshot cross refresh fast Start with sysdate+1/1440 next sysdate+1/1440;

    设置快照刷新在一分钟后执行,并且每隔1分钟执行一次;

    一天的秒数=24小时*60分钟*60钞,应为oracle默认加减时间是天。

 

至此快照同步创建完毕,当数据库A的表CROSS发生数据变化,则相应的数据库B的快照CROSS也会相应的发生变化,时间延期为1分钟。

以上测试环境为oracle 10g。 

 

相关:

1、手动刷新快照,在没有自动刷新的情况下,可以手动刷新快照.
    手动刷新方式1
    begin
    dbms_refresh.refresh('cross');
    end;

    手动刷新方式2
    EXEC DBMS_SNAPSHOT.REFRESH('sn_test_user','F');  //第一个参数是快照名,第二个参数 F 是快速刷新 C 是完全刷新.

2、查看快照最后一次刷新时间

    SELECT NAME,LAST_REFRESH FROM ALL_SNAPSHOT_REFRESH_TIMES;

3、查看快照下次执行时间

    select last_date,next_date,what from user_jobs order by next_date;

 

 

说明:
1,ORACLE的快照刷新方式refresh有三种:
fast        快速刷新,用snapshot log,只更新时间段变动部分 
complete    完全刷新,运行SQL语句 
force       自动判断刷新,介于fast和complete之间

快照技术提供给我们三种刷新机制,分别是:

1) Complete 完全刷新机制,即对表的所有数据进行刷新,如果表的数据量十分庞大的,此法会消耗相当的时间;

2) Fast 快速刷新,即只对数据增量进行刷新;

3) Force 强制刷新,首先判断是否能用快速刷新机制,如不行则用完全刷新机制。

2,若在数据库B上创建快速刷新,则要在数据库A上创建快照日志对象,否则没这个必要,即第4步。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值