安装透明网关 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
成功
上一篇: 恢复表设置为unused的字段
下一篇: oracle 安装透明网关的离奇经历
对不起,这篇文章暂时关闭评论。