Oracle中使用透明网关链接到Sqlserver

在最近项目中需要从Oracle中访问SQL Server数据库, 自然想到了透明网关. 因为Oracle数据库是Linux上的, 而Linux上的Oracle9i不包括连接到SQL Server的透明网关.就在一台单独的Windows服务器上安装了透明网关用做Oracle访问SQL Server的桥梁.

环境如下:

Oracle Database Server:Linux + oracle 9.2.0.4 IP:10.194.129.197

Transparent Gateway:Windows 2003 server IP: 10.194.129.225

MS SQL Server:Windows 2003 server + SQL Server 2005 IP: 10.194.129.225

1、 Transparent Gateway for SQL Server安装

从Oracle 9i数据库安装光盘setup.exe安装,选择安装客户端

安装类型选择:管理员

安装完客户端后,重新运行setup.exe,安装产品选择Oracle 9i Database 9.2.0.1.0, 安装类型选择"自定义",安装组件选择Oracle Net Services和Oracle Transparent Gateways, 并在此项下选择Oracle Transparent Gateway for Microsoft SQL Server, 安装过程中可以不设置连接到SQL Server的信息.如下图所示:

以下的IP地址及数据库以实际环境为准

2、 编辑%ORACLE_HOME%\tg4msql\admin\init%ORACLE_SID%.ora, 该文件包含了TG for SQL Server的配置信息, 其中%ORACLE_SID%是给TG的"SID", 默认为tg4msql. 修改文件中的行

HS_FDS_CONNECT_INFO="SERVER=10.194.129.225;DATABASE=185life"

其中SERVER后为SQL Server所在的服务器名称或ip地址,Database为连接到的数据库名称.

当然,如果在SQL Server服务器上,有两个sql server实例,则使用‘服务器名"实例名’的方式设置上面的SERVER值,如:HS_FDS_CONNECT_INFO="SERVER=ZZL\MSSQLSERVER;DATABASE=MSDB"

3、 编辑%ORACLE_HOME%"network"admin"listener.ora, 编辑对应listener的SID_LIST

SID_LIST_LISTENER=

(SID_LIST=

(SID_DESC=

(SID_NAME=%ORACLE_SID%)

(ORACLE_HOME=oracle_home_directory)

(PROGRAM=tg4msql)

)

)

例如:

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(SID_NAME = tg4msql)

(ORACLE_HOME = d:\oracle\ora92) #oracle的主目录

(PROGRAM = tg4msql)

)

)

其中%ORACLE_SID%必须为第二布中设置的SID, 默认值为tg4msql. 修改listener.ora文件后需重启listener使修改生效.如果没有listener.ora文件,请用Net Configuration Assistant或Net Manager新建一个LISTENER.

以上操作都是在Transparent Gateway所在机器上。

4、 在Oracle服务器上:编辑需要连接到透明网关的Oracle Server的$ORACLE_HOME\network\admin\tnsnames.ora, 例如:

TG4MSQL =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 10.194.129.225)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = tg4msql)

)

(HS = OK)

)

HOST指向Transparent Gateway所在的机器的IP,Service_name为第3步中的SID_NAME

使用tnsping测试服务名是否连通,命令:tnsping tg4msql。如果不通,请检查防火墙及网络配置。

5、 在Oracle数据库中建立连接, 指向TG for SQL Server.

CREATE DATABASE LINK tg4msql CONNECT TO "user" IDENTIFIED BY "password" USING 'tg4msql';

其中tg4msql是tnsnames中建立的连接字符串.

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_ZZL

错误原因:

在CREATE    DATABASE LINK LINK_ZZL的连接字符串中,ms sql server的用户名和密码必须小写,而且要加双引号

6、确保CATHS.sql已被运行。

以SYS用户连接上去,查看有没有SYS.HS_FDS_CLASS,如果没有,运行$ORACLE_HOME/RDBMS"ADMIN"CATHS.SQL

6、 测试, 如运行select * from emp@tg4msql等.
访问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_ZZL

7、BUG解决。

如果在第6步出现以下错误提示,则以SYS运行

exec dbms_hs.replace_base_caps(531, 531, 'First/Last function');

ERROR at line 1:

ORA-28522: error initializing heterogeneous capabilities

ORA-28522: error initializing heterogeneous capabilities

ORA-28559: FDS_CLASS_NAME is <GTW>9.2.0.5.0_128, FDS_INST_NAME is <link>

ORA-02063: preceding 3 lines from %s

ORA-00604: error occurred at recursive SQL level 1

ORA-24274: no row exists in the HS$_BASE_CAPS table for these parameters

ORA-06512: at "SYS.DBMS_SYS_ERROR", line 86

ORA-06512: at "SYS.DBMS_HS_UTL", line 431

ORA-06512: at "SYS.DBMS_HS_CHK", line 51

ORA-06512: at "SYS.DBMS_HS_UTL", line 48

ORA-06512: at "SYS.DBMS_HS", line 38

ORA-06512: at line 1

Oracle中使用透明网关链接到Sqlserver[Z]的更多相关文章

  1. Oracle中使用透明网关链接到Sqlserver(转)

    测试环境介绍 1.ORACLEServer   Database version:10.2.0 IP:192.168.1.5 ORACLE_HOME:D:\oracle\product\10.2.0\ ...

  2. SharePoint 2010 中创建超链接到Pop-Up对话框

    SharePoint 2010 中创建超链接到Pop-Up对话框         SharePoint 2010 推出了新式的带有阴影的弹出对话框,你感觉怎么样?我感觉倒是挺酷的.这样少打开了一个页面 ...

  3. SSH开发中 使用超链接到action 其excute方法会被执行两次 actual row count: 0; expected: 1

    由于执行两次excute,所以在做删除操作的时候会出现 Batch update returned unexpected row count from update [0]; actual row c ...

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

    一.情景介绍   业务中设计两个不同的系统,系统1和系统2,两个系统分别使用的是Oracle和SQLServer数据库.现需要在系统1的数据库中直接查询系统2数据库的数据.即在Oracle中执行SQL ...

  5. sqlserver和oracle中对全半角的转换

    oracle中对全半角的转换 to_single_byte(c)转换成半角 to_multi_byte(c)转换成全角 SELECT To_single_byte('881898?71') FROM ...

  6. 如何在Oracle中 查询一个表被其他数据库对象引用[z]

    这两天老大让我再oracle中把要替换的表被其他对象引用之处找出来,整理一份表,接到这个任务,我是一脸懵逼,怎么找?大海捞针么?问同事.查资料,自己研究,最后整理一下仅供大家参考,同时以备将来回顾.本 ...

  7. 转 update关联更新在sqlserver和oracle中的实现

    sqlserver和oracle中实现update关联更新的语法不同,都可以通过inline view(内嵌视图)来实现,总的来说sqlserver更简单些. 测试例子如下: create table ...

  8. ABP框架使用Oracle数据库,并实现从SQLServer中进行数据迁移的处理

    ABP框架的数据访问底层是基于EFCore(Entity Framework Core)的,是微软标志性且成熟的ORM,因此它本身是支持多种主流数据库MySQL,SqlServer,Oracle,SQ ...

  9. oracle 通过透明网关gateway 连接sqlserver

    真实配置如下: 1.安装gateway 在一台单独的机器上,ip:172.30.40.29 2.配置listener.ora如下: 路径:  D:\product\11.2.0\tg_1\NETWOR ...

随机推荐

  1. RPATH与RUNPATH

    RPATH与RUNPATH 时间 2011-11-01 21:46:44 Qt Labs China 原文  http://labs.qt.nokia.com.cn/2011/11/01/rpath- ...

  2. 自己改写了一个图片局部放大的jquery插件页面里面的html代码少了,同一个页面可以调用多个

    自己改写了一个图片局部放大的jquery插件页面里面的html代码少了,同一个页面可以调用多个,兼容ie8以上浏览器,别忘了引用jquery,我用的jquery/1.11.0/其他版本没有测试,另外需 ...

  3. Centos升级gcc4.4.7升级gcc4.8手记

    本博客来自:http://www.mudbest.com/centos%E5%8D%87%E7%BA%A7gcc4-4-7%E5%8D%87%E7%BA%A7gcc4-8%E6%89%8B%E8%AE ...

  4. UVA 714 Copying Books

    题意: 要抄N本书,编号为1,2,3...N, 每本书有1<=x<=10000000页, 把这些书分配给K个抄写员,要求分配给某个抄写员的那些书的编号必须是连续的.每个抄写员的速度是相同的 ...

  5. UVA 11175 From D to E and Back

    题意: 给一个n个结点的有向图D,可以构造一个图E:D的每条边对应E的一个结点(例如,若D有一条边uv,则E有个结点的名字叫uv),对于D的两条边uv和vw,E中的两个结点uv和vw之间连一条有向边. ...

  6. WCF Test Client

    WCF测试客户端(WCF Test Client)是一个用来测试WCF服务程序的调试工具,能够使开发WCF服务更加方便. 在Visual Studio之外打开WCF测试客户端有两种方法:第一种方法是到 ...

  7. xml、txt、config的一些基本用法

    先来测试一下xml的读取好了创建了一个student.xml的文件 <?xml version="1.0" encoding="UTF-8"?> & ...

  8. UIButton 文档翻译(持续更新)

    UIButton 文档翻译 继承 UIControl; UIView; UIResponder; NSObject 协议 UIFocusEnvironment,UIAppearanceContaine ...

  9. hdu1281棋盘游戏

    Problem Description 小希和Gardon在玩一个游戏:对一个N*M的棋盘,在格子里放尽量多的一些国际象棋里面的“车”,并且使得他们不能互相攻击,这当然很简单,但是Gardon限制了只 ...

  10. 关于ASP.Net的一些概念 转载

    ①理解 .NET Platform Standard 作者:田园里的蟋蟀 http://www.cnblogs.com/xishuai/archive/2016/05/24/understand-do ...