Oracle 9i透明网关访问SQL Server

Oracle的透明网关是oracle直接访问异构数据库的利器。在9i中,透明网关是包含在数据库安装程序中的,在安装数据库软件过程中可以选择,透明网关可以安装在Oracle DB或者SQL Server DB所在的服务器中,也可以单独安装在二者以外的一台服务器中,看自己的需求如何了。需要说明的是Oracle 9i透明网关不能安装在Windows Server 2008、Win7和Linux等系统中,所以安装前请确定兼容性是没问题的。

本文主要讨论在oracle下如何配置透明网关去访问sqlserver数据库。

在本例中,涉及到三个服务器:

ORACLE DB服务器:

OS: LINUX Redhat5.4 + ORACLE 9.2.0.1

IP: 10.10.10.1

透明网关服务器:

OS: WINDOWS XP SP2

IP: 10.10.10.2

SQL SERVER服务器:

OS: WINDOWS XP + SQLSERVER 2000

IP: 10.10.10.3

PORT: 1433

如果ORACLE DB服务器操作系统是WINDOWS的话,可以把透明网关安装在ORACLE数据服务器上。

下面是详细步骤:

1、安装

在10.10.10.2安装透明网关:

解压后,进入目录,点击setup.exe,启动安装界面,安装oracle transparent gateway for microsoft sql server;

下一步,输入sqlserver地址和sqlserver 数据库名,这里你可以输入正确的,也可以随便输入,或者留空,我们可以安装完成后再配置。

安装完后,会弹出配置监听界面,因为我们要手工配置,点击取消即可。

2、在10.10.10.2配置透明网关参数文件

默认情况下,安装透明网关时会生成一个默认的参数文件:inittg4msql.ora,它的sid是tg4mssql,你可以使用这个文件,也可以新建一个文件。本例选择新建文件。

进入$GATEWAY_HOME\tg4msql\admin目录我这里是:($GATEWAY_HOME是指透明网关的安装主目录)

D:\oracle\ora92

新建一个文件:initsqlsvr.ora

这个名字随便取,但要注意格式:init<sid>.ora,把它理解为oracle的参数文件就可以。

# This is a sample agent init file that contains the HS parameters that are

# needed for the Transparent Gateway for SQL Server

#

# HS init parameters

#

HS_FDS_CONNECT_INFO=”SERVER=10.10.10.3;DATABASE=sqlsvr”

HS_FDS_TRACE_LEVEL=OFF

HS_FDS_RECOVERY_ACCOUNT=RECOVER

HS_FDS_RECOVERY_PWD=RECOVER

 

HS_FDS_CONNECT_INFO的设置有多种格式,如:

HS_FDS_CONNECT_INFO=server_name.db_name,但这种写法server_name不能为IP,且端口必须为默认的1433,如:

HS_FDS_CONNECT_INFO=sqlserver.sqlsvr

 

3、在10.10.10.2配置监听

进入$GATEWAY_HOME\network\admin下,编辑listener.ora文件:

注意:下面的ORACLE_HOME实际上指的是安装透明网关的主目录,sid_name要与上一步配置的参数文件的名称相对应:

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(SID_NAME = PLSExtProc)

(ORACLE_HOME = D:\oracle\ora92)

(PROGRAM = extproc)

)

(SID_DESC=

(SID_NAME=sqlsvr)

(ORACLE_HOME= D:\oracle\ora92)

(PROGRAM=tg4msql)

)

)

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 你的计算机全名)(PORT = 1521))

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))

)

)

 

4、启动监听

运行 – cmd – lsnrctl start

当运行结果最后显示下面消息时表示启用成功

服务摘要..

服务 “PLSExtProc” 包含 1 个例程。

例程 “PLSExtProc”, 状态 UNKNOWN, 包含此服务的 1 个处理程序…

服务 “sqlsvr” 包含 1 个例程。

例程 “sqlsvr”, 状态 UNKNOWN, 包含此服务的 1 个处理程序…

命令执行成功

至此,在透明网关上的工作就算完成了。

5、在10.10.10.1上配置tnsname.ora 

添加如下内容:

sqlsvr=

(DESCRIPTION=

(ADDRESS=

(PROTOCOL=TCP)

(HOST=10.10.10.2)

(PORT=1521)

)

(CONNECT_DATA=

(SID=sqlsvr))

(HS=OK) #这个很重要

)

6、在10.10.10.1创建数据库链接 

SQL> create database link test connect to sa identified by “123456” using ‘sqlsvr’;

7、在10.10.10.1测试连接 

SQL> select * from t@TEST;

hfgh       fhfg       fhfhfh

———- ———- ——

hhh        hhh        hhh

hhh        hhh        hhhhh

自此,透明网关配置完成。有问题可以在下面留言讨论 :D