两个oracle数据库中表数据同步(DBLINK+TRIGGER)

数据库数据同步方式有很多,使用Logminer、GoldenGate、DataGurd等基于oracle日志方式的同步,或者使用dblink+trigger进行同步,也可以通过代码的job方式进行同步数据。
最近在做数据采集的一个系统,里面需要对少量表数据进行实时同步,考虑到实时性以及成本,这里采用了dblink+trigger。

我们这里对database_A和database_B进行操作,将database_A里面的表order表数据同步到database_B中。

1. 首先我们需要对两个oracle数据库建立连接
  • 使用管理员登录database_A,给用户rescue添加创建dblink和别名的权限
grant create database link to rescue;
grant create synonym to rescue;
  • 创建dblink(连接的是database_B,所以用户名、密码、host都是database_B的信息)
CREATE DATABASE LINK dblink_test 
 CONNECT TO watertest IDENTIFIED BY watertest
 USING '(DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST=192.168.1.20)(PORT = 1521)))
     (CONNECT_DATA = (SERVICE_NAME = orcl)
   )
 )';

如果创建成功会提示:Database link created

  • 测试是否dblink创建是否成功(在database_A中查询database_B中的数据)
select * from code@dblink_test;
  • 创建并测试别名
create public synonym order_A for order@dblink_test; 
select * from order_A;
2. 在database_A中添加触发器
create or replace trigger test_trigger 
before INSERT ON order FOR EACH ROW 
BEGIN
    IF inserting THEN
        insert into order_A(order_id, goods_id, price) values (:NEW.ORDER_ID, :NEW.GOODS_ID, :NEW.PRICE); 
    END IF;
END;
3. 在database_A的order表中添加数据,查看database_B是否有同步数据
insert into order(order_id, goods_id, price) values('1', '1', 34);
  • 3
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值