oracle 一种简单的数据同步方式

         在两个oracle数据库之间数据同步是一个常见的需求,比如同一个开发商开发了hr系统和其他各类业务系统,而各类业务系统如需共享hr人员信息与及组织机构等基本信息,可采用数据同步(当然不同的开发商的系统之间或者大型系统也可以开发webservice接口。基于spring框架还可以使用httpinvoker做接口)

       数据同步的原理是:在原库创建DBLINK,连接到新库。同时在原库创建触发器,一旦原库中的需要同步的数据表发生变化,可按触发器的逻辑将数据同步到新库中。

        步骤如下(见代码):

        1、原库中创建DBLINK

      

create public database link TestDB  connect to username identified by password
   using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 新库ip)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME =服务名)
)
)'; 

 

(注意:添加public其他用户也可以使用该dblink

  附:

  查找dblink:

  select * from dba_db_links 

  删除dblink 

  drop public database link TestDB

 

    2、数据跨库更新或叫数据初始化(以USER表为例)

       查找列名:

      select  wmsys.wm_concat(COLUMN_NAME) from user_tab_columns@TestDB where table_name='USER';

      将列名复制粘贴到要更新的列

      跨库插入:

      insert into USER@TestDB (列名1,列名2) select 列名1,列名2 from USER

 

    3、创建触发器,同步更新数据

create or replace trigger Tri_User
  after insert or update or delete on user_info  
  for each row
declare
  -- local variables here
begin
  if inserting then  
    insert into <span style="color:#000080;">USER@TestDB </span>(ID,EMPLEVEL,BIRTH,EMAIL,……)
    values(:new.ID,:new.LEADERLEVEL,:new.BIRTH,:new.EMAIL,……);
  elsif updating then 
     update <span style="color:#000080;">USER@TestDB </span>set ID=:new.ID,EMPLEVEL=:new.LEADERLEVEL,BIRTH=:new.BIRTH,EMAIL=:new.EMAIL, …… where ID=:old.ID;
  elsif deleting then
     delete from <span style="color:#000080;">USER@TestDB </span>where ID=:old.ID;
  end if;
end Tri_User;

    大家可根据需要来书写自己的触发器,以上的步骤就完成了一个简单的oracle数据同步。

     

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值