dblink+trigger实现两个Oracle数据库中两个表的数据同步

举报
Python小二 发表于 2021/12/07 23:17:04 2021/12/07
【摘要】 本文演示当 database1 的 test 表中新增数据时,将新增的数据同步到 database2 的 test 表中,两个表的表结构一致。 1. 创建 dblink 在 database1 中创建...

本文演示当 database1 的 test 表中新增数据时,将新增的数据同步到 database2 的 test 表中,两个表的表结构一致。

1. 创建 dblink

在 database1 中创建 dblink(uname、pwd、ip、port、sname 为 database2 中信息)

create database link dl_test 
connect to uname identified by "pwd"
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ip)(PORT = port)))
(CONNECT_DATA = (SERVICE_NAME = sname)
)
)'

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

测试 dblink 是否联通:

select * from dual@dl_test;

  
 
  • 1

对需要同步的表建立别名(下面 test 为 database2 中的表):

create public synonym t for test@dl_test;

  
 
  • 1

测试别名:

select * from t;

  
 
  • 1

2. 创建触发器

在 database1 中创建触发器:

create or replace trigger tg_test 
before INSERT ON test FOR EACH ROW 
BEGIN
    IF inserting THEN
        insert into t(id, name, age) 
		values 
		(:NEW.id, :NEW.name, :NEW.age); 
    END IF;
END;

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

3. 同步测试

在 database1 中执行如下 sql:

insert into test(id, name, age) values('8a8a8cac7d7b76ff017d7e398a580kjx', '张三', '34');

  
 
  • 1

执行完成后查看 database2 的 test 表中是否同步了新增的数据。

文章来源: ityard.blog.csdn.net,作者:Python小二,版权归原作者所有,如需转载,请联系作者。

原文链接:ityard.blog.csdn.net/article/details/121765588

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。