oracle 透明网关,oracle到sql server的dblink

19c的库用11204的透明网关也可以的
案例:
19.10的oracle——sql server 2008r2(windows server 2008)

Oracle 11g透明网关连接Sqlserver

oracle 透明网关是oracle连接异构数据库提供的一种技术。通过Gateway,可以在Oracle里透明的访问其他不同的数据库,如SQL Server, DB2, Sybase等等,就像远程Oracle数据库一样。配置后的sql查询的处理流程,如下:
在这里插入图片描述

一、环境

平台 数据库 IP地址
Redhat 6.6 Oracle 11.2.0.4 155.155.154.154
Win2008 MSSQL 2008 172.16.20.217

二、 oracle透明网关配置

1. 下载p13390677_112040_MSWIN-x86-64_5of7.zip,在win2008上安装gateways
在这里插入图片描述
在这里插入图片描述

注:GATEWAY_HOME=C:product11.2.0 g_1

2. 配置透明网关

①配置Gateway的初始参数文件
在C:product11.2.0 g_1dg4msqladmin目录下,默认有一个initdg4msql.ora,此文件命名格式为:init.ora,可以使用initdg4msql.ora默认参数文件,也可以自己创建。
这里我们创建一个initzgps.ora参数文件,内容如下:
语句:[hostname:port]/serverinstance/databasename
成功案例:
HS_FDS_CONNECT_INFO=[10.211.55.7]//MSSQLSERVER/ABC
# 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=172.16.20.217:1433//HINAMIIS_Domain 如果报错就写:[172.16.20.217]/实例名/HINAMIIS_Domain
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER

②配置Gateway的网络监听文件C:product11.2.0 g_1NETWORKADMINlistener.ora
添加如下内容:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = HINAMIIS_Domain) #此处为配置文件SID,要与前面创建的init HINAMIIS_Domain.ora中的名字对应
(ORACLE_HOME = C:product11.2.0 g_1)
(PROGRAM = dg4msql) #此处为配置文件目录名称,都为dg4msql,不需变更
)
)

③重启透明网关监听器
点击C:product11.2.0 g_1BINLSNRCTL.EXE,进入下列界面:

3. Oracle服务器配置tnsname

conn_mssql =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.20.217)(PORT = 1521))
)
(CONNECT_DATA =
(SID = dg4msql)
)
(HS = OK)
)

4. 建立DB link

create public database link pacs connect to sa identified by “######” using ‘conn_mssql’;

5. 测试(注意,oracle到sql server,where的列名要"")

select * from BodyPort@pacs;
SELECT * FROM CIS_OPERATION_INFO@CISDB_LINK where “operation_id”=1;

容易碰到的问题

1.监听起不来
同时装了client
监听默认去连client那边了
设置windows里的TNS_ADMIN=C:product11.2.0 g_1
etworkadmin

2.监听起来,但是dblink还是不行
ORA-28545
ORA-02063
在这里插入图片描述

同时装了client
其他不变,黄底红字部分写成完整路径!!!

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = HINAMIIS_Domain) #此处为配置文件SID,要与前面创建的init HINAMIIS_Domain.ora中的名字对应
(ORACLE_HOME = C:product11.2.0 g_1)
(PROGRAM = dg4msql) #此处为配置文件目录名称,都为dg4msql,不需变更
)
)