"情景介绍 1、需求:业务中设计两个不同的系统,系统 1 和系统 2,两个系统分别使用的是 Oracle 和 SQLServer 数据库。现需要在系统 1 的数据库中直接查询系统 2 数据库的数据。即在 Oracle 中执行 SQL 脚本可以直接查询 SQLServer 数据库中的数据。 2、Oracle 透明网关即 O .."

配置 Oracle 透明网关用以连接 SQLServer 经验总结

情景介绍

1、需求:业务中设计两个不同的系统,系统 1 和系统 2,两个系统分别使用的是 Oracle 和 SQLServer 数据库。现需要在系统 1 的数据库中直接查询系统 2 数据库的数据。即在 Oracle 中执行 SQL 脚本可以直接查询 SQLServer 数据库中的数据。

2、Oracle 透明网关即 Oracle Database Gateway,是 Oracle 数据库官方提供的一款工具,用于增强访问特定异构数据库的能力。

image.png

3、环境信息和待配置事项

Oracle、网关和 SQL Server 可以分别安装在任意主机上,只要满足可以网络互通就可以。想要在 Oracle 中直接查询 SQL Server 中的数据,需要完成以下步骤(假设 Oracle 和 SQL Server 已经安装部署完毕):

第一步:下载并安装网关;

第二步:配置网关;

第三步:配置 Oracle 数据库的 TNS 配置;

第四部:配置 SQL Server,使其能够远程连接;(若已经可以远程连接,则跳过)

第五步:登录 Oracle 并创建 DBlink,测试连接。

一、下载安装 Oracle Database Gateway

下载地址:http://download.oracle.com/otn/linux/oracle11g/R2/linux.x64_11gR2_gateways.zip

安装过程:

运行 setup.exe

欢迎页面点下一步

配置主目录页面,名称随意起,路径为网关安装路径,自由选择。下一步;

可用产品组件,选择”for SQL Server”项。下一步;

配置 SQL Server 数据库信息,分别是 SQL Server 数据库的主机地址(或主机名),实例名,数据库名;下一步;

摘要页面,显示的安装信息,没问题的话,直接点击安装。等待安装完成。

二、 配置网关信息

一共需要手工配置两个文件,分别是安装目录中的:

(注意,这两个文件是无法在原位置手工修改的,需要拷贝到其他位置如桌面,进行修改后,覆盖原文件即可)

dg4msql\admin\initdg4msql.ora :网关工具可以同时配置多个 SQL Server 数据库实例,每一个实例对应一个这样的文件,此文件的文件名的命名规则为 init + “SID”.ora 其中 SID 为网关的区别标识,可以自定义,只要能全局唯一就可以,SID 默认为 dg4msql。此文件中保存着想要跨库连接的 SQL Server 数据库连接信息。

具体配置:

image.png

network\admin\listener.ora :此文件配置这网关的监听服务信息,因为网关需要接收来自 Oracle 的访问,所以需要配置此文件以保存监听服务信息,等待被访问。

配置前,找到安装目录的 dg4msql\admin\listener.ora.sample ,这个文件是配置模板,可以参考,或直接拿来稍微修改后使用。

具体配置:

image.png

将以上信息,按照自己的情况修改后,复制文本到 network\admin\listener.ora 文件中。

到此,网关配置完毕,需要到计算机管理中开启网关监听服务。

image.png

在启动监听服务时可能会遇到这个问题:

弹窗提示:本地计算机上的 *** 服务启动停止后, 某些服务在未由其他服务或程序使用时将自动停止。

解决办法,断开网络重新连接。

三、配置 Oracle 数据库的 TNS 配置

手工修改文件:

oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora

具体是将以下内容添加到文件末尾:

image.png

具体文本在网关的安装目录文件 dg4msql\admin\tnsnames.ora.sample 中有模板格式。

四、配置 SQL Server,使其能够远程连接

打开 SQL Server 主机中的防火墙 1433 端口,并配置 SQL Server 允许其远程连接。具体不做过多介绍,可参见:

五、登录 Oracle 并创建 DBlink,测试连接

创建 DBlink:
SQL> CREATE PUBLIC DATABASE LINK dblink CONNECT TO “ 用户” IDENTIFIED BY “密码” USING 'tns_name_entry ';

在 Oracle 中执行以下脚本,测试是否可以在 Oracle 中查询 SQL Server 中的数据:

SELECT * FROM DUAL@dblink;

自己总结是为了加深印象,也许其中难免有错误,附上官方教程, 逐步按照官方教程一定可以帮助你实现跨库需求。

  • 教程
    72 引用 • 331 回帖 • 3 关注
  • Oracle

    Oracle(甲骨文)公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989 年正式进入中国市场。2013 年,甲骨文已超越 IBM,成为继 Microsoft 后全球第二大软件公司。

    92 引用 • 115 回帖 • 646 关注
  • SQLServer

    SQL Server 是由 [微软] 开发和推广的关系数据库管理系统(DBMS),它最初是由 微软、Sybase 和 Ashton-Tate 三家公司共同开发的,并于 1988 年推出了第一个 OS/2 版本。

    13 引用 • 26 回帖 • 3 关注
  • 透明网关
    1 引用
回帖   
请输入回帖内容...