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

Posted Python小二

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dblink+trigger实现两个Oracle数据库中两个表的数据同步相关的知识,希望对你有一定的参考价值。

本文演示当 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)
)
)'

测试 dblink 是否联通:

select * from dual@dl_test;

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

create public synonym t for test@dl_test;

测试别名:

select * from t;

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;

3. 同步测试

在 database1 中执行如下 sql:

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

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

以上是关于dblink+trigger实现两个Oracle数据库中两个表的数据同步的主要内容,如果未能解决你的问题,请参考以下文章

如何更改Oracle数据库DBlink连接数

oracle dblink设置

两台服务器不同oracle数据库使用dblink+merge实现数据同步

使用 DBlink 进行 oracle 插入

两个一样的oracle 数据库怎么实现数据定期同步?

Oracle-dblink使用不当