通过 Oracle GateWays,访问 SQLServer 数据库

Oracle GateWays(透明网关)是Oracle连接异构数据库提供的一种技术。通过Gateways,可以在Oracle里透明的访问其他不同的数据库,如SQL Server, DB2, Sybase等等,就像远程Oracle数据库一样。

一、下载 Oracle GateWays

下载地址:https://edelivery.oracle.com/osdc/faces/SoftwareDelivery

通过 Oracle GateWay,访问 SQLServer 数据库

通过 Oracle GateWay,访问 SQLServer 数据库

二、安装

通过 Oracle GateWay,访问 SQLServer 数据库

这里分别是主机名(IP地址)、实例名(可不填)、数据库名。这三个可填可不填,后面可以在文件里修改。

通过 Oracle GateWay,访问 SQLServer 数据库

三、修改配置文件

1、修改文件 C:\app\Administrator\product\11.2.0\dbhome_1\dg4msql\admin\initdg4msql.ora(该文件命名规则是:init+ID.ora。一般默认的就可以,打开文件将里面的IP地址和数据库名进行修改,如果安装的时候没有填写错误,这一步可以省略),内容如下:

HS_FDS_CONNECT_INFO=[192.168.79.119]:1433//JZU9CDB
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER

2、修改文件 C:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora,增加以下内容:

    (SID_DESC =
      (SID_NAME = dg4msql)
      (ORACLE_HOME = C:\app\Administrator\product\11.2.0\dbhome_1)
      (PROGRAM = dg4msql)
    )

通过 Oracle GateWay,访问 SQLServer 数据库

3、修改文件 C:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora,增加以下内容:

DG4MSQL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521 ))
    (CONNECT_DATA = (SID = dg4msql))
    (HS = OK)
  )

通过 Oracle GateWay,访问 SQLServer 数据库

4、重启服务 OracleOraDb11g_home1TNSListener、OracleServiceORCL

通过 Oracle GateWay,访问 SQLServer 数据库

5、在 plsql 中创建 dblink 测试

SELECT DB_LINK, USERNAME, HOST FROM USER_DB_LINKS

create database link MA_TEST connect to "sa" identified by "123456" using 'dg4msql';

SELECT * FROM CA_StdWorkingHours@MA_TEST

四、注意事项

Oracle使用dblink查询时报fetch out of sequence异常:

实测用navicat执行的时候报了这个问题,用plsql查询一点问题没有,用mybatis在程序中使用dblink也并没有报错。不知道大家有没有碰到一样的问题,遇到了不要直接去怀疑自己的配置是否有问题,也可能是可视化工具的问题。