oracle dblink-数据同步

 物理上存放于网络的多个Oracle数据库,逻辑上可以看成一个单个的大数据库。 用户可以通过网络对异地数据库中的数据同时进行存取,而服务器之间的协同处理对于工作站用户及应用程序而言是完全透明的:开发人员无需关心网络的链接细节、无需关心数据在网络接点中的具体分布情况、也无需关心服务器之间的协调工作过程。

  实现可分为四步。

  1、在本地tnsnames.ora(该配置文件一般在"oracle主目录\ora90\network\ADMIN"中)里面配置一个服务命名,用于连接远程数据库。
toORADB10G =   //dblink的连接的服务名
(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS =
   (PROTOCOL = TCP) //采用tcp/ip协议
  (HOST = 10.10.10.21) //欲链接主机名称或IP地址
   (PORT = 1521))   //网络端口1521
    )
    (CONNECT_DATA =
        (SERVICE_NAME = oradb10g) //安装ORACLE采用的sid,即远程数据库服务名
    )
)

 2、建立db_link(create public database link)
例:create public database link db21 
  connect to jdc  //用户
  identified by angel  //密码
  using 'toORADB10G'

   3、创建同义词(create sysnonym)

例:
create or replace synonym SYN_GRADING
for GRADING@db21

 4、使用(结合上同义词举例)。

  1)、查询select * from SYN_GRADING, 与select * from GRADING@db21一样。查询的10.10.10.21主机上oradb10g数据库中的GRADING表

  2)、增、删、改需要建立触发器。

create or replace trigger TRI_GRADING
after INSERT OR DELETE OR UPDATE
ON GRADING     //本地数据库表
FOR EACH ROW
BEGIN
      IF inserting THEN
         insert into SYN_GRADING (ID, DEVICEID, GRADE, INTHEYEAR, GRADINGMAN, CARID, STATE, DEPTNAME, DEPTNO)
                values (:NEW.ID, :NEW.DEVICEID, :NEW.GRADE, :NEW.INTHEYEAR, :NEW.GRADINGMAN, :NEW.CARID, :NEW.STATE, :NEW.DEPTNAME, :NEW.DEPTNO);
      ELSIF updating THEN
        update SYN_GRADING set DEVICEID = :NEW.DEVICEID, GRADE = :NEW.GRADE, INTHEYEAR = :NEW.INTHEYEAR, GRADINGMAN = :NEW.GRADINGMAN, CARID = :NEW.CARID, STATE = :NEW.STATE, DEPTNAME = :NEW.DEPTNAME, DEPTNO = :NEW.DEPTNO
           where id = :old.id;   
      ELSIF deleting THEN     
            delete from SYN_GRADING where id = :old.id;           
      END IF;
END TRI_GRADING;
这样,在往本地数据表GRADING中增、删、改数据时,10.10.10.21主机上oradb10g数据库中的GRADING表也将得到同步。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11417069/viewspace-689596/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/11417069/viewspace-689596/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值