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

一、环境如下 :
ORACLE 10g 安装在 :192.168.200.231的window2003 server
(版本: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 )
SqlServer 2000安装在 :192.168.200.208的window2003 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:\oracle\product\10.2.0\tg_1\network\admin\listener.ora

# Generated by Oracle configuration tools.
 
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = d:\oracle\product\10.2.0\tg_1)
      (PROGRAM = extproc)
    )
    (SID_DESC=
         (SID_NAME = PUBS)
         (ORACLE_HOME = d:\oracle\product\10.2.0\tg_1)
         (PROGRAM = tg4msql)
    )
  )
 

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

C:\Documents and Settings\Administrator>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:\oracle\product\10.2.0\tg_1\network\admin\listener.ora
写入 d:\oracle\product\10.2.0\tg_1\network\log\listener.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:\oracle\product\10.2.0\tg_1\network\admin\listener.ora
监听程序日志文件           d:\oracle\product\10.2.0\tg_1\network\log\listener.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 Settings\Administrator>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:\oracle\product\10.2.0\tg_1\network\admin\listener.ora
监听程序日志文件           d:\oracle\product\10.2.0\tg_1\network\log\listener.log
监听端点概要 ...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=bsgc208)(PORT=1521)))
服务摘要 ..
服务 "PLSExtProc" 包含 1 个例程。
  例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序 ...
服务 "PUBS" 包含 1 个例程。
  例程 "PUBS", 状态 UNKNOWN, 包含此服务的 1 个处理程序 ...
命令执行成功

七、配置tnsname.ora

在Oracle DB 机器上D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\目录下配置 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 Settings\Administrator>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:\oracle\product\10.2.0\db_1\network\admin\sqlnet.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 SERVER2000和SQL SERVER2005访问,另外就是 ORACLE 方便访问SQL SERVER 的SQL程序。

  

【Oracle】Oracle透明网关访问MSSQLServer的更多相关文章

  1. Oracle Gateways透明网关访问SQL Server

    自己的本机安装了Oracle 12c,公司的平台需要同时支持Oracle与SQL Server,很多时候都有将数据从Oracle同步到SQL Server的需求.通过SQL Server的link S ...

  2. oracle利用透明网关访问mssql

    遇到一个客户,有个需求,想将mssql中的数据抽取到oracle中.经过上网查找,感觉gateway这个工具可以实现,因此就搭建实验环境进行测试.首先在oracle delivery上面下载对应的安装 ...

  3. ORACLE透明网关访问SQL Server配置总结

      透明网关概念 ORACLE透明网关(Oracle Transparent Gateway)可以解决ORACLE数据库和非ORACLE数据库交互数据的需求.在一个异构的分布式环境中,通过ORACLE ...

  4. Oracle透明网关访问SQLServer数据库

    针对oracle数据库不同实例之间的数据访问,我们可以直接通过dblink访问,如果oracle数据库想访问mysql/sqlserver等数据库的数据,我们可以通过配置oracle透明网关实现异构数 ...

  5. Oracle透明网关访问MySQL数据库

    针对oracle数据库不同实例之间的数据访问,我们可以直接通过dblink访问,如果oracle数据库想访问mysql/sqlserver等数据库的数据,我们可以通过配置oracle透明网关实现异构数 ...

  6. Oracle 11g透明网关连接Sqlserver 2000

    一.环境 公司网站系统使用的是IIS + Oracle 但公司某系统使用的是Sqlserver 2000, 但其数据需要做成报表放到网站上,为简化编程,使用Oracle做透明网关,定期从Sqlserv ...

  7. Oracle 11g透明网关连接Sqlserver

    Oracle 11g透明网关连接Sqlserver oracle 透明网关是oracle连接异构数据库提供的一种技术.通过Gateway,可以在Oracle里透明的访问其他不同的数据库,如SQL Se ...

  8. Oracle EM 不能访问

    zwt2001267 原文 Oracle EM 不能访问 1. cmd控制启动EM: C:\Users\Administrator>emctl start dbconsoleEnvironmen ...

  9. Oracle 11g透明网关连接Sqlserver 2000(转)

    Oracle 11g透明网关连接Sqlserver 2000: http://www.cnblogs.com/lightnear/archive/2013/02/03/2890858.html 透明网 ...

随机推荐

  1. LNMP架构基础搭建

    LNMP架构+wordpress博客 环境: centos6.7 2.6.32-573.el6.x86_64 nginx-1.6.3 mysql-5.5.49 php-5.3.27 wordpress ...

  2. Linux usleep for shell

    /**************************************************************************** * Linux usleep for she ...

  3. 十天学会单片机Day6 学会看数据手册 (IIC总线PCF859芯片( A/D D/A)应用)

    1.实际电路 2.引脚图 3.地址 高四位为固定地址1001,A2A1A0可编程地址,通过观察实际电路,可知A2A1A0 为000.最低位为读写为,1为读,0为写. 4.控制字 控制寄存器的高半字节用 ...

  4. JAVA类的加载、连接与初始化

    JAVA类的加载.连接与初始化 类的声明周期总共分为5个步骤1.加载2.连接3.初始化4.使用5.卸载 当java程序需要某个类的时候,java虚拟机会确保这个类已经被加载.连接和初始化,而连接这个类 ...

  5. .NET/C# 使用 Span 为字符串处理提升性能

    .NET Core 2.1 和 C# 7.2 带来了 Span 的原生支持,原本需要使用不安全代码操作的内存块现在可以使用安全的方式来完成.此前在性能和稳定性上需要有所取舍,而现在可以兼得了. 简单的 ...

  6. 当我们使用 MVVM 模式时,我们究竟在每一层里做些什么?

    这篇文章不会说 MVVM 是什么,因为讲这个的文章太多了:也不会说 MVVM 的好处,因为这样的文章也是一搜一大把.我只是想说说我们究竟应该如何理解 M-V-VM,当我们真正开始写代码时,应该在里面的 ...

  7. json对象和json字符串相互转换

    1.将JSON字符串转换为JSON对象 var data = JSON.parse(str); // JSON.parse();方法 console.log(data.name); 2.将JSON对象 ...

  8. Vue生命周期函数详解

    vue实例的生命周期 1 什么是生命周期(每个实例的一辈子) 概念:每一个Vue实例创建.运行.销毁的过程,就是生命周期:在实例的生命周期中,总是伴随着各种事件,这些事件就是生命周期函数: 生命周期: ...

  9. Android学习路线总结,绝对干货(转)

    title: Android学习路线总结,绝对干货tags: Android学习路线,Android学习资料,怎么学习androidgrammar_cjkRuby: true--- 一.前言 不知不觉 ...

  10. .NET平台上的Model-View-Presenter模式实践

    为什么要写这篇文章 笔者当前正在负责研究所中一个项目,这个项目基于.NET平台,初步拟采用C/S部署体系,所以选择了Windows Forms作为其UI.经过几此迭代,我们发现了一个问题:虽然业务逻辑 ...