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 |
注:GATEWAY_HOME=C:\product\11.2.0\tg_1
安装的时候,首先安装完动态监听后续才能配置静态监听
①配置Gateway的初始参数文件
在C:\product\11.2.0\tg_1\dg4msql\admin目录下,默认有一个initdg4msql.ora,此文件命名格式为:init<SID>.ora,可以使用initdg4msql.ora默认参数文件,也可以自己创建。
这里我们创建一个initzgps.ora参数文件,内容如下:
# 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//实例名/数据库名 HS_FDS_TRACE_LEVEL=OFF HS_FDS_RECOVERY_ACCOUNT=RECOVER HS_FDS_RECOVERY_PWD=RECOVER |
如果查询报错
ERROR at line 1:
ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
[Oracle][ODBC SQL Server Wire Protocol driver]General error. recvfrom failed:
10054 {HY000}
ORA-02063: preceding 2 lines from PACS
下面两种格式都试下
HS_FDS_CONNECT_INFO=172.16.20.217:1433//实例名/数据库名
HS_FDS_CONNECT_INFO=[172.16.20.217]/实例名/HINAMIIS_Domain
②配置Gateway的网络监听文件C:\product\11.2.0\tg_1\NETWORK\ADMIN\listener.ora
添加如下内容:
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = HINAMIIS_Domain) #此处为配置文件SID,要与前面创建的init HINAMIIS_Domain.ora中的名字对应 (ORACLE_HOME = C:\product\11.2.0\tg_1) (PROGRAM = dg4msql) #此处为配置文件目录名称,都为dg4msql,不需变更 ) ) 如果报这个错ORA-28545 文档 ID 1129415.1 可以尝试把PROGRAM这一栏写上全路径试试 |
③重启透明网关监听器
点击C:\product\11.2.0\tg_1\BIN\LSNRCTL.EXE,进入下列界面:
配置完后,在Oracle端中的tnsnames文件中添加连接串:
conn_mssql = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.20.217)(PORT = 1521)) ) (CONNECT_DATA = (SID = HINAMIIS_Domain) ) (HS = OK) ) |
在oracle数据库中通过之前编辑的连接串,创建连接SQL server的dblink,然后测试是否成功。
create public database link pacs connect to sa identified by "######" using 'conn_mssql'; |
|