在19.104.24.72 库里有个用户 test_72 往此用户的test 表写入数据的时候,怎么利用触发器将数据写入到另一台远程机器上。目标库的地址 19.104.24.10, 用户名 test_10, 密码 123,实例名orcl。主要是database links 怎么写。琢磨了几个小时,还没解决?

解决方案 »

  1.   

    同个实例还要建立DBLINK?我晕倒。。你看下你用DBLINK是否有CLOB的类型数据
      

  2.   


    -- 先使用 test_72 用户帐户创建数据库链接(test_72 用户需要具有 create database link 系统权限)
    create database link testdb
     connect to test10 identified by 123
     using 
    '  (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 19.104.24.10)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = orcl)
        )
      )
    '
    /-- 再在触发器中使用该数据库链接访问远程表(test10.testb),例如
    update test10.testb@testdb set ...;
      

  3.   

    可以实现的,用database link和trigger联合实现,不过其中有一bug,windows和linux,以及oracle不同版本会触发一bug(服务器同时为windows或linux,或者服务器同时为同一数据库版本没事)。
      

  4.   

    为什么用123 的密码创建会报sql语句未正确结束的错误,而用英文字符的密码就没问题
      

  5.   


    这个bug 是指数据写不过去,还是写过去的数据有问题?
      

  6.   

    同个实例确实不用写links了,直接用户名点表名可以实现,谢谢提醒