Oracle 11g透明网关连接Sqlserver

一、环境信息

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 安装

Oracle 11g透明网关连接Sqlserver_第1张图片

2、指定安装目录,此处忘记保存安装时图片,随便从网上找了一个。安装目录为 G:\app\Administrator\product\11.2.0\tg_1

与ORACLE根目录保持一致。(网上也有安装在不同目录下成功的案例,未进行测试)。

Oracle 11g透明网关连接Sqlserver_第2张图片


3、选择需安装的组件

Oracle 11g透明网关连接Sqlserver_第3张图片

4、填写 sql server 数据库信息

Oracle 11g透明网关连接Sqlserver_第4张图片

5、安装

Oracle 11g透明网关连接Sqlserver_第5张图片

Oracle 11g透明网关连接Sqlserver_第6张图片

Oracle 11g透明网关连接Sqlserver_第7张图片


6、安装完成后,会弹出配置监听界面,可以此时进行配置,也可以取消后续手工配置。我是在此时进行配置的,但后面测试出现问题,又将配置的监听全部删除重建。

Oracle 11g透明网关连接Sqlserver_第8张图片

点击下一步按照正常的添加监听的步骤操作即可,在此配置的网关的监听端口为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 关闭监听

Oracle 11g透明网关连接Sqlserver_第9张图片

lsnrctl start 启动监听

Oracle 11g透明网关连接Sqlserver_第10张图片

Oracle 11g透明网关连接Sqlserver_第11张图片

启动监听失败。将配置的Gateway监听信息全部删除重建一个监听,名称Listener,端口1522.

重新执行 lsnrctl start ,监听启动成功

Oracle 11g透明网关连接Sqlserver_第12张图片

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;
仍报错

Oracle 11g透明网关连接Sqlserver_第13张图片

查询后发现是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

你可能感兴趣的:(数据库)