ORACLE 要连接到MSSQL SERVER库,需要安装ORACLE的透明网关,ORACLE透明网关for MSSQL的产品名称为Oracle Transparent Gateway for SQL Server。使用该产品后,对于Oracle数据库而言,屏蔽了SQL Server的异构性,可直接在Oracle数据库中对SQL Server数据进行大多数操作。 详细步骤如下:
1.环境要求
2.安装透明网关
Oracle透明网关和Oracle数据库可以不在同一台机器上,执行安装程序中的setup.exe,出现欢迎窗口。下面安装步骤如无特别说明,均点击“下一步”。
从产品组件中选择Oracle Transparent Gatewey for Microsoft SQL Server 9.2.1.0(如图)。
以上随便填入值,反正之后还要编辑的。(ckts tsshv600) 3.安装透明网关补丁
如果数据库是oracle 9.2.0.1,此补丁不需要安装,如果你升级了数据库9.2.0.8,那么透明网关需要升级到相应的版本。否则会出现以下错误: SQL> select * from pre_ems3_head@test; select * from pre_ems3_head@test *
ERROR 位于第 1 行:
ORA-02068: 以下严重错误源于TEST
ORA-28511: 丢失与使用 SID=%s 的多机种远程代理程序的 RPC 连接 ORA-28509: 无法创建与非 Oracle 系统的连接 下载补丁文件p4547809_92080_WINNT,安装步骤:
3.透明网关配置
1)编辑D:\\oracle\\ora92\\tg4msql\\admin\\inittg4msql.ora文件名为initMSSQL.ora,内容如下: # This is a sample agent init file that contains the HS parameters that are # needed for the Transparent Gateway for SQL Server #
# HS init parameters #
HS_FDS_CONNECT_INFO=\BASE=MSSQL\HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER HS_FDS_RECOVERY_PWD=RECOVER
2)编辑D:\\oracle\\ora92\\network\\admin\\listener.ora内容,加上蓝色字体部分,保存后,重启listener,一定要重启。
# LISTENER.ORA Network Configuration File: d:\\oracle\\ora92\\NETWORK\\ADMIN\\listener.ora # Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.242)(PORT = 1521)) )
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)) ) ) )
SID_LIST_LISTENER = (SID_LIST = (SID_DESC =
(SID_NAME = PLSExtProc) (ORACLE_HOME = d:\\oracle\\ora92) (PROGRAM = extproc) )
(SID_DESC =
(SID_NAME = MSSQL)
(ORACLE_HOME = D:\\oracle\\ora92) (PROGRAM = tg4msql) ) )
到此ORACLE透明网关已经配置完成,如果想连接,只需要再配一下TNSNAMES.ORA文件,就像连接ORACLE那样连接就行,可以从其它服务器上连接透明网关服务器,也可以在透明网关服务器连接。
编辑D:\\oracle\\ora92\\network\\admin\\tnsnames.ora内容,如下
ora_to_sql = (DESCRIPTION = (ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.242)(PORT = 1521)) )
(CONNECT_DATA = (SID = MSSQL) ) (HS=OK) )
注意:以上红字为MSSQL SERVER 数据库名,三处要保持一样;
总结:仅此本人对ORACLE透明网关的理解,它可以将MSSQL SERVER库封装成ORACLE库,对用户透明,用户通过透明网关操作MSSQLSERVER,就和操作ORACLE库一样。