zoukankan      html  css  js  c++  java
  • Oracle中使用透明网关链接到Sqlserver[Z]

    Oracle中使用透明网关链接到Sqlserver

    在最近项目中需要从Oracle中访问SQL Server数据库, 自然想到了透明网关. 因为Oracle数据库是Linux上的, 而Linux上的Oracle9i不包括连接到SQL Server的透明网关.就在一台单独的Windows服务器上安装了透明网关用做Oracle访问SQL Server的桥梁.

    环境如下:

    Oracle Database Server:Linux + oracle 9.2.0.4 IP:10.194.129.197

    Transparent Gateway:Windows 2003 server IP: 10.194.129.225

    MS SQL Server:Windows 2003 server + SQL Server 2005 IP: 10.194.129.225

    1、 Transparent Gateway for SQL Server安装

    从Oracle 9i数据库安装光盘setup.exe安装,选择安装客户端

    Oracle中使用透明网关链接到Sqlserver

    Oracle中使用透明网关链接到Sqlserver

    安装类型选择:管理员

    安装完客户端后,重新运行setup.exe,安装产品选择Oracle 9i Database 9.2.0.1.0, 安装类型选择"自定义",安装组件选择Oracle Net Services和Oracle Transparent Gateways, 并在此项下选择Oracle Transparent Gateway for Microsoft SQL Server, 安装过程中可以不设置连接到SQL Server的信息.如下图所示:

    Oracle中使用透明网关链接到Sqlserver

    Oracle中使用透明网关链接到Sqlserver

    以下的IP地址及数据库以实际环境为准

    Oracle中使用透明网关链接到Sqlserver

    2、 编辑%ORACLE_HOME% g4msqladmininit%ORACLE_SID%.ora, 该文件包含了TG for SQL Server的配置信息, 其中%ORACLE_SID%是给TG的"SID", 默认为tg4msql. 修改文件中的行

    HS_FDS_CONNECT_INFO="SERVER=10.194.129.225;DATABASE=185life"

    其中SERVER后为SQL Server所在的服务器名称或ip地址,Database为连接到的数据库名称.

    当然,如果在SQL Server服务器上,有两个sql server实例,则使用‘服务器名"实例名’的方式设置上面的SERVER值,如:HS_FDS_CONNECT_INFO="SERVER=ZZLMSSQLSERVER;DATABASE=MSDB"

    3、 编辑%ORACLE_HOME%"network"admin"listener.ora, 编辑对应listener的SID_LIST

    SID_LIST_LISTENER=

       (SID_LIST=

          (SID_DESC=

             (SID_NAME=%ORACLE_SID%)        

             (ORACLE_HOME=oracle_home_directory)        

             (PROGRAM=tg4msql)

          )

       )

    例如:

    SID_LIST_LISTENER =

    (SID_LIST =

        (SID_DESC =

          (SID_NAME = tg4msql)

          (ORACLE_HOME = d:oracleora92) #oracle的主目录

          (PROGRAM = tg4msql)

        )

    )

    其中%ORACLE_SID%必须为第二布中设置的SID, 默认值为tg4msql. 修改listener.ora文件后需重启listener使修改生效.如果没有listener.ora文件,请用Net Configuration Assistant或Net Manager新建一个LISTENER.

    以上操作都是在Transparent Gateway所在机器上。

    4、 在Oracle服务器上:编辑需要连接到透明网关的Oracle Server的$ORACLE_HOME etworkadmin nsnames.ora, 例如:

    TG4MSQL =

    (DESCRIPTION =

        (ADDRESS_LIST =

          (ADDRESS = (PROTOCOL = TCP)(HOST = 10.194.129.225)(PORT = 1521))

        )

        (CONNECT_DATA =

          (SERVICE_NAME = tg4msql)

        )

        (HS = OK)

    )

    HOST指向Transparent Gateway所在的机器的IP,Service_name为第3步中的SID_NAME

    使用tnsping测试服务名是否连通,命令:tnsping tg4msql。如果不通,请检查防火墙及网络配置。

    5、 在Oracle数据库中建立连接, 指向TG for SQL Server.

    CREATE DATABASE LINK tg4msql CONNECT TO "user" IDENTIFIED BY "password" USING 'tg4msql';

    其中tg4msql是tnsnames中建立的连接字符串.

    ms sql server的用户名和密码必须小写,而且要加双引号

    否则会报如下错误:

                    错误信息:

                          ORA-28500: connection from ORACLE to a non-Oracle system returned this messsage:

                          [Transparent gateway from MSSQL][Microsoft][ODBC SQL Server Driver][SQL Server]??

                          'sa'????? (SQL State:28000; SQL Code: 18456)

                          ORA-02063: preceding 2 lines from LINK_ZZL

                    错误原因:

                          在CREATE    DATABASE LINK LINK_ZZL的连接字符串中,ms sql server的用户名和密码必须小写,而且要加双引号

    6、确保CATHS.sql已被运行。

    以SYS用户连接上去,查看有没有SYS.HS_FDS_CLASS,如果没有,运行$ORACLE_HOME/RDBMS"ADMIN"CATHS.SQL

    6、 测试, 如运行select * from emp@tg4msql等.
    访问dblink时说明:
                  这是基于网关的方式,因此不能在断开网络的情况下本地的oracle连接本地的ms sql server               ORA-28545: error diagnosed by Net8 when connecting to an agent
                  NCRO: Failed to make RSLV connection
                  ORA-02063: preceding 2 lines from LINK_ZZL

    7、BUG解决。

    如果在第6步出现以下错误提示,则以SYS运行

    exec dbms_hs.replace_base_caps(531, 531, 'First/Last function');

    ERROR at line 1:

               ORA-28522: error initializing heterogeneous capabilities

               ORA-28522: error initializing heterogeneous capabilities

               ORA-28559: FDS_CLASS_NAME is <GTW>9.2.0.5.0_128, FDS_INST_NAME is <link>

               ORA-02063: preceding 3 lines from %s

               ORA-00604: error occurred at recursive SQL level 1

               ORA-24274: no row exists in the HS$_BASE_CAPS table for these parameters

               ORA-06512: at "SYS.DBMS_SYS_ERROR", line 86

               ORA-06512: at "SYS.DBMS_HS_UTL", line 431

               ORA-06512: at "SYS.DBMS_HS_CHK", line 51

               ORA-06512: at "SYS.DBMS_HS_UTL", line 48

               ORA-06512: at "SYS.DBMS_HS", line 38

               ORA-06512: at line 1

  • 相关阅读:
    tensorflow2.0 GPU和CPU 时间对比
    第一次使用FileZilla Server
    PremiumSoft Navicat 15 for Oracle中文破解版安装教程
    Unmapped Spring configuration files found. Please configure Spring facet or use 'Create Default Context' to add one including all unmapped files.
    ng : 无法加载文件 D: odejs ode_global g.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
    angular
    Github上优秀的go项目
    win10---file explore 中remove quick access folder
    react--useEffect使用
    linux---cat 和 grep 的妙用
  • 原文地址:https://www.cnblogs.com/huak/p/3503680.html
Copyright © 2011-2022 走看看