关闭

异地Oracle数据库数据同步

发表于:2009-12-04 10:56

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

#
Oracle

  一、行动目的:

  在服务器甲的数据库的A中的表TBL_TB数据发生改变时,服务器乙的数据库B中的表TBL_TB也发生相应变化。(假设两个表的结构相同,都只含有ID,NAME两列)

  二、执行步骤:

  1)建立连接配置信息:在服务器甲的数据库安装目录下的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 用户名   --连接乙中数据库所使用的用户名我们这次该填写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;

  在服务器甲中的数据库空间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 ;

  需要注意的是,服务器乙的防火墙一定要是关闭的,否则在建立连接的时候,会报超时错误。

《2024软件测试行业从业人员调查问卷》,您的见解,行业的声音!

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号