一、环境信息
Oracle11g
IP地址 | 192.168.2.134 |
Oracle根目录 | G:\app\Administrator\product\11.2.0\dbhome_1 |
Oracle端口 | 1521 |
Oracle gateway11
IP地址 | 192.168.2.134 |
gateway11根目录 | G:\app\Administrator\product\11.2.0\tg_1 |
gateway端口 | 1522 |
SID | dg4msql |
Sqlserver2012
IP地址 | 192.168.2.134 |
数据库名 | GWNTEST |
用户名 | sa |
密码 | 123456 |
Oracle透明网关下载地址: http://download.oracle.com/otn/linux/oracle11g/R2/linux.x64_11gR2_gateways.zip
二、透明网关安装
1、解压文件,运行setup.exe 安装
2、指定安装目录,此处忘记保存安装时图片,随便从网上找了一个。安装目录为 G:\app\Administrator\product\11.2.0\tg_1
与ORACLE根目录保持一致。(网上也有安装在不同目录下成功的案例,未进行测试)。
3、选择需安装的组件
4、填写 sql server 数据库信息
5、安装
6、安装完成后,会弹出配置监听界面,可以此时进行配置,也可以取消后续手工配置。我是在此时进行配置的,但后面测试出现问题,又将配置的监听全部删除重建。
点击下一步按照正常的添加监听的步骤操作即可,在此配置的网关的监听端口为1522。
配置完成监听之后,显示安装完成。
三、配置信息
1、安装完Gateway软件后,在ORACLE_HOME目录(G:\app\Administrator\product\11.2.0\tg_1)下有一个dg4msql的目录,这就是Gateway软件的目录了。ORACLE_HOME\dg4msql\admin\initdg4msql.ora目录下有一个initdg4msql.ora的文件。该文件是Gateway的初始参数文件,描述连接的是哪个SQL Server数据库。该文件的格式是initSID.ora,这里的SID在后面需要用到,系统默认的是dg4msql,本次测试采用默认名称,未做修改。内容如下:
# 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= 192.168.2.134/GWNTEST/master --前面配置sql server数据库信息后根据信息自动生成(测试后会更改)
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
只要修改HS_FDS_CONNECT_INFO参数即可。格式为 [hostname:port]/serverinstance/databasename,其中hostname是机器名称或IP,PORT是SQL Server的端口号,SQL Server2014默认为1433,serverinstance是SQL Server的实例名,可以为空。Databasename是SQL Server的数据库名。因为在安装过程配置了sql server数据库相关信息,所以此处已自动配置。
2、透明网关层的监听配置文件: G:\app\Administrator\product\11.2.0\tg_1\NETWORK\ADMIN\listener.ora
这里PROGRAM指定应用程序名称,因为实例配置文件在 tg_1\dg4msql\admin\initdg4msql.ora,所以PROGRAM不能改变, SID_NAME就是前面initSID.ora文件名里指定的SID,这里就是dg4msql。
# listener.ora Network Configuration File: G:\app\Administrator\product\11.2.0\tg_1\network\admin\listener.ora # Generated by Oracle configuration tools. SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = GWNTEST) (PROGRAM = dg4msql) (SID_NAME = dg4msql) (ORACLE_HOME = G:\app\Administrator\product\11.2.0\tg_1) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = JAC-20180322QPJ)(PORT = 1522)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1522)) ) ) ADR_BASE_LISTENER = G:\app\Administrator\product\11.2.0\tg_1
3、启动Gateway监听
lsnrctl stop 关闭监听
lsnrctl start 启动监听
启动监听失败。将配置的Gateway监听信息全部删除重建一个监听,名称Listener,端口1522.
重新执行 lsnrctl start ,监听启动成功
4、ORACLE 配置TNS
目录:G:\app\Administrator\product\11.2.0\dbhome_1\network\admin\tnsnames.ora
GWNTEST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.134)(PORT = 1522))
(CONNECT_DATA =
(SID = GWNTEST)--(测试后会更改)
)
(HS = OK)
)
5、创建database link
create database link SQLSERVER_TEST connect to SA identified by "123456" using '192.168.2.134/GWNTEST';
6、测试
select * from test@SQLSERVER_TEST;
访问失败,报错
[Err] ORA-28545: 连接代理时 Net8 诊断到错误
Unable to retrieve text of NETWORK/NCR message 65535
经查询发现,oracle中的tnsnames.ora文件配置有问题,增加的配置信息中,SID写成了SQL Server的SID名称,应该继续与前面initSID.ora文件名中的SID保持一致,即dg4msql。更改后如下:
GWNTEST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.134)(PORT = 1522)) (CONNECT_DATA = (SID = dg4msql) ) (HS = OK) )此时再次执行
select * from test@SQLSERVER_TEST;仍报错
查询后发现是Gateway的初始参数文件中配置有问题。将文件中内容改成
HS_FDS_CONNECT_INFO= 192.168.2.134:1433/GWNTEST/master
或者
HS_FDS_CONNECT_INFO= 192.168.2.134,1433/GWNTEST/master
均无法成功,报同样错误。后参考文件,按照大神们的指示,改成如下:
HS_FDS_CONNECT_INFO="192.168.2.134;database=master"
再次执行语句,测试成功。
参考网址:
https://blog.csdn.net/dragoo1/article/details/8528852
https://www.cnblogs.com/xqzt/p/5688659.html
http://www.x4c70.com/sablogx2/?action=show&id=129
http://www.itpub.net/thread-1623512-1-1.html
https://bbs.csdn.net/topics/350203534