10g透明网关访问sqlserver
2008-05-05 22:11
501 查看
oracle的透明网关是oracle直接访问异构数据库的利器。在9i中,透明网关是包含在数据库安装程序中的,在安装数据库软件过程中可以选择;10g中,oracle把透明网关独立出来,需要单独下载安装。 本文主要讨论在oracle下如何配置透明网关去访问sqlserver数据库。在11g之前,for sqlserver的透明网关只能安装在windows操作系统上,从11g开始,for sqlserver的透明网关也可以安装在linux/unix系统中。 本文讨论的是10g下的透明网关,所以,首先要准备一个安装有windows操作系统的服务器。 在本例中,涉及到三个服务器: ORACLE DB服务器: OS: LINUX AS 4 + ORACLE 10203 IP: 10.10.10.1 透明网关服务器: OS: WINDOWS XP SP2 IP: 10.10.10.2 SQLSERVER服务器1: OS: WINDOWS XP + SQLSERVER 2000 IP: 10.10.10.3 PORT: 1433 SQLSERVER服务器2: OS: WINDOWS XP + SQLSERVER 2000 IP: 10.10.10.4 PORT: 1422 如果ORACLE DB服务器操作系统是WINDOWS的话,可以把透明网关安装在ORACLE数据服务器上。 下面是详细步骤: 一、透明网关连接到一个sqlserver上 1、下载透明网关 10g下,透明网管是一个单独的组件,需要单独下载安装。 http://www.oracle.com/technology ... s/10201winsoft.html 这个安装包有200多m。 2、安装 在10.10.10.2安装透明网关: 解压后,进入目录,点击setup.exe,启动安装界面,安装oracle transparent gateway for microsoft sql server; 下一步,输入sqlserver地址和sqlserver 数据库名,这里你可以输入正确的,也可以随便输入,或者留空,我们可以安装完成后再配置。 安装完后,会弹出配置监听界面,因为我们要手工配置,点击取消即可。 3、在10.10.10.2配置透明网关参数文件 默认情况下,安装透明网关时会生成一个默认的参数文件:inittg4msql.ora,它的sid是tg4mssql,你可以使用这个文件,也可以新建一个文件。本例选择新建文件。 进入$GATEWAY_HOME/tg_1/tg4msql/admin目录我这里是:($GATEWAY_HOME是指透明网关的安装主目录) F:/oracle/product/10.2.0/tg_1/tg4msql/admin 新建一个文件:initjss.ora 这个名字随便取,但要注意格式:init<sid>.ora,把它理解为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="SERVER=10.10.10.3;DATABASE=jss" HS_FDS_TRACE_LEVEL=OFF HS_FDS_RECOVERY_ACCOUNT=RECOVER HS_FDS_RECOVERY_PWD=RECOVER HS_FDS_CONNECT_INFO的设置有多种格式,如: HS_FDS_CONNECT_INFO=server_name.db_name,但这种写法server_name不能为IP,且端口必须为默认的1433,如: HS_FDS_CONNECT_INFO=sqlserver.jss 4、在10.10.10.2配置监听 进入$GATEWAY_HOME/network/admin下,编辑listener.ora文件: 注意:下面的ORACLE_HOME实际上指的是安装透明网关的主目录,sid_name要与上一步配置的参数文件的名称相对应: SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = F:/oracle/product/10.2.0/tg_1) (PROGRAM = extproc) ) (SID_DESC= (SID_NAME=jss) (ORACLE_HOME=F:/oracle/product/10.2.0/tg_1) (PROGRAM=tg4msql) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = suk)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)) ) ) 5、启动监听 进入$GATEWAY_HOME/BIN/lsnrctl start F:/oracle/product/10.2.0/tg_1/bin/lsnrctl start C:/>F:/oracle/product/10.2.0/tg_1/bin/lsnrctl start LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 06-12月-2007 14:5 0:36 Copyright (c) 1991, 2005, Oracle. All rights reserved. 启动tnslsnr: 请稍候... Failed to open service <OracleOraTg10g_home1TNSListener>, error 1060. TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production 系统参数文件为F:/oracle/product/10.2.0/tg_1/network/admin/listener.ora 写入F:/oracle/product/10.2.0/tg_1/network/log/listener.log的日志信息 监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=suk)(PORT=1521))) 监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=//./pipe/EXTPROC0ipc))) 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=suk)(PORT=1521))) LISTENER 的 STATUS ------------------------ 别名 LISTENER 版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ ction 启动日期 06-12月-2007 14:50:38 正常运行时间 0 天 0 小时 0 分 1 秒 跟踪级别 off 安全性 ON: Local OS Authentication SNMP OFF 监听程序参数文件 F:/oracle/product/10.2.0/tg_1/network/admin/listener.o ra 监听程序日志文件 F:/oracle/product/10.2.0/tg_1/network/log/listener.log 监听端点概要... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=suk)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=//./pipe/EXTPROC0ipc))) 服务摘要.. 服务 "PLSExtProc" 包含 1 个例程。 例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 服务 "jss" 包含 1 个例程。 例程 "jss", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 命令执行成功 至此,在透明网关上的工作就算完成了。 6、在10.10.10.1上配置tnsname.ora 添加如下内容: jss= (DESCRIPTION= (ADDRESS= (PROTOCOL=TCP) (HOST=10.10.10.2) (PORT=1521) ) (CONNECT_DATA= (SID=jss)) (HS=OK) #这个很重要 ) 7、在10.10.10.1创建数据库链接 SQL> create database link dbjss connect to sa identified by "123456" using 'jss'; 8、在10.10.10.1测试连接 SQL> select * from dbo.sysobjects@dbjss; 当从oracle数据库上发出这个sql时,实际上通过tnsname.ora配置的jss信息转到10.10.10.2上,当10.10.10.2的监听监听到10.10.10.1的请求时,再次通过initjss.ora配置的HS_FDS_CONNECT_INFO信息转到sqlserver数据库上,最终把用户需要的数据返回。 如果这个sql有记录返回,说明透明网关没有问题。 oracle的透明网关向前兼容做得不好,oracle 9i数据库不能通过10g的透明网关方位sqlserver。 二、透明网关连接到多个sqlserver上,且端口非默认端口 连接非默认端口的sqlserver比较麻烦,HS_FDS_CONNECT_INFO的设置要借助sqlserver别名来解析。(如果是11g的话就比较简单,用HS_FDS_CONNECT_INFO=<hostname>:<port>/<server alias>/<database>语法即可) 1、生成sqlserver别名 生成sqlserver别名的方式有三种: 1)借助sqlserver的网络客户端配置 我本地没有sqlserver环境,这种方法不介绍了。 2)设置sqlserver别名 由于透明网关中可以读取HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSSQLServer/Client/ConnectTo下的值作为sqlserver的别名,所以可以通过更新注册表的方式为sqlserver设置别名。 在注册表的HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSSQLServer/Client下新建项ConnectTo,然后在新建的ConnectTo下新建字符串值: 在数值名称中输入你的sqlserver别名,在数值数据中输入:DBMSSOCN,10.10.10.4,1422 其中:DBMSSOCN是固定字符串,不用修改;10.10.10.4是sqlserver服务器的IP;1422为sqlserver的端口。 最简单的方法是,生成一个.reg文件,如hc.reg,包含如下内容: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSSQLServer/Client/ConnectTo] "hc"="DBMSSOCN,10.10.10.4,1422" 直接双击这个reg文件就可以把信息写入注册表中。 3)odbc 用odbc的方式其实也是通过配置odbc来为sqlserver定义别名。具体步骤是: 开始菜单->设置->控制面板->ODBC数据源,点击添加,在弹出的界面上选择[SQL Server],点击[完成],弹出在弹出界面中设定数据源名称,如hc; 点击下一步,在弹出界面中,点击[客户端配置],在弹出界面中输入服务器别名,如hc,选择TCP/IP协议,输入服务器名称:10.10.10.4;取消选择[动态决定端口],然后输入非缺省的端口号,如1422,点击确定返回到创建数据源窗口中; 选择[使用用户输入登录ID和密码的SQL Server验证],在界面的下方输入登录ID和密码; 之后一路下一步,最后点击完成,并测试数据源,如果测试成功,odbc配置就完成了。 此时,在注册表的HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSSQLServer/Client/ConnectTo就有了sqlserver别名相关信息了。 2、在10.10.10.2新创建一个参数文件inithc.ora 参数路径:F:/oracle/product/10.2.0/tg_1/tg4msql/admin 配置如下: # # HS init parameters HS_FDS_CONNECT_INFO=hc.STAT_CENTER HS_FDS_TRACE_LEVEL=OFF HS_FDS_RECOVERY_ACCOUNT=RECOVER HS_FDS_RECOVERY_PWD=RECOVER 3、在10.10.10.2监听上添加新数据库的监听 在$GATEWAY_HOME/network/admin下,编辑listener.ora文件,添加如下信息: (SID_DESC= (SID_NAME=hc) (ORACLE_HOME=F:/oracle/product/10.2.0/tg_1) (PROGRAM=tg4msql) ) 此时透明网关的listen.ora内容如下: SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = F:/oracle/product/10.2.0/tg_1) (PROGRAM = extproc) ) (SID_DESC= (SID_NAME=jss) (ORACLE_HOME=F:/oracle/product/10.2.0/tg_1) (PROGRAM=tg4msql) ) (SID_DESC= (SID_NAME=hc) (ORACLE_HOME=F:/oracle/product/10.2.0/tg_1) (PROGRAM=tg4msql) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.2)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)) ) ) 4、在10.10.10.1上配置tnsname.ora 添加如下内容: hc= (DESCRIPTION= (ADDRESS= (PROTOCOL=TCP) (HOST=10.10.10.2) (PORT=1521) ) (CONNECT_DATA= (SID=hc)) (HS=OK) ) 5、10.10.10.1上创建执行Northwind的数据库链 SQL> create database link hc connect to test identified by "123" using 'hc'; Database link created. 6、测试 SQL> select * from dbo.STAT_OrgMatch@hc where rownum=1; Org_Name Org_TradeID Org_CenterID ------------------------------ ----------- ------------ 汶川县中医医院 64 0 |
__________________ 路是人走出来的 ITPUB BLOG ITPUB空间 百度空间 |
相关文章推荐
- 10G 11GOracle 透明网关访问 sqlserver
- oracle 10g透明网关访问sqlserver的心得
- oracle 10g透明网关访问sqlserver的心得
- oracle 10g透明网关访问sqlserver的心得
- oracle 10g透明网关访问sqlserver
- oracle 10g透明网关访问sqlserver的心得
- 10g透明网关访问sqlserver
- oracle 10g透明网关访问sqlserver2000
- Oracle 10g 透明网关访问SQL Server 2008
- Oracle 10g 透明网关访问SQL Server 2008
- Oracle 10g透明网关访问SQL Server 2000之创建DB Link
- Oracle9i、10g访问Sql Server透明网关相应的配置
- oracle 10g 连接 sqlserver---透明网关
- ORACLE 10g透明网关访问SQL SERVER
- oracle 10g透明网关访问sqlserver2000
- Oracle 11g透明网关连接Sqlserver 2000(转)
- Oracle 通过透明网关访问mysql配置步骤
- Oracle中使用透明网关[gateways]数据链接到Sqlserver
- Oracle 11g透明网关连接Sqlserver 2000
- ORACLE 11G透明网关访问SQL2008R2