首页 » ORACLE 9i-23ai » 安装透明网关 for sql server

安装透明网关 for sql server

环境:windows xp
oracle 实例,与透明网关在同一台机器, oracle 实例已安装好,监听名为listener 1521端口
oracle 10g\oracle2sqlserver–gateways 10.2

先后顺序没有规定,不过在影响到path前后的问题,可以安装完成后手动调整,避免版本不同再出现不必要的麻烦,

一定要把oracle 实例的path放在GATEWAYS的PATH的前面。就因为这个原因浪费了我一天的时间,都没问题sqlplus 查询总是提示ora-12154 TNS: 无法处理服务名,我觉的可能就是gateway的sqlplus版本问题

oracle透明网关为独立组件,需要单独安装

1,下载个透明网关 for sqlserver, windows安装版

2,打开setup.exe,启动安装gateways界面,

3,不要忙着点下一步,其中有一步选安装项目在oracle transparent gateway for microsoft sql server 前打上对勾,再下一步中提示填写sql server 地址、数据库名称,这里你建议填写准确,也可以随便填写以后修改。

4,最后一步会弹出netca 的界面 配置透明网关的监听,(声明这是透明网关的监听),以另一个监听名,如listener1,端口不能和实例的端口冲突,如1526,全部安装完成,在windows的服务管理器中可以看到多了一个服务OracleOraTg10g_home1TNSListenerLISTENER1,看清不同于实例的监听OracleOraDb10g_home1TNSListener

默认情况下,安装透明网关时会生成一个默认的参数文件:inittg4msql.ora,它的sid是tg4mssql,可以使用这个文件,也可以新建一个配置文件。本例选择新建文件

5,进入$GATEWAY_HOME\tg_1\tg4msql\admin下($GATEWAY_HOME是透明网关的安装目录)下复制一份inittg4msql.ora,重命名为initmssql.ora,当然这里的文件名命名规则init.ora,这里的配置在另一处会用到

6,——————–initmssql.ora 内容————-

HS_FDS_CONNECT_INFO="192.168.168.20;database=bjmda"
 HS_FDS_TRACE_LEVEL=OFF
 HS_FDS_RECOVERY_ACCOUNT=RECOVER
 HS_FDS_RECOVERY_PWD=RECOVER

———————-结束,不含分隔线———————-
database处就是要连接的数据库,每次只能配置一个,配置完保存完后,oracle session要退出重connect 生效。HS_FDS_CONNECT_INFO还有一种命名规则 =hostname.dbname 网上另查询
7,配置gateway监听,打开$GATEWAY_HOME\tg_1\NETWORK\ADMIN\listener.ora
追加sid描述 SID_DESC部分内容如下

 --------------------------listener.ora-------------

SID_LIST_LISTENER1 =
 (SID_LIST =
 (SID_DESC =
 (SID_NAME = PLSExtProc)
 (ORACLE_HOME = d:\oracle\product\10.2.0\tg_1)
 (PROGRAM = extproc)
 )
 (SID_DESC =
 (SID_NAME = mssql) #前面的文件名
 (ORACLE_HOME = d:\oracle\product\10.2.0\tg_1)
 (PROGRAM = tg4msql) #规定
 )
 )

LISTENER1 =
 (DESCRIPTION_LIST =
 (DESCRIPTION =
 (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.226)(PORT = 1526))
 (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
 )

)
 -------------------------------end------------------------------

8,查看透明网关状态,不是直接cmd命令行里转lsnrctl,而是用gatewayr的lsnrctl的绝对路径,可能也是lsnrctl版本问题用实例的lsnrctl无法查看gateways

C:\>D:\oracle\product\10.2.0\tg_1\BIN\LSNRCTL.EXE

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 08-4月 -2011 09:48:49

Copyright (c) 1991, 2005, Oracle. All rights reserved.

欢迎来到LSNRCTL, 请键入"help"以获得信息。

LSNRCTL> status
 正在连接到 (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
 LISTENER 的 STATUS
 ------------------------
 别名 LISTENER
 版本 TNSLSNR for 32-bit Windows: Version 10.1.0.2.0 - Production
 启动日期 08-4月 -2011 09:42:47
 正常运行时间 0 天 0 小时 6 分 4 秒
 跟踪级别 off
 安全性 ON: Local OS Authentication
 SNMP OFF
 监听程序参数文件 d:\oracle\product\10.1.0\Db_1\network\admin\listener.ora
 监听程序日志文件 d:\oracle\product\10.1.0\Db_1\network\log\listener.log
 监听端点概要...
 (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROCipc)))
 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=mashimaro)(PORT=1521)))
 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=mashimaro)(PORT=8080))(Presentation=HTTP)(Session=RAW))
 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=mashimaro)(PORT=2100))(Presentation=FTP)(Session=RAW))
 服务摘要..
 服务 "PLSExtProc" 包含 1 个例程。
 例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
 服务 "orcl" 包含 1 个例程。
 例程 "orcl", 状态 READY, 包含此服务的 1 个处理程序...
 服务 "orclXDB" 包含 1 个例程。
 例程 "orcl", 状态 READY, 包含此服务的 1 个处理程序...
 命令执行成功
 LSNRCTL> show cur
 目前的监听程序为 LISTENER
 LSNRCTL> set cur listener1
 目前的监听程序为 listener1
 LSNRCTL> status
 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.3.226)(PORT=1526)))
 LISTENER 的 STATUS
 ------------------------
 别名 LISTENER1
 版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
 启动日期 08-4月 -2011 09:41:12
 正常运行时间 0 天 0 小时 8 分 3 秒
 跟踪级别 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\listener1.log
 监听端点概要...
 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.3.226)(PORT=1526)))
 (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC0ipc)))
 服务摘要..
 服务 "MSSQL" 包含 1 个例程。
 例程 "MSSQL", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
 服务 "PLSExtProc" 包含 1 个例程。
 例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
 命令执行成功
 LSNRCTL> exit

如果以上正常表明你的透明网关安装成功了,庆祝一下,接杯水喝吧!
9,配置本地tnsnames.ora,这里会有疑惑,加在哪个network/admin/呢,实例还是gateway?涉及到一个home先后的问题,最简单的方法是开个命令行tnsping xxx;看看提示的错误信息是db_1还是tg_1,就去那个network/admin/tnsnames.ora追加以下内容,如果你把oracle 实例的path在前,就先找到db_1/network/admin/tnsnames.ora

 --------------
 mssql=
 (DESCRIPTION=
 (ADDRESS=
 (PROTOCOL=TCP)
 (HOST=192.168.3.226)
 (PORT=1526)
 )
 (CONNECT_DATA=
 (SERVICE_NAME=mssql)
 )
 (HS = OK)
 )
 ---------------

10,在ORACLE实例中建立db link

/>sqlplus system/oracle
sql>create public database link sql20 connect to sa identified by "sa" using 'mssql';

这里的mssql是第9步配置的name,用单引号,当然这里也可以省去第9步直接在create dblink里,替换 using ‘mssql’为

 using
 '(DESCRIPTION =
 (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.3.226)(PORT=1526))
 (CONNECT_DATA=(SID=mssql)
 )
 (HS = ok))';

 

基本没什么区别,如果你是曾是位程序员,应该知道,设置成配置文件总比修改代码方便。

11,测试一把

 SQL> select sysdate from dual@sql20;

SYSDATE
 --------------
 08-4月 -11

 

成功

打赏

对不起,这篇文章暂时关闭评论。