配置Oracle Gateway 12连接到SQL server 2014

最近的工作中需要基于Oracle连接到SQLserver2014,我们可以通过配置Gateway的方式来实现这个功能。这个Gateway的实质是透过dblink来实现的。即把SQLserver模拟成一个远端的Oracle实例,这个实例由Gateway来负责进行接收,转发等等。本文简要描述其配置过程。

一、安装环境介绍

gateway: 12.1.0.2
Oracle db: 11.2.0.4 + RHEL6.3
Sqlserver: 2014 + Win2012

如果安装在已经安装Oracle相同的目录下,会收到如下提示,无法继续安装。
[INS-32025] The chosen installation conflicts with software already
installed the given Oracle home.

二、安装Oracle gateway

1、准备环境

$ unzip linuxamd64_12102_gateways.zip
$ mkdir -p /u01/app/gateway
$ mkdir -p /u01/app/gateway/12.1
$ cp ~/.bash_profile ~/.bash_profile_gw
$ vim  ~/.bash_profile_gw    ###编辑新的bash_profile文件

$ more ~/.bash_profile_gw    ###编辑后如下
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR

ORACLE_HOSTNAME=wms.ycdata.net; export ORACLE_HOSTNAME
ORACLE_UNQNAME=dg4msql; export ORACLE_UNQNAME
ORACLE_BASE=/u01/app/gateway; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/12.1; export ORACLE_HOME
ORACLE_SID=dg4msql; export ORACLE_SID

PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

2、安装配置gateway

$ source ~/.bash_profile_gw
$ env |grep ORACLE
ORACLE_UNQNAME=dg4msql
ORACLE_SID=dg4msql
ORACLE_BASE=/u01/app/gateway
ORACLE_HOSTNAME=wms.ycdata.net
ORACLE_HOME=/u01/app/gateway/12.1

$ export DISPLAY=192.168.21.157:0.0
$ cd gateways/
$ ./runInstaller

选择for sql server
    Oracle Database Gateway for Microsoft SQL Server
    Oracle Database Gateway for ODBC (此项可以用于配置访问mysql)

输入sqlserver连接信息,也可以后续再配置文件initdg4msql.ora中修改
192.168.21.157
1433
HQ1636
testdb

安装完毕后,会提示创建监听器,可以直接创建,也可以在安装完毕后再配置,本文是在安装完毕后,通过netmgr进行配置的。
在通过netmgr配置时,除了配置监听器地址和端口号之外,还需要配置其他服务项:
Program Name             dg4msql
SID                      dg4msql
Oracle Home Directory    /u01/app/gateway/12.1

与此同时,也可以通过netmgr配置tnsnames.ora
$ cd $ORACLE_HOME/network/admin
$ more listener.ora
# listener.ora Network Configuration File: /u01/app/gateway/12.1/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER_GW =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = wms.ycdata.net)(PORT = 1531))
  )

SID_LIST_LISTENER_GW =
  (SID_LIST =
    (SID_DESC =
      (PROGRAM = dg4msql)
      (SID_NAME = dg4msql)
      (ORACLE_HOME = /u01/app/gateway/12.1)
    )
  )

ADR_BASE_LISTENER_GW = /u01/app/gateway

###查看配置后的tnsnames.ora
$ more tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/gateway/12.1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

DG4MSQL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = wms.ycdata.net)(PORT = 1531))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dg4msql)
    )
  )

###安装完毕,在gateway相应目录下也有对应的配置样例,如下
$ cd $ORACLE_HOME/dg4msql/admin
$ ls
dg4msql_cvw.sql  dg4msql_tx.sql  initdg4msql.ora  listener.ora.sample  tnsnames.ora.sample

###这个文件用于配置连接到sqlserver
$ more initdg4msql.ora
HS_FDS_CONNECT_INFO=[192.168.21.157]:1433//testdb
# alternate connect format is hostname/serverinstance/databasename
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER

三、测试gateway

$ lsnrctl start LISTENER_GW

LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 08-JAN-2016 18:03:03

Copyright (c) 1991, 2014, Oracle.  All rights reserved.

Starting /u01/app/gateway/12.1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 12.1.0.2.0 - Production
System parameter file is /u01/app/gateway/12.1/network/admin/listener.ora
Log messages written to /u01/app/gateway/diag/tnslsnr/wms/listener_gw/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=wms.ycdata.net)(PORT=1531)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=wms.ycdata.net)(PORT=1531)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER_GW
Version                   TNSLSNR for Linux: Version 12.1.0.2.0 - Production
Start Date                08-JAN-2016 18:03:03
Uptime                    0 days 0 hr. 0 min. 0 sec    --Author : Leshami
Trace Level               off                          --Blog   : http://blog.csdn.net/leshami
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/gateway/12.1/network/admin/listener.ora
Listener Log File         /u01/app/gateway/diag/tnslsnr/wms/listener_gw/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=wms.ycdata.net)(PORT=1531)))
Services Summary...
Service "dg4msql" has 1 instance(s).
  Instance "dg4msql", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

$ tnsping DG4MSQL

TNS Ping Utility for Linux: Version 12.1.0.2.0 - Production on 08-JAN-2016 18:29:51

Copyright (c) 1997, 2014, Oracle.  All rights reserved.

Used parameter files:
/u01/app/gateway/12.1/network/admin/sqlnet.ora

Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = wms.ycdata.net)(PORT = 1531)))
(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = dg4msql)))
OK (0 msec)

$ sqlplus WMS_USER/xxx@WMSSERVER
SQL> show user;
USER is "WMS_USER"

SQL> create public database link mssql connect to robin identified by "xxx" using 'dg4msql';

SQL> select * from tt@dg4msql;
select * from tt@dg4msql
                            *
ERROR at line 1:
ORA-28546: connection initialization failed, probable Net8 admin error
ORA-02063: preceding line from DG4MSQL

调整DG4MSQL配置,增加(HS=OK)项
DG4MSQL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = wms.ycdata.net)(PORT = 1531))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SID = dg4msql)
    )
     (HS=OK)
  )

###再次测试
SQL> select * from tt@dg4msql;

        id
----------
         1

四、简化管理

由于Oracle gateway安装时使用了不同的Oracle Home,因此在启动gateway监听时,需要切换环境变量。因此可以直接将gateway 下的监听器内容复制到Oracle Home下listener.ora文件中,同时也复制DG4MSQL至Oracle Home下的tnsnames.ora文件中,省去环境切换的麻烦。

五、更多参考

How to Configure DG4MSQL (Oracle Database Gateway for MS SQL Server) 64bit Unix OS (Linux, Solaris, AIX,HP-UX) post install (Doc ID 562509.1)
ORA-28500 SQLSTATE 8001 When I Select Via DG4MSQL (Doc ID 868672.1)

六、连接过程图(参考其他大湿)

时间: 2024-11-03 00:09:57

配置Oracle Gateway 12连接到SQL server 2014的相关文章

远程登陆SQL Server 2014数据库的方法

远程登陆SQLServer (2014)数据库,供大家参考,具体内容如下 两台电脑,同一个局域网内,IP同一网段 配置: Computer1: Windows10,安装SQL Server 2014 enterprise版(作为服务器) Computer2: Windows 10,VS2015 Computer1:(1)设置Windows用户和SQL Server身份验证两种登陆方法 (2)配置SQL Server 配置管理器 网络配置将Named Pipes和TCP/IP协议均打开,TCP/I

把Oracle数据库移植到Microsoft SQL Server 7.0

oracle|server|数据|数据库  把Oracle数据库移植到Microsoft SQL Server 7.0 摘要:本文是为那些想把自己的Oracle应用程序转换为Microsoft SQL Server应用程序的开发人员编写的.本文描述了一个成功的转换所需要的工具.过程和技术.同时强调了建立高性能.高度并行的SQL Server应用程序的基本的设计要素. 本文的读者应该具有: Oracle关系型数据管理系统(RDBMS)的坚实基础. 普通数据库管理知识. 熟悉Oracle SQL和P

在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接)

error|server|程序 错误:"在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败. (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接) ",       上述错误我遇到两种情况,一种是在打开打开SQL Server 2005时弹出的,另一种是在应用程序连接SQL Server 2005时出现的.归纳了一下,由以下几个原因: 1.数据库引擎没有启动.  

SQL SERVER 2012/2014 链接到 SQL SERVER 2000的各种坑

    本文总结一下SQL SERVER 2012/2014链接到SQL SERVER 2000的各种坑,都是在实际应用中遇到的疑难杂症.可能会有人说怎么还在用SQL SERVER 2000,为什么不升级呢? 每个公司都会有一两个几乎快被人遗忘的系统,接手维护这些系统的人可能都不知换了多少批了.它们的命运注定慢慢消亡.然而偏偏却又生命力顽强,总还有一些 人在使用着这些系统.所以就处在一种尴尬的境地: 升级吧,价值不大,可能再过一两年,这系统就要被其它系统替代了.而且项目经理也没有精力.人手耗费在

SQL SERVER 2014 内存表 测试 结果慢 (2016-05-16)

问题描述 SQL SERVER 2014 内存表 测试 结果慢 (2016-05-16) 50C 大家好, 最近下了一个 SQL 2014 64位企业版, 安装环境:WIN7 X64 企业版 台式机环境为: I7 4770K, 16G 内存 , 机械硬盘: 一张是传统的表 disk_card 一张是内存表 snap_card,结构完全相同 两张表记录条数,均为 27752311 条, 而且内容完全一样(从disk__card 整表复制到snap__card的) disk_card 无索引 ( 其

谈谈我的微软特约稿:《SQL Server 2014 新特性:IO资源调控》

原文:谈谈我的微软特约稿:<SQL Server 2014 新特性:IO资源调控> 一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 篡写经历(Experience) 特约稿正文(Content-body) 第一部分:生活中资源调控器: 第二部分:SQL Server中资源调控器: 第三部分:SQL Server资源调控器运用场景-CPU: 第四部分:SQL Server资源调控器运用场景-IO: 第五部分:总结: 第六部分:作者简介:

SQL Server 2014如何提升非在线的在线操作

原文:SQL Server 2014如何提升非在线的在线操作 在今天的文章里,我想谈下在线索引重建操作( Online Index Rebuild operations),它们在SQL Server 2014里有怎样的提升.我们都知道,自SQL Server 2005开始引入了在线索引重建操作.但这些在线操作并非真正的在线操作,因为在操作开始时,SQL Server需要获得共享表锁(Shared Table Lock (S) ),在操作结束时需要在对应表上获得架构修改锁(Schema Modif

SQL Server 2014 Database Mail重复发送邮件特殊案例

在一数据库服务器(Microsoft SQL Server 2014 (SP2) (KB3171021) - 12.0.5000.0 (X64))发现有个作业调用Database Mail发送邮件时,有时候出现同样的邮件发送两封的情况,经过详细检查,排除了该作业里面业务逻辑有问题的情况,确实存在重复发送邮件的情况, 检查Database Mail日志,发现在0:00~0.03报"The mail could not be sent to the recipients because of the

SQL Server 2014 BI新特性(一) Excel下的Data Explorer

Data Explorer是即将发布的SQL Server 2014里的一个新特性,借助这个特性讲使企业中的自助式的商业智能变得更加的灵活,从而也降低了商业智能的门槛. 此文是在微软商业智能官方博客里找到的,我在这里不仅将其简单的翻译过来,同时也加入了一些个人的感悟和笔记,如果你对原文感兴趣可以点击下面的链接查看原文; http://blogs.msdn.com/b/microsoft_business_intelligence1/archive/2013/05/15/5-things-you-