测试环境:
Oracle 数据库11g , Linux Redhat 5.4 , IP 192.168.56.180
Sqlserver 数据库 2008 R2 ,Win7 , IP 192.168.56.222
Gateway软件可以安装在Oracle数据库端,Sqlserver数据库端,或者一台单独的服务器上。
本次安装在Sqlserver服务器上。
配置Sql Server登陆设置。
配置成Windows和SqlServer用户登陆。可以创建新的登陆名。
参考
http://blog.163.com/jackie_howe/blog/static/19949134720122261121214/
讲解SQL Server用户登陆的文章。
安装Gateway软件。
安装Gateway时选择for SQL Server。
要求提供SQL Server数据库的资料时写错了也没关系,在配置文件里面可以改。
安装完成后配置监听,默认配置就可以,也可以改。
配置透明网关参数文件
默认情况下,安装透明网关时会生成一个默认的参数文件:initdg4msql.ora,它的SID是dg4msql,可是使用这个文件,也可以新建一个文件,本例中使用新建文件。
进入$GATEWAY_HOME\ dg4msql\admin目录,$GATEWAY_HOME即安装透明网关的安装目录,本例为C:\product\11.2.0\tg_1,
新建一个文件:inittest.ora,这个名字可随便取但要注意格式:init<sid>.ora,把它理解为参数文件就可以。
参数文件内容如下:
# This is a customized agent init file that contains the HS parameters
# that are needed for the Database Gateway for Microsoft SQL Server
#
# HS init parameters
#
HS_FDS_CONNECT_INFO=(local)/mssql/student
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
格外注意HS_FDS_CONNECT_INFO参数,如果设置不合适会出现莫名其妙的错误。
因为数据库在本机所以是(local),如果不是本机可能应该是[192.168.56.222]的形式。
Mssql是SQL Server的实例名,(local)/mssql构成了SQL Server的服务器。Student是里面的一个数据库。
配置Gateway的监听
修改$GATEWAY_HOME\NETWORK\ADMIN目录下的listener.ora文件。
本例中的配置如下:
# listener.ora Network Configuration File: C:\product\11.2.0\tg_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
# This is a sample listener.ora that contains the NET8 parameters that are
# needed to connect to an HS Agent
LISTENER =
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.56.222)(PORT=1521))
)
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=test)
(ORACLE_HOME=C:\product\11.2.0\tg_1)
(PROGRAM=dg4msql)
)
)
#CONNECT_TIMEOUT_LISTENER = 0
模板来自$GATEWAY_HOME\ dg4msql\admin目录。修改几个地方就可以了。
注意的地方:
HOST要写本机的外网IP,不能写成127.0.0.1或者localhost。这样会导致无法连接。
SID_NAME是要与参数文件对应。
修改完配置文件之后需要重启监听,到$GATEWAY_HOME\bin目录下,用管理员身份运行lsnrctl.exe。
先stop再start。成功后再看看status。
这样Gateway就配置好了。
配置Oracle端。
首先配置$ORACLE_HOME/network/admin/tnsnames.ora文件,添加一个TNS。
本例如下:
mssql =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.222)(PORT = 1521))
(CONNECT_DATA =(SID = test))
(HS = OK)
)
注意两点:
HS=OK,说明是异构数据库。
SID要与Gateway的监听和参数文件对应。
修改完成后用TNSPING验证。
配置DBLINK并访问。
创建DBLINK:
create database link tttttdblnk connect to "sa" identified by "Cong" using 'mssql' ;
注意用户名和密码最好用双引号,并注意大小写。
Using后面的是上面创建的TNS名。
根据上面的配置会自动连接到student库,这个库里有一个test表。
select * from test@tttttdblnk ;
如果一切正常就可以把数据读出来了。