ITPub博客

首页 > 数据库 > Oracle > 透明网关(Oracle To SQLServer2000)的设置步骤

透明网关(Oracle To SQLServer2000)的设置步骤

原创 Oracle 作者:QDZHT 时间:2007-04-27 09:06:20 0 删除 编辑

最近同事问我在Oracle中怎样访问SQL Server2000的数据,做了个测试,将操作步骤发给大家共享。

不知道如何上传文件,只能列举在这里。图片不能显示。

1、 数据环境

Oracle9i 9.2.0.1+Win2003 Server:172.16.47.9

透明网关:172.16.47.9

SQL Server 2000 + Win2003 Server:172.16.48.5 数据库为test

SQLServer Client:172.16.47.9

2、 安装

说明:透明网关 for MS SQL Server的版本必须安装在Windows平台下。Oracle9i安装光盘自带该组件,但Oracle8i需另购买。Oracle 9i安装时Transparent Gateway默认是不安装的,要想安装该组件,需在安装Oracle9i的时候选择自定义安装,然后在安装产品列表中选择Oracle Transparent Gateway->Transparent Gateway for MS SQL Server.

Oracle数据库和Oracle透明网关可以在不同的服务器上。

在安装完透明网关后,可以在$ORACLE_HOME(9i安装目录)下找到tg4msql目录

4、 修改%ORACLE_HOME%tg4msqladmininittg4msql.ora,或重新建一个文件如initsql2k.ora,此时的sid_name为sql2k。

一般指定后自动生成

HS_FDS_CONNECT_INFO="SERVER=172.16.48.5;DATABASE=test"

HS_FDS_TRACE_LEVEL=OFF

HS_FDS_RECOVERY_ACCOUNT=RECOVER

HS_FDS_RECOVERY_PWD=RECOVER

5、 修改%ORACLE_HOME%networkadminlistener.ora

我改后的Listener.ora

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))

)

(ADDRESS_LIST =

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

)

)

)

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(SID_NAME = PLSExtProc)

(ORACLE_HOME = F:Oracle)

(PROGRAM = extproc)

)

(SID_DESC =

(GLOBAL_DBNAME = Ora9iDB)

(ORACLE_HOME = F:Oracle)

(SID_NAME = Ora9iDB)

)

(SID_DESC =

(GLOBAL_DBNAME = ibank)

(ORACLE_HOME = F:Oracle)

(SID_NAME = ibank)

)

(SID_DESC =

(SID_NAME=tg4msql)#可以改为sql2k

(ORACLE_HOME = F:Oracle)

(PROGRAM=tg4msql)

)

)

6、 修改F:Oraclenetworkadmintnsnames.ora

Sql2k =

(DESCRIPTION =

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

#这里的HOST必须填网关所在Server地址

(CONNECT_DATA =(SID = tg4msql))

#此SID与透明网关所改的listener.ora中的SID_NAME对应

(HS = OK)

#这很重要,告诉Oracle Server要调用异构服务模块来处理

)

7、 创建Database Link

Create Database Link sql2k connect to sa identified by sa using ‘sql2k’

8、 测试

Select * from t1@sql2k

如果提示不能连接,请查看sqlserver是否使用命名管道方式连接的,如果是,则使用TCP协议不行。可以通过ODBC的客户端参数设置中,使用TCP/IP协议,端口设为1433测试,如果能够连接成功,一般不会出现问题。

如果使用命名管道连接,将会连接不成功。

9、 其他:

设置Oracle数据库参数global_names=false

不要求建立的数据库链接和目的数据库的全局名称一致。

l Oracle For SQL Server的透明网关在UNIX下无法实现,目前只支持WIN; 原因很简单,SQL Server本身不支持UNIX,所以Oracle也无法直接在UNIX下访问SQL Server。

l Oracle For其它数据库的透明网关,如SYBASE等有UNIX本版本的数据库在UNIX可以实现。

l Oracle透明网关软件在Oracle 8i时是需要花钱另买的,大约1万$;到Oracle 9i时是作为数据库的一个组件免费发布的。安装时在组件种选择即可。

l 针对我们的实际应用,如果有需要实现Oracle 到SQL Server的互连,我们需要另外用一台WIN下的Oracle 9i来做透明网关服务器,其它UNIX下的Oracle通过这个透明网关来访问SQL Server。

l 不同数据库间的数据处理需使用标准SQL来实现。

l 各数据库中特殊的数据类型,需要在程序中实现转换,应尽量避免使用无法转换的数据类型。

如果不使用透明网关,还可以使用odbc或oledb连接Sqlserver。需要在hs目录下配置,需要进一步测试。

[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7320672/viewspace-912560/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: Exp升级问题
请登录后发表评论 登录
全部评论
  • 博文量
    9
  • 访问量
    55186