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
自此,透明网关配置完成。有问题可以在下面留言讨论 😀