Oracle 11g通过透明网关建立 dblink连接Sql Server 2008

作者简介:吴建,现就职于北京海天起点技术股份有限公司,具有多年的公安、政府、金融行业oracle数据库维护经验,致力于帮助客户解决生产环境出现的各种问题。
Oracle透明网关是oracle连接异构数据库提供的一种技术。通过Gateway,可以在Oracle里透明的访问其他不同的数据库,如SQL Server, DB2, Sybase等等,就像远程Oracle数据库一样。

实验环境

linux服务器oracle数据库环境

操作系统:centos 6.9 64bit

IP地址:192.168.234.3

数据库版本:oracle 11.2.0.4 64bit

ORACLE_HOME: /u01/app/oracle/product/11.2.0/db_1

监听端口:1521

window服务器oracle透明网关环境

操作系统:windows 2008 R2

IP地址:192.168.234.10

透明网关版本:Oracle gateway 11.2.0.4 64bit

Gateway11安装目录:C:\product\11.2.0\tg_2

监听端口:1521

SID:sql2008

Windows端Sql Server 2008 环境

操作系统:windows 2008 R2

IP地址:192.168.234.10

数据库版本:Microsoft Sql Server 2008 R2

数据库实例名:MSSQLSERVER

数据库名:sql2008test

监听端口:1433

用户名:sa

密码:kgdvfhp@41

oracle透明网关配置

gateway安装

解压p13390677_112040_MSWIN-x86-64_5of7.zip,运行setup安装即可,这里我们将透明网关和SQLServer数据库安在了一台服务器上







根据自己的实际情况填写SQLSERVERS数据库主机名、实例名称、数据库名称。


安装完后,会弹出配置监听界面,因为我们要手工配置,点击取消即可。

安装完Gateway软件后,在ORACLE_HOME目录(C:\product\11.2.0\tg_2)下有一下dg4msql的目录,这就是Gateway软件的目录了。

透明网关层配置的SID信息,指明要访问的MSSQL数据库

在C:\product\11.2.0\tg_2\dg4msql\admin目录下有一个initdg4msql.ora的文件。该文件是Gateway的初始参数文件,描述连接的是哪个SQL Server数据库。该文件的格式是initSID.ora,这里的SID在后面需要用到,系统默认的是dg4msql,一般情况这样就可以了。我们这里改名,如使用sql2008作为SID,则文件名变成initsql2008.ora。文件内容如下


查看HS_FDS_CONNECT_INFO参数,格式是:[hostname:port]//serverinstance/databasename,其中hostname是机器名称或IP,PORT是SQL Server的端口号,SQL Server2008默认为1433.serverinstance是SQL Server的实例名,。Databasename是SQL Server的数据库名。因为我们在安装过程中指定了主机名、实例名和数据库名,这里已经有信息了。

安装透明网关是默认生成的格式是:[hostname]/serverinstance/databasename需要修改为[hostname]//serverinstance/databasename。不然dblink连接是报错

ERROR:

ORA-02050: transaction 9.27.912 rolled back, some remote DBs may be in-doubt

ORA-28500: connection from ORACLE to a non-Oracle system returned this message:

ORA-02063: preceding line from SQLLINK

透明网关层配置监听器,处理oracle的查询请求

透明网关层的监听配置文件:

C: \product\11.2.0\tg_1\NETWORK\ADMIN\listener.ora


这里PROGRAM指定应用程序名称,因为实例配置文件在 C:\product\11.2.0\tg_1\dg4msql,所以PROGRAM不能改变, SID_NAME就是前面配置的sql2008, GLOBAL_DBNAME为监听的服务名。

查看监听状态lsnrctl status


Oracle服务器配置tns

在需要建立dblink的Oracle数据库所在服务器,配置/u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora

SERVICE_NAME为透明网关监听上的服务名。与一般配置不同的就是(HS=OK)这句,这句指定是外部程序而不是Oracle数据库实例。必须这句不然连接dblink时报错

建立DB link并查询

 

 

 

未经允许不得转载:Oracle一体机用户组 » Oracle 11g通过透明网关建立 dblink连接Sql Server 2008

相关推荐