一、环境如下 :
ORACLE 10g 安装在 :192.168.200.231的window2003 server
(版本: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 )
SqlServer 2000安装在 :192.168.200.208的window2003 server
Oracle 11g透明网关安装在 SqlServer 2000数据库机器上
二、下载透明网关 (GATEWAY)
透明网管是一个单独组件,可以到 oracle官方网站下载
http://www.oracle.com/technology/software/products/database/oracle10g/htdocs/10201winsoft.html
找到秀明网关版本:
Oracle Database Gateways 11g Release 1 (11.1.0.6.0) for Microsoft Windows (32-bit)
三、安装透明网关
将透明网关安装在 sqlserver服务器上,点击setup.exe,启动安装界面,安装 oracle transparent gateway for microsoft sql server;
下一步,输入 sqlserver地址和 sqlserver 数据库名,这里可以输入正确的,也可以随便输入,或者留空,现安装完成后再配置。
安装完后,会弹出配置监听界面,点击取消即可。
整个安装过程类似安装 DB或 client。
四、配置透明网关参数文件
找到透明网关路径: D:/oracle/product/10.2.0/tg_1/tg4msql/admin
安装透明网关时会生成一个默认参数文件: inittg4msql.ora(这种类型的文件命名规则 init+sid.ora,这里的 SID会在 tnsname.ora和 LISTENER.ORA中用到,通常 SID与 SQL SERVER数据库名一致,如果需要连接多个 SQL SERVER数据库,则需要在这个目录下建立多个文件。)修改这个文件之后,不用重起数据库,也不用重起监听,可以理解为 oracle的参数文件,现在编辑参数文件:
# 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=" 192.168.200.208:1433// PUBS" HS_FDS_TRACE_LEVEL=OFF HS_FDS_RECOVERY_ACCOUNT=RECOVER HS_FDS_RECOVERY_PWD=RECOVER |
HS_FDS_CONNECT_INFO设置格式为:
HS_FDS_CONNECT_INFO=<hostname>:<port>/<server alias>/<database>
五、透明网关服务器上配置监听
找到listener文件所在路径
D:/oracle/product/10.2.0/tg_1/NETWORK/ADMIN/listener.ora ,这些配置与DB配置类似
# listener.ora Network Configuration File: d:\oracle\product\10.2.0\tg_1\network\admin\listener.ora # Generated by Oracle configuration tools. SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = d:\oracle\product\10.2.0\tg_1) (PROGRAM = extproc) ) (SID_DESC= (SID_NAME = PUBS) (ORACLE_HOME = d:\oracle\product\10.2.0\tg_1) (PROGRAM = tg4msql) ) ) |
SID_Name与参数文件的名称 initPUBS.ora相对应,且 PROGRAMN要为 tg4msql
六、启动监听
启动监听和 DB配置一样,
在CMD命令符,输入 lsnrctl start
C:\Documents and Settings\Administrator>lsnrctl start LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 13-9 月 -2011 09:50:16 Copyright (c) 1991, 2005, Oracle. All rights reserved. 启动 tnslsnr: 请稍候 ... TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production 系统参数文件为 d:\oracle\product\10.2.0\tg_1\network\admin\listener.ora 写入 d:\oracle\product\10.2.0\tg_1\network\log\listener.log 的日志信息 监听 : (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=bsgc208)(PORT=1521))) 正在连接到 (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521)) LISTENER 的 STATUS ------------------------ 别名 LISTENER 版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production 启动日期 13-9 月 -2011 09:51:15 正常运行时间 0 天 0 小时 0 分 6 秒 跟踪级别 off 安全性 ON: Local OS Authentication SNMP OFF 监听程序参数文件 d:\oracle\product\10.2.0\tg_1\network\admin\listener.ora 监听程序日志文件 d:\oracle\product\10.2.0\tg_1\network\log\listener.log 监听端点概要 ... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=bsgc208)(PORT=1521))) 服务摘要 .. 服务 "PLSExtProc" 包含 1 个例程。 例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序 ... 服务 "PUBS" 包含 1 个例程。 例程 "PUBS", 状态 UNKNOWN, 包含此服务的 1 个处理程序 ... 命令执行成功 |
可以看到PUBS注册了静态监听服务
在服务生成 OracleOraTg10g_home1TNSListener的服务( 如果透明网关在 DB数据库机器上,则有 N多个 Listener服务,可以停止其它 Listener,直接在透明 Listener即可 )
查看Listener状态:
C:\Documents and Settings\Administrator>lsnrctl status LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 13-9 月 -2011 09:49:52 Copyright (c) 1991, 2005, Oracle. All rights reserved. 正在连接到 (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521)) LISTENER 的 STATUS ------------------------ 别名 LISTENER 版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production 启动日期 05-9 月 -2011 09:49:23 正常运行时间 8 天 0 小时 0 分 32 秒 跟踪级别 off 安全性 ON: Local OS Authentication SNMP OFF 监听程序参数文件 d:\oracle\product\10.2.0\tg_1\network\admin\listener.ora 监听程序日志文件 d:\oracle\product\10.2.0\tg_1\network\log\listener.log 监听端点概要 ... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=bsgc208)(PORT=1521))) 服务摘要 .. 服务 "PLSExtProc" 包含 1 个例程。 例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序 ... 服务 "PUBS" 包含 1 个例程。 例程 "PUBS", 状态 UNKNOWN, 包含此服务的 1 个处理程序 ... 命令执行成功 |
七、配置tnsname.ora
在Oracle DB 机器上D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\目录下配置 tnsnames.ora文件,增加如下信息:
PUBS = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.200.208)(PORT = 1521)) ) (CONNECT_DATA = (SID = PUBS) ) (HS = ok) ) |
注意HS=OK,这主要由于是用于 Oracle server调用异构服务器进行处理必须的。
现在使用tnsping测试:
C:\Documents and Settings\Administrator>tnsping PUBS TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 13-9 月 -2011 09:57:17 Copyright (c) 1997, 2005, Oracle. All rights reserved. 已使用的参数文件 : D:\oracle\product\10.2.0\db_1\network\admin\sqlnet.ora 已使用 TNSNAMES 适配器来解析别名 Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.200.208)(PORT = 1521))) (CONNECT_DATA = (SID = PUBS)) (HS = ok)) OK (30 毫秒) |
八、创建访问 SQL SERVER访问账号
由于使用DBLINK不能为空密码,为了使用数据安全性,在 192.168.200.208的 MS SQLServer数据库服务器创建一个登录账号为 oradba,密码为 a1b2c3,并设置权限访问 PUBS数据库权限。
九、Oralce 创建 DBLINK
CREATE PUBLIC DATABASE LINK "PUBS" CONNECT TO "oradba" IDENTIFIED BY a1b2c3 USING '(DESCRIPTION = (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.200.208)(PORT=1521)) (CONNECT_DATA=(SID=PUBS) ) (HS = ok))'; |
注意DESCRIPTION 的HS 与tnsname.ora 中的HS=OK 。
10、测试连接并使用SQL
SQL> select * from dual@pubs; D - X |
连接正常,配置完成。
总结:
在进行配置透明网关访问SQL SERVER时,整个过程的 SID(DBLINK命名随意) 最好命名与 SQL SERVER数据库一致,如PUBS ,否则很容易出现以下错误信息:
ORA-28545: error diagnosed by Net8 when connecting to an agent
Unable to retrieve text of NETWORK/NCR message 65535
ORA-02063: preceding 2 lines from PUBS
另外在 DBLINK访问用户账号最好使用小写且使用 ””双引号,如” oradba” ,这样可以 SQL SERVER2000和SQL SERVER2005访问,另外就是 ORACLE 方便访问SQL SERVER 的SQL程序。