我本地库D1用户A需要执行远程库D2上的一个用户B2的存储过程P2,如何搞啊?大家给个思路吧,我的应用程序是spring+ibatis+struts,准备在ibatis的sql配置文件里面调用sql去实现,问下,如何搞?

解决方案 »

  1.   

    同意,怎么建立楼主google一下。
      

  2.   

    dblink就可以搞定了吧:利用DB Link两步搞定Oracle两个数据库间的表同步 
    1,在目标机上建立Oracle DB Link:
    A,在network/admin/tnsname.ora文件中加入源库的连接信息,如:
    AAA=
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 10.5.1.3)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = AAA)
        )
      )
    B,在目标机上用sqlplus user/pwd登录。
    C,用如下命令建立DB Link:
    create public database link AAA_LINK connect to user identified by pwd using 'AAA';
    命令说明:
    CREATE PUBLIC DATABASE LINK 数据库链接名 CONNECT TO 用户名 IDENTIFIED BY 密码 USING ‘本地配置的数据的实例名’;
    如果建立成功,会提示:Database link created.2,使用如下脚本,即可同步数据表:
    #!/bin/sh
    # to sync table A to BBB database from AAA database
    sqlplus user/pwd@BBB <<EOF    #这里是BBB上的数据库和密码还有实例名,请按照实际情况修改
    truncate table A;
    insert into A 
    select * from b_schema.A@AAA_LINK; #这里是指向要同步的来源表,表名必须是<表所有者>.<表名>@<dblink name>
    commit;PS:需要DB支持Advanced replication功能,是否支持,可用如下SQL查看:
    select * from v$option where PARAMETER='Advanced replication';如果是返回True就表示支持。
      

  3.   


    如果是从数据库方面解决的话,就用透明网关做database link如果是由应用解决的话。配置2个数据源,做好分布式事务的控制。