【问题】两个应用系统分别使用oracle和db2两钟数据库,Oracle应用中需要使用DB2中的对象。

【分析】百度后,oracle和其他异构数据库之间连接一般采用透明网关技术。oracle不同版本对db2连接采用了不同网关产品。

9i采用odbc

oracle10g 采用oracle transparent gateway for drda

oracle11g 采用oracle transparent gateway for odbc

【测试】

1、在装透明网关的机器上首先安装 db2的客户端,然后在ODBC管理器里新建系统DSN,驱动选择DB2的默认驱动,数据源命名为ZDJSDB

通过db2控制工具,建立db2admin下的TESTTABLE表。

2、下载oracle10g的 gateways_win32, 安装过程汇中选择oracle transparent gateway for DRDA 10.2.0.1.0 以及子选项 DRDA TCP protocol support 10.2.0.1.0 ,默认安装。

 

3、安装完成后,在home目录下出现 hs 以及 tg4drda 这2个文件夹。需要在hs的admin目录下新建initZDJSDB.ora(复制原来的inithsodbc.ora即可),修改文档里的以下值

HS_FDS_CONNECT_INFO = ZDJSDB
HS_FDS_TRACE_LEVEL = off

4、在透明网关的服务器上建立监听,如果网关在oracle数据库服务器上则默认已安装。修改 listener.ora ,增加红字部分

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = D:\oracle\product\10.2.0\db_2)
      (PROGRAM = extproc)
    )
   (SID_DESC=
      (SID_NAME=ZDJSDB)
      (ORACLE_HOME = D:\oracle\product\10.2.0\db_2)
      (PROGRAM=hsodbc)
     ) 

  )

5、在oracle数据库服务器上的oracle目录下,修改tnsnames.ora,增加如下内容
DB2=
(DESCRIPTION =
   (ADDRESS = (PROTOCOL = TCP)(HOST =127.0.0.1)(PORT = 1521))
   (CONNECT_DATA =
     (SID = ZDJSDB)
   )
   (HS=OK)
)

 

HOST部分的IP为透明网关服务器的IP,本次测试数据库和网关在一台机器上

6、在oracle数据库服务器上建立dblink
create database link DL_ZDJSDB  CONNECT TO "db2admin" IDENTIFIED BY "xxxxxx" USING 'DB2';

测试中发现利用pl/sql developer 工具建立的link 存在安全登陆问题,

后查询原因为针对用户名和密码,oracle不区分大小写,db2区分大小写,所以还是使用上述DDL语句建立LINK

7、使用 SELECT *  FROM db2admin.TESTTABLE@DL_ZDJSDB  查询即可。测试成功。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐