Oracle使用Generic Heterogeneous Services和Transparent Gateways两种方式访问non-oracle 数据库系统,前者是使用不同数据源的ODBC驱动访问,后者使用各自的native driver访问,这里主要说说Gateway。
测试环境:DB2:OEL5.3 + DB2UDB 9.7 ORACLE:OEL5.3 + Oracle 11.2
可以看到,11gR2确实有了更多人性化的东西,除了安装RDBMS时的“Fix & Check Again”功能外,在安装透明网关时也比之前的版本更方便,需要手工配置的地方越来越少,充分体现了User love simplicity。

在安装完gateway之后,在$ORACLE_HOME目录下会有一个dg4db2/admin的文件夹(目录命名发生了点变化,以前为:tg4drda),有三个模板文件:initdg4db2.ora、listener.ora.sample、tnsnames.ora.sample。复制一份initdg4db2.ora文件命名为initdb2inst1.ora(db2inst1为db2的实例名)。打开initdb2inst1.ora配置如下参数:
HS_FDS_CONNECT_INFO=[ochef.db2]:50000/sample,LUW
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
HS_TRANSACTION_MODEL=COMMIT_CONFIRM
HS_FDS_TRANSACTION_ISOLATION=READ_COMMITTED
HS_FDS_SUPPORT_STATISTICS=TRUE
HS_FDS_RESULTSET_SUPPORT=FALSE
HS_FDS_PACKAGE_COLLID=ORACLEGTW
HS_IDLE_TIMEOUT=0
以上参数基本上不用修改,都是在安装时在上图中填写的参数值自动生成。将listener.ora.sample、tnsnames.ora.sample文件中的内容分别添加到$ORACLE_HOME/network/admin下对应的listener.ora和tnsnames.ora文件。具体内容如下:
Listener.ora文件中添加如下内容:
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=db2inst1)
(ORACLE_HOME=/u01/app/oracle/product/11.2.0)
(PROGRAM=dg4db2)
)
)
tnsnames.ora文件,添加如下内容:
db2inst1 =
(DESCRIPTION =
(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = ochef.11g)(PORT = 1521)))
(CONNECT_DATA = (SID = db2inst1))
(hs = ok)
)
启动监听
[oracle@ochef ~]$ lsnrctl start
创建dblink连接db2的数据库实例db2inst1
[oracle@ochef ~]$ sqlplus “/as sysdba”
SQL> create public database link ora4db2 connect to db2inst1 identified by db2inst1 using ‘db2inst1′;
检查db2link ora4db2是否连接成功:
SQL>select * from db2inst1.employee@ora4db2;
SQL> select count(*) from db2inst1.employee@ora4db2;
COUNT(*)
———-
42
Simple无处不在。
-The End-