`

10g透明网关访问sqlserver

阅读更多
10g透明网关访问sqlserver
老话题了。
最近一个项目用到了透明网关,这里把配置过程简单记录下来,供大家参考。

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 dblink_test02 connect to hzzf identified by "jsxxxgxt" using '';

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

分享到:
评论

相关推荐

    oracle 11g透明网关查询sqlserver数据库

    oracle 11g 设置透明网关,可以查询sqlserver数据库中的数据

    oracle10g透明网关连接SqlServer2008

    - 在A机器的Oracle数据库环境中,更新其`tnsnames.ora`文件,添加对B机器上透明网关的引用,以便从Oracle数据库访问SQL Server。 6. **测试连接**: - 通过SQL查询或其他数据库工具从A机器尝试连接到B机器上的SQL...

    oracle10g或11g通过dblink访问sql server数据库

    本文档详细介绍了如何在Oracle 10g或11g环境中使用DBLink来访问SQL Server数据库的方法。这种方法对于那些习惯于使用Oracle进行数据库操作的开发人员来说尤其有用,因为它提供了一种在不同类型的数据库之间无缝切换...

    安装、配置Oracle11g透明网关连接Sqlserver2005数据库

    ### 安装与配置Oracle 11g透明网关连接SQL Server 2005数据库 #### 一、概述 ...通过以上步骤,您可以顺利完成Oracle 11g透明网关的安装与配置,进而实现与SQL Server 2005数据库之间的透明数据访问。

    Oracle10g数据库透明网关连接sqlserver2005配置说明文档

    Oracle 10g 透明网关连接到 SQL Server 2005 是一项技术,它允许用户通过 Oracle 数据库访问 SQL Server 数据库,无需编写特定的接口或转换代码。这项技术提高了数据集成的效率和便利性,使得在Oracle环境中可以直接...

    Oracle+10g+数据库配置透明网关访问MS+SQLSERVER[整理].pdf

    Oracle 10g数据库透明网关访问MS SQL Server是一种技术,允许Oracle数据库通过透明的方式与Microsoft SQL Server数据库进行通信和数据交互。这种配置允许用户在Oracle环境中查询和操作SQL Server的数据,无需了解...

    Oracle 10g + SQL SERVER 2000 透明网关设置

    Oracle 10g 透明网关设置用于与 SQL SERVER 2000 数据库的集成,使得用户可以在 Oracle 环境中直接访问 SQL SERVER 的数据,无需了解底层的网络和数据库细节。以下是对该设置过程的详细说明: 首先,确保在安装 ...

    Oracle10g对SqlServer2000的透明网关安装

    Oracle10g对SQL Server 2000的透明网关安装是将Oracle数据库系统与微软的SQL Server数据库进行互操作的一种方式,使得Oracle可以透明地访问SQL Server的数据,就像它们都在同一个数据库系统内一样。这种技术主要适用...

    Oracle 10G数据库与Sql Server数据的透明网关连接配置

    Oracle 10G数据库与SQL Server数据的透明网关连接配置是实现两个不同数据库系统间无缝交互的重要技术。透明网关允许用户在Oracle环境中直接执行SQL Server的查询,而无需了解底层数据存储的具体位置或格式。以下将...

    Oracle 10g连接sqlserver2000操作指南

    总的来说,Oracle 10g通过透明网关技术实现与SQL Server 2000的互连,提供了跨数据库平台的数据访问能力,这对于多数据库环境的数据整合和迁移工作至关重要。正确配置后,用户可以在Oracle环境中透明地访问和操作SQL...

    oracle通过odbc建立dblink访问sqlserver数据库

    以下将详细介绍如何通过ODBC方式配置Oracle 10g和11g以访问SQLServer数据库的具体步骤: ##### 1. 配置Oracle服务器系统的ODBC 首先需要确保Oracle服务器上已经正确安装了ODBC驱动,并且该驱动支持目标SQLServer...

    ORACLE_11G透明网关访问SQL2008R2.doc

    数据库版本:SQL Server 2008 R2 64位 和 win64_11gR2_database及相应的透明网关版本:win64_11gR2_gateways。 其中Oracle Database 11g 安装在一台电脑,另一台安装 SQL Server 2008 R2 64位和第三台安装win64_11gR...

    SQLServer2008R2与Oracle11gR2互连

    本文将详细介绍如何通过配置Linked Server以及使用Oracle的透明网关(Oracle Gateway for Microsoft SQL Server, 简称TG4MS)来实现SQLServer2008 R2与Oracle11g R2之间的互连。 #### 2. 环境信息 - **SQLServer ...

    Oracle 10G 透明网关的配置

    通过上述步骤,我们可以成功配置Oracle 10G透明网关,使其能够连接到同一台机器上的SQL Server数据库。这一配置对于实现异构数据库之间的数据交换至关重要,有助于提高数据管理的灵活性和效率。

Global site tag (gtag.js) - Google Analytics