ORACLE透明网关访问SQL Server配置总结
透明网关概念
ORACLE透明网关(Oracle Transparent Gateway)可以解决ORACLE数据库和非ORACLE数据库交互数据的需求。在一个异构的分布式环境中,通过ORACLE透明网关可以访问其他类型数据库,例如DB2,SQL Server、Sybase....。这个类似于SQL Server里面的LINKED SERVER可以直接访问异构的数据库环境,由于Windows本身提供了很多驱动,所以有时候不需要安装额外的驱动程序,有时候也需要安装相关驱动才能访问(例如,SQL SERVER 通过LINKED SERVER访问ORACLE数据库,就必须安装Oracle Client客户端相关组件),而ORACLE则必须通过透明网关才能访问其它类型数据库,官方文档关于透明网关的介绍如下:
Oracle Database Gateways provide the ability to transparently integrate with non-Oracle systems from an Oracle environment. This transparency eliminates the need for application developers to customize their applications to access data from different non-Oracle systems, thus decreasing development efforts and increasing the mobility of the application. Applications can be developed using a consistent Oracle interface for both Oracle and non-Oracle systems.
For smooth interoperability between disparate systems, SQL translations, data dictionary translations and data type translations are required, even if the non-Oracle systems are based on SQL standards. Gateways have the ability to translate one system's dialect to another.
Oracle has tailored Gateways to many systems, DB2, Sybase, Informix, SQL Server, IMS, VSAM, Adabas, to name a few. These are specifically coded for the target non-Oracle system. They provide an optimized solution and are also end-to-end certified.
ORACLE官方关于透明网关的文档资料,请见链接http://www.oracle.com/technetwork/database/gateways/index.html,主要有Database Gateways Features Overview 与Database Gateways Technical Whitepaper等相关资料。
透明网关安装
关于透明网关的安装,透明网关可以安装在Windows平台或Linux平台;它既可以和ORACLE数据库实例安装在一起(Oracle Server端),也可以安装在其它数据库服务器上(例如,安装在SQL Server数据库服务器上),也可以安装在一台跟数据库无任何关系的机器上。也就是说Oracle Gateway架构设计的耦合性非常低。刚开始接触透明网关时,透明网关需要安装在哪里这个问题一直困扰我,直到我一一验证测试。通俗的来说,透明网关可以装在任意的一台机器上,如果透明网关安装在Oracle Server端,这时候Server自身担当两种角色:服务器和透明网关代理,如果安装在非Oracle Server端,那么其他服务器就充当透明网关代理的角色。
Windows平台安装
从官方网址下载win32_11gR2_gateways.zip http://www.oracle.com/technetwork/cn/database/enterprise-edition/downloads/112010-win32soft-098630-zhs.html安装介质后,解压安装,安装步骤非常简单,本身安装文件里面也有详细安装文档,本不需在这里过多介绍,不过,对于一些初次初学者,也有一些细节地方需要注意。如下所示,对一些步骤做了截图处理。
选择安装路径,这个路径可以和ORACLE数据库路径一致(一般很少有ORACLE实例安装在Windows平台,如果是安装在Linux平台,可以和ORACLE实例的安装路径一致,也可以任意选择一个路径),也可以单独选择一个安装路径。
选择需要安装的组件,例如我这里只需要通过透明网关访问SQL Server 数据库。那么我只勾选了下面一个组件。
在这里需要提供SQL Server数据库服务器名或IP、实例名称、数据库名称等等。
安装完成后,你会在D:\product\11.2.0\tg_1\dg4msql\admin这个路径(这个与安装目录有关系,都是位于$ORACLE_HOME\dg4msql\admin)下看到initdg4msql.ora 文件。
如下所示,如果前面UI界面填写了相关信息。那么在透明网关初始化参数文件initdg4msql.ora下就会有相关信息。如下所示。注意,默认使用的分隔符为“/”,ORACLE透明网关安装在一个Windows 2012应用服务器上。实际上,使用分隔符"/"是会遇到一些问题的(应该使用//),Windows平台的正确分隔符为“.”。后续会介绍这个案例,当然如果是Linux平台使用分隔符“/”则没有任何问题。
# This is a customized agent init file that contains the HS parameters
# that are needed for the Database Gateway for Microsoft SQL Server
#
# HS init parameters
#
HS_FDS_CONNECT_INFO=[192.168.27.57]/MSSQLSERVER/TEST
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
Oracle Net 配置,可以通过图形界面配置,也可以忽略这些步骤,后续通过手工编辑配置Oracle Net
如下所示,在D:\product\11.2.0\tg_1\network\admin\listener.ora下面,你会看到下面配置信息:
# listener.ora Network Configuration File: D:\product\11.2.0\tg_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
ADR_BASE_GW_LISTENER = D:\product\11.2.0\tg_1
GW_LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.27.132)(PORT = 1522))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1522))
)
)
当然这个配置信息不全,正确的配置信息如下所示(注意:这里监听器名称为GEW_LISTENER,这个与默认监听器名称LISTENER有细微不同):
ADR_BASE_GEW_LISTENER = D:\product\11.2.0\tg_1
GEW_LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.27.132)(PORT = 1522))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1522))
)
)
SID_LIST_GEW_LISTENER = &n
相关文章:
-
-
在项目中经常会遇到居中问题,这里借鉴度娘的众多答案,做一个总结: 一、元素的水平居中 1、行级元素的水平居中 很明显:子元素为行级元素时,只需要设置... [阅读全文]
-
网页实质是块与块之间的位置,块挨着块,块嵌套块,块叠着块。 三种关系:相邻,嵌套,重叠。 下面介绍网页布局的常用几种方式 1.一列布局: 一般都是固... [阅读全文]
-
Window XP系统上安装Oracle Database 10G,在Mac系统上使用Navicat远程连接oracle数据库(不需要安装oracl... [阅读全文]
-
错误1. ERROR: child process failed, exited with error number 100 可能原因: 1.没有正... [阅读全文]
-
JavaScript 中,定义函数时用 var foo = function () {} 和 function foo() 有什么区别?
某天写代码突然县道这个问题,顺势总结一波 JavaScript 函数和变量声明的“提前”(hoist)行为 简单的说 如果我们使用 匿名函数 var... [阅读全文] -
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
上一篇: ccf--20151203--画图
下一篇: 干活热都把外衣脱了
发表评论