oracle通过透明网关(Oracle Transparent Geteways),访问ms sql server和其他数据库

本文主要是介绍oracle通过透明网关(Oracle Transparent Geteways),访问ms sql server和其他数据库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

环境:
    1、在安装有oracle服务器端,ms sql server的客户端,通过oracle的透明网关访问ms sql server数据库
    2、在ms sql server服务器上创建用户conn_ora,并且要能访问ms sql server数据库msdb

安装Oracle Transparent Geteways:
    1、'开始'菜单的'Oracle Installation Products'下的'Universal Installer'
       //127.0.0.1/e$/oracle9.2/ORANT920/ORA92_1/NT/I386/stage/products.jar
       下一步-
    2、选择安装类型:
       自定义,下一步
    3、选择可用产品组件:
       将 'Oracle Transparent Geteways 9.2.0.1.0'下的'Oracle Transparent Geteways for Microsoft SQL Server 9.2.0.1.0'选中;
       将 'Oracle Transparent Geteways 9.2.0.1.0'下的'Oracle Transparent Geteways for Sybase 9.2.0.1.0'选中;
       下一步;
    4、设置Sybase路径
       选择你的'SYBASE的完整安装路径';
       下一步
    5、设置数据库服务器名 和数据库名称???
       Microsoft SQL Server:192.168.0.111
       Microsoft SQL 数据库:msdb
       服务器名称或者ip地址,数据库名字
    6、继续安装:
       //127.0.0.1/e$/oracle9.2/ORANT920/ORA92_2/NT/I386/stage
       //127.0.0.1/e$/oracle9.2/ORANT920/ORA92_3/NT/I386/stage
    7、安装完成:
       此时,oracle安装主目录下有了'tg4msql'目录
       C:/oracle/ora92/tg4msql

设置环境参数,创建dblink:
    1、C:/oracle/ora92/tg4msql/admin下的inittg4msql.ora文件
       文件内容:
            # 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=local;DATABASE=MSDB"
            HS_FDS_TRACE_LEVEL=OFF
            HS_FDS_RECOVERY_ACCOUNT=RECOVER
            HS_FDS_RECOVERY_PWD=RECOVER
       说明:
           HS_FDS_CONNECT_INFO=ZZL.MSDB和
           HS_FDS_CONNECT_INFO="SERVER=ZZL;DATABASE=MSDB"和
           HS_FDS_CONNECT_INFO="SERVER=192.168.0.111;DATABASE=MSDB"
           都可以,两种写法,其中‘SERVER’是服务器名称或者ip,DATABASE是数据库名称,
           当然,如果在192.168.0.111这台服务器上,有两个sql server实例,则使用‘服务器名/实例名’的方式设置上面的SERVER值,
           如:HS_FDS_CONNECT_INFO="SERVER=local/MSSQLSERVER;DATABASE=MSDB"

 


    2、设置listener.ora文件
       位置:C:/oracle/ora92/network/admin
       文件内容:
                SID_LIST_LISTENER =
                  (SID_LIST =
                    (SID_DESC =
                      (SID_NAME = PLSExtProc)
                      (ORACLE_HOME = C:/oracle/ora92)
                      (PROGRAM = extproc)
                    )
                    (SID_DESC =
                      (GLOBAL_DBNAME = orademo)
                      (PROGRAM = orademo)
                      (ORACLE_HOME = C:/oracle/ora92)
                      (SID_NAME = orademo)
                    )
                    (SID_DESC =
                      (PROGRAM = tg4msql)
                      (ORACLE_HOME = C:/oracle/ora92)
                      (SID_NAME = tg4msql)
                    )
                  )
        其中新增:
            (SID_DESC =
              (PROGRAM = tg4msql)
              (ORACLE_HOME = C:/oracle/ora92)      #oracle的主目录
              (SID_NAME = tg4msql)
            )

    3、配置tnsnames.ora文件
       位置:C:/oracle/ora92/network/admin
       文件内容:
            # TNSNAMES.ORA Network Configuration File: C:/oracle/ora92/network/admin/tnsnames.ora
            # Generated by Oracle configuration tools.
            SDLGDB =
              (DESCRIPTION =
                (ADDRESS_LIST =
                  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.8)(PORT = 1521))
                )
                (CONNECT_DATA =
                  (SID = SSTORA)
                  (SERVER = DEDICATED)
                )
              )
            ORADEMO =
              (DESCRIPTION =
                (ADDRESS_LIST =
                  (ADDRESS = (PROTOCOL = TCP)(HOST = zzl)(PORT = 1521))
                )
                (CONNECT_DATA =
                  (SID = orademo)
                  (SERVER = DEDICATED)
                )
              )
            zzl_sql200 =   #数据库连接名称,任意命名
              (DESCRIPTION =
                (ADDRESS_LIST =
                  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.111)(PORT = 1521))   #'192.168.0.111'为 oracle服务器的机器名
                )
                (CONNECT_DATA =
                  (SID = tg4msql)
                )
                (HS=OK)   #Oracle Server要调用异构服务来处理
              )
        


        其中新增:
            zzl_sql200 =   #数据库连接名称,任意命名
              (DESCRIPTION =
                (ADDRESS_LIST =
                  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.111)(PORT = 1521))   #'192.168.0.111'为 oracle服务器的机器名
                )
                (CONNECT_DATA =
                  (SID = tg4msql)
                )
                (HS=OK)   #Oracle Server要调用异构服务来处理
              )

    4、配置init.ora.1115200612231
       位置:C:/oracle/admin/orademo/pfile
       将global_names设置为真值,及global_names=true

    5、重新启动服务:
       在window的开始的运行中执行:
       net stop OracleOraHome92TNSListener 
       net stop OracleServiceORADEMO 
       net start OracleOraHome92TNSListener 
       net start OracleServiceORADEMO 
       
       说明:OracleOraHome92TNSListener 是监听服务,OracleServiceORADEMO是实例服务
                  
    6、创建dblink:
       以普通用户登录oracle:如cs/cs@orademo
       
       --drop DATABASE LINK link_anson;
       CREATE  DATABASE LINK link_anson CONNECT TO "sa" IDENTIFIED BY "anson" USING 'local_sql2000';
       
       说明: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_anson
              错误原因:
                    在CREATE  DATABASE LINK LINK_anson的连接字符串中,ms sql server的用户名和密码必须小写,而且要加双引号

    

     7、在pl/sql中执行:
        select * from sysobjects@link_anson where rownum <=5;
        结果如下:

 

            1    sysrowsetcolumns    4    S  4   0   0   0   0   0   2005-10-14 1:36:15
            2    sysrowsets               5    S  4   0   0   0   0   0   2005-10-14 1:36:15
            3    sysallocunits            7    S  4   0   0   0   0   0   2005-10-14 1:36:15
            4    sysfiles1                   8    S  4   0   0   0   0   0   2003-4-8 9:13:38
            5    syshobtcolumns      13   S  4   0   0   0   0   0   2005-10-14 1:36:15
        
        访问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_anson

 

这篇关于oracle通过透明网关(Oracle Transparent Geteways),访问ms sql server和其他数据库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/761895

相关文章

SQL Server 中的表进行行转列场景示例

《SQLServer中的表进行行转列场景示例》本文详细介绍了SQLServer行转列(Pivot)的三种常用写法,包括固定列名、条件聚合和动态列名,文章还提供了实际示例、动态列数处理、性能优化建议... 目录一、常见场景示例二、写法 1:PIVOT(固定列名)三、写法 2:条件聚合(CASE WHEN)四、

Mybatis对MySQL if 函数的不支持问题解读

《Mybatis对MySQLif函数的不支持问题解读》接手项目后,为了实现多租户功能,引入了Mybatis-plus,发现之前运行正常的SQL语句报错,原因是Mybatis不支持MySQL的if函... 目录MyBATis对mysql if 函数的不支持问题描述经过查询网上搜索资料找到原因解决方案总结Myb

MySQL 筛选条件放 ON后 vs 放 WHERE 后的区别解析

《MySQL筛选条件放ON后vs放WHERE后的区别解析》文章解释了在MySQL中,将筛选条件放在ON和WHERE中的区别,文章通过几个场景说明了ON和WHERE的区别,并总结了ON用于关... 今天我们来讲讲数据库筛选条件放 ON 后和放 WHERE 后的区别。ON 决定如何 "连接" 表,WHERE

mysql_mcp_server部署及应用实践案例

《mysql_mcp_server部署及应用实践案例》文章介绍了在CentOS7.5环境下部署MySQL_mcp_server的步骤,包括服务安装、配置和启动,还提供了一个基于Dify工作流的应用案例... 目录mysql_mcp_server部署及应用案例1. 服务安装1.1. 下载源码1.2. 创建独立

Mysql中RelayLog中继日志的使用

《Mysql中RelayLog中继日志的使用》MySQLRelayLog中继日志是主从复制架构中的核心组件,负责将从主库获取的Binlog事件暂存并应用到从库,本文就来详细的介绍一下RelayLog中... 目录一、什么是 Relay Log(中继日志)二、Relay Log 的工作流程三、Relay Lo

MySQL日志UndoLog的作用

《MySQL日志UndoLog的作用》UndoLog是InnoDB用于事务回滚和MVCC的重要机制,本文主要介绍了MySQL日志UndoLog的作用,文中介绍的非常详细,对大家的学习或者工作具有一定的... 目录一、Undo Log 的作用二、Undo Log 的分类三、Undo Log 的存储四、Undo

MySQL游标和触发器的操作流程

《MySQL游标和触发器的操作流程》本文介绍了MySQL中的游标和触发器的使用方法,游标可以对查询结果集进行逐行处理,而触发器则可以在数据表发生更改时自动执行预定义的操作,感兴趣的朋友跟随小编一起看看... 目录游标游标的操作流程1. 定义游标2.打开游标3.利用游标检索数据4.关闭游标例题触发器触发器的基

nginx跨域访问配置的几种方法实现

《nginx跨域访问配置的几种方法实现》本文详细介绍了Nginx跨域配置方法,包括基本配置、只允许指定域名、携带Cookie的跨域、动态设置允许的Origin、支持不同路径的跨域控制、静态资源跨域以及... 目录一、基本跨域配置二、只允许指定域名跨域三、完整示例四、配置后重载 nginx五、注意事项六、支持

MySQL查看表的历史SQL的几种实现方法

《MySQL查看表的历史SQL的几种实现方法》:本文主要介绍多种查看MySQL表历史SQL的方法,包括通用查询日志、慢查询日志、performance_schema、binlog、第三方工具等,并... 目录mysql 查看某张表的历史SQL1.查看MySQL通用查询日志(需提前开启)2.查看慢查询日志3.

MySQL底层文件的查看和修改方法

《MySQL底层文件的查看和修改方法》MySQL底层文件分为文本类(可安全查看/修改)和二进制类(禁止手动操作),以下按「查看方法、修改方法、风险管控三部分详细说明,所有操作均以Linux环境为例,需... 目录引言一、mysql 底层文件的查看方法1. 先定位核心文件路径(基础前提)2. 文本类文件(可直