• 【Oracle】Oracle透明网关访问MSSQLServer


     

             Oracle 数据库的透明网关 ( transparent gateway )是这样的一个接口:通过它,我们可以 sqlplus 操纵其他数据库,如 MS SQLServer  sybase  infomix 等,实现数据库的异构服务。在实现 Oracle 10g通过透明网关访问MSSQLServer时,可以使用 Oracle 10gOracle11g 透明网关。透明网关可以安装在 Oracle数据库机器上或者MS SQLServer数据库机器上,也可以安装在第三台机器上。

    一、环境如下 :
    ORACLE 10g 
    安装在 :192.168.200.231window2003 server
    (版本: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 
    SqlServer 2000
    安装在 :192.168.200.208window2003 server
    Oracle 11g
    透明网关安装在 SqlServer 2000数据库机器上
    二、下载透明网关 (GATEWAY)
    透明网管是一个单独组件,可以到 oracle官方网站下载 
    http://www.oracle.com/technology/software/products/database/oracle10g/htdocs/10201winsoft.html

    找到秀明网关版本: 
    Oracle Database Gateways 11g Release 1 (11.1.0.6.0) for Microsoft Windows (32-bit)

    三、安装透明网关 
    将透明网关安装在 sqlserver服务器上,点击setup.exe,启动安装界面,安装 oracle transparent gateway for microsoft sql server

    下一步,输入 sqlserver地址和 sqlserver 数据库名,这里可以输入正确的,也可以随便输入,或者留空,现安装完成后再配置。

    安装完后,会弹出配置监听界面,点击取消即可。

    整个安装过程类似安装 DB client

    四、配置透明网关参数文件

    找到透明网关路径: D:/oracle/product/10.2.0/tg_1/tg4msql/admin
    安装透明网关时会生成一个默认参数文件: inittg4msql.ora(这种类型的文件命名规则 init+sid.ora,这里的 SID会在 tnsname.ora LISTENER.ORA中用到,通常 SID SQL SERVER数据库名一致,如果需要连接多个 SQL SERVER数据库,则需要在这个目录下建立多个文件。)修改这个文件之后,不用重起数据库,也不用重起监听,可以理解为 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=" 192.168.200.208:1433// PUBS"
    HS_FDS_TRACE_LEVEL=OFF
    HS_FDS_RECOVERY_ACCOUNT=RECOVER
    HS_FDS_RECOVERY_PWD=RECOVER
     

    HS_FDS_CONNECT_INFO设置格式为:
    HS_FDS_CONNECT_INFO=<hostname>:<port>/<server alias>/<database>

    五、透明网关服务器上配置监听

    找到listener文件所在路径

    D:/oracle/product/10.2.0/tg_1/NETWORK/ADMIN/listener.ora ,这些配置与DB配置类似

    # listener.ora Network Configuration File: d:oracleproduct10.2.0 g_1 etworkadminlistener.ora
    # Generated by Oracle configuration tools.
     
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = PLSExtProc)
          (ORACLE_HOME = d:oracleproduct10.2.0 g_1)
          (PROGRAM = extproc)
        )
        (SID_DESC=
             (SID_NAME = PUBS)
             (ORACLE_HOME = d:oracleproduct10.2.0 g_1)
             (PROGRAM = tg4msql)
        )
      )
     

     

    SID_Name与参数文件的名称 initPUBS.ora相对应,且 PROGRAMN要为 tg4msql
    六、启动监听 
    启动监听和 DB配置一样, 
    CMD命令符,输入 lsnrctl start

    C:Documents and SettingsAdministrator>lsnrctl start
    LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 13-9  -2011 09:50:16
    Copyright (c) 1991, 2005, Oracle.  All rights reserved.
    启动 tnslsnr: 请稍候 ...
    TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
    系统参数文件为 d:oracleproduct10.2.0 g_1 etworkadminlistener.ora
    写入 d:oracleproduct10.2.0 g_1 etworkloglistener.log 的日志信息
    监听 : (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=bsgc208)(PORT=1521)))
    正在连接到 (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
    LISTENER  STATUS
    ------------------------
    别名                       LISTENER
    版本                       TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
    启动日期                   13-9  -2011 09:51:15
    正常运行时间               0  0 小时 0  6 
    跟踪级别                   off
    安全性                     ON: Local OS Authentication
    SNMP                      OFF
    监听程序参数文件           d:oracleproduct10.2.0 g_1 etworkadminlistener.ora
    监听程序日志文件           d:oracleproduct10.2.0 g_1 etworkloglistener.log
    监听端点概要 ...
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=bsgc208)(PORT=1521)))
    服务摘要 ..
    服务 "PLSExtProc" 包含 1 个例程。
      例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序 ...
    服务 "PUBS" 包含 1 个例程。
      例程 "PUBS", 状态 UNKNOWN, 包含此服务的 1 个处理程序 ...
    命令执行成功

    可以看到PUBS注册了静态监听服务 
    在服务生成 OracleOraTg10g_home1TNSListener的服务( 如果透明网关在 DB数据库机器上,则有 N多个 Listener服务,可以停止其它 Listener,直接在透明 Listener即可 )
    查看Listener状态:

    C:Documents and SettingsAdministrator>lsnrctl status
    LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 13-9  -2011 09:49:52
    Copyright (c) 1991, 2005, Oracle.  All rights reserved.
    正在连接到 (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
    LISTENER  STATUS
    ------------------------
    别名                       LISTENER
    版本                       TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
    启动日期                   05-9  -2011 09:49:23
    正常运行时间               8  0 小时 0  32 
    跟踪级别                   off
    安全性                     ON: Local OS Authentication
    SNMP                      OFF
    监听程序参数文件           d:oracleproduct10.2.0 g_1 etworkadminlistener.ora
    监听程序日志文件           d:oracleproduct10.2.0 g_1 etworkloglistener.log
    监听端点概要 ...
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=bsgc208)(PORT=1521)))
    服务摘要 ..
    服务 "PLSExtProc" 包含 1 个例程。
      例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序 ...
    服务 "PUBS" 包含 1 个例程。
      例程 "PUBS", 状态 UNKNOWN, 包含此服务的 1 个处理程序 ...
    命令执行成功

    七、配置tnsname.ora

    Oracle DB 机器上D:oracleproduct10.2.0db_1NETWORKADMIN目录下配置 tnsnames.ora文件,增加如下信息:

    PUBS =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.200.208)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SID = PUBS)
        )
        (HS = ok)
      )

    注意HS=OK,这主要由于是用于 Oracle server调用异构服务器进行处理必须的。

    现在使用tnsping测试:

    C:Documents and SettingsAdministrator>tnsping PUBS
    TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 13-9  -2011 09:57:17
    Copyright (c) 1997, 2005, Oracle.  All rights reserved.
    已使用的参数文件 :
    D:oracleproduct10.2.0db_1 etworkadminsqlnet.ora
    已使用 TNSNAMES 适配器来解析别名
    Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.200.208)(PORT = 1521))) (CONNECT_DATA = (SID = PUBS)) (HS = ok))
    OK (30 毫秒)

    八、创建访问 SQL SERVER访问账号 
    由于使用DBLINK不能为空密码,为了使用数据安全性,在 192.168.200.208 MS SQLServer数据库服务器创建一个登录账号为 oradba,密码为 a1b2c3,并设置权限访问 PUBS数据库权限。 
    九、Oralce 创建 DBLINK

     CREATE PUBLIC DATABASE LINK "PUBS"
     CONNECT TO "oradba"
     IDENTIFIED BY a1b2c3
     USING '(DESCRIPTION =
                  (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.200.208)(PORT=1521))
                  (CONNECT_DATA=(SID=PUBS)
                 )
     (HS = ok))';

    注意DESCRIPTION HS tnsname.ora 中的HS=OK 
    10、测试连接并使用SQL

    SQL> select * from dual@pubs;
    D
    -
    X

    连接正常,配置完成。

    总结:
    在进行配置透明网关访问
    SQL SERVER时,整个过程的 SID(DBLINK命名随意) 最好命名与 SQL SERVER数据库一致,如PUBS ,否则很容易出现以下错误信息: 
    ORA-28545: error diagnosed by Net8 when connecting to an agent

    Unable to retrieve text of NETWORK/NCR message 65535

    ORA-02063: preceding 2 lines from PUBS
    另外在 DBLINK访问用户账号最好使用小写且使用 ””双引号,如 oradba”  ,这样可以 SQL SERVER2000SQL SERVER2005访问,另外就是 ORACLE 方便访问SQL SERVER SQL程序。

      
  • 相关阅读:
    addClass 函数
    Javascript 严格模式详解
    Animated Scroll to Top
    Cross-Browser HTML5 Placeholder Text
    不要滥用div,保持代码的整洁
    Revit二次开发示例:DeleteDimensions
    Revit二次开发示例:ChangesMonitor
    IEnumerable,ICollection,IList,List之间的区别
    Revit二次开发示例:CancelSave
    Revit二次开发示例:AutoUpdate
  • 原文地址:https://www.cnblogs.com/leemoby/p/3583420.html
Copyright © 2020-2023  润新知