异地Oracle数据库的数据同步,行动的主要目的是在服务器甲的Oracle数据库的A里的表TBL_TB相关数据发生变化时,服务器乙的Oracle数据库B中的表TBL_TB也会随着发生相应变化.(假设两个表的结构相同,都只含有ID,NAME两列)。
执行步骤:
1)建立连接配置信息:在服务器甲的Oracle数据库安装目录下的network/admin/tnsnames.ora添加一个连接服务器乙的连接:
- MASTER2 =
- (DESCRIPTION =
- (ADDRESS_LIST =
- (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.2)(PORT = 1521))
- )
- (CONNECT_DATA =
- (SERVICE_NAME = master2)
- )
- )
假设甲的ip地址是192.168.0.1而乙的是192.168.0.2并且乙中的Oracle数据库服务名为master2端口号为1521
2)建立一个DBLINK:
- create public database link LINKMASTER2.Oracle.COM
connect to 用户名 --连接乙中Oracle数据库所使用的用户名我们这次该填写B
identified by "密码" --密码(双引号不用去掉)
- using 'MASTER2';
3)建立同义词:为了方便我们使用,我们来建立一个同义词
- create or replace synonym TESTLINK
- for B.TBL_TB@LINKMASTER2.Oracle.COM;
4)建立触发器:
在服务器甲中的数据库空间A下的TBL_TB下建立触发器,负责插入同步,触发器主体部分:
- begin
- insert into TESTLINK (id,name) values (:new.id,:new.name);
- end;
在服务器甲中的Oracle数据库空间A下的TBL_TB下建立触发器,负责修改同步,触发器主体部分:
- begin
- update TESTLINK set id=:new.id,name=:new.name where id= :old.id;
- end;
假设ID列是***的
行动总结报告:
第2)和3)步骤,应该是在服务器甲的数据用户A的环境下来执行的sql语句。
建立了同义词后,就可以直接使用查询异地数据库的表格内容了:select * from TESTLINK ;
需要注意的是,服务器乙的防火墙一定要是关闭的,否则在建立连接的时候,会报超时错误。
【编辑推荐】