首页 » ORACLE » 安装透明网关 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

成功

打赏

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