您的位置:首页 > 数据库 > Oracle

oracle 10g透明网关访问sqlserver

2012-02-01 16:59 483 查看
oracle 10g透明网关访问sqlserver2000 收藏

一、环境如下:

ORACLE 10g 安装在:192.168.0.250 的window2003 server

(版本:Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production)

SqlServer 2000安装在:192.168.0.233 的window2003 server

二、下载透明网关(GATEWAY)

10g下,透明网管是一个单独组件,可以到oracle官方网站下载

http://www.oracle.com/technology/software/products/database/oracle10g/htdocs/10201winsoft.html

这个安装包有300m。

可惜只找到秀明网关版本:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 32bit Production

三、安装透明网关

将透明网关安装在sqlserver服务器上,点击setup.exe,启动安装界面,安装oracle transparent gateway for microsoft sql server;下一步,输入sqlserver地址和sqlserver 数据库名,这里可以输入正确的,也可以随便输入,或者留空,现安装完成后再配置。安装完后,会弹出配置监听界面,点击取消即可。整个过程安装在点类似DB安装或client安装。


四、配置透明网关参数文件

找到透明网关路径:D:/oracle/product/10.2.0/tg_1/tg4msql/admin

安装透明网关时会生成一个默认参数文件:inittg4msql.ora,它的sid是tg4mssql,可以使用这个文件,也可以新建一个文件。现在COPY一份命名为initUFDATA_002_2009.ora,名字最好与SQL SERVER数据库一致,且要注意格式:init<sid>.ora,可以理解为oracle的参数文件,现在编辑参数文件:

# This is a sample agent init file that contains the HS parameters that are

# needed for the Transparent Gateway for SQL Server


#

# HS init parameters

#

HS_FDS_CONNECT_INFO="SERVER=192.168.0.233;DATABASE=UFDATA_002_2009"

HS_FDS_TRACE_LEVEL=OFF

HS_FDS_RECOVERY_ACCOUNT=RECOVER

HS_FDS_RECOVERY_PWD=RECOVER

HS_FDS_CONNECT_INFO设置有多种格式,如:

HS_FDS_CONNECT_INFO=server_name.db_name,但这种写法server_name不能为IP,且端口必须为默认的1433,如:

在安装透明网关如果设置服务器和数据库即为上面格式。


五、透明网关服务器上配置监听

找到listener文件所在路径

D:/oracle/product/10.2.0/tg_1/NETWORK/ADMIN/listener.ora,这些配置与DB配置类似

# listener.ora Network Configuration File: d:/oracle/product/10.2.0/db_1/NETWORK/ADMIN/listener.ora

# Generated by Oracle configuration tools.


SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(SID_NAME = PLSExtProc)

(ORACLE_HOME = d:/oracle/product/10.2.0/db_1)

(PROGRAM = extproc)

)

(SID_DESC=

(SID_NAME=UFDATA_002_2009)

(ORACLE_HOME=D:/oracle/product/10.2.0/tg_1)

(PROGRAM=tg4msql)

)

)


SID_Name与参数文件的名称initUFDATA_002_2009.ora相对应,且PROGRAMN要为tg4msql

六、启动监听

启动监听和DB配置一样,

在CMD命令符,输入lsnrctl start

C:/Documents and Settings/rocky>lsnrctl start


LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 04-6月 -2009 21:5

7:56


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

启动tnslsnr: 请稍候...

TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production

系统参数文件为D:/oracle/product/10.2.0/tg_1/network/admin/listener.ora

写入D:/oracle/product/10.2.0/tg_1/network/log/listener.log的日志信息

监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=fcserver.winbo4x4.com)(PORT=1521

)))


正在连接到 (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))

LISTENER 的 STATUS

------------------------

别名 LISTENER

版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ

ction

启动日期 04-6月 -2009 21:57:58

正常运行时间 0 天 0 小时 0 分 1 秒

跟踪级别 off

安全性 ON: Local OS Authentication

SNMP OFF

监听程序参数文件 D:/oracle/product/10.2.0/tg_1/network/admin/listener.o

ra

监听程序日志文件 D:/oracle/product/10.2.0/tg_1/network/log/listener.log


监听端点概要...

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=fcserver.winbo4x4.com)(PORT=1521)))

服务摘要..

服务 "PLSExtProc" 包含 1 个例程。

例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

服务 "UFDATA_002_2009" 包含 1 个例程。

例程 "UFDATA_002_2009", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

命令执行成功

可以看到UFDATA_002_2009注册了静态监听服务

在服务生成OracleOraTg10g_home1TNSListener的服务(如果透明网关在DB数据库机器上,则有N多个Listener服务,可以停止其它Listener,直接在透明Listener即可)


查看Listener状态:

C:/Documents and Settings/rocky>lsnrctl status


LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 04-6月 -2009 21:5

8:06


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

正在连接到 (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))

LISTENER 的 STATUS

------------------------

别名 LISTENER

版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ

ction

启动日期 04-6月 -2009 21:57:58

正常运行时间 0 天 0 小时 0 分 9 秒

跟踪级别 off

安全性 ON: Local OS Authentication

SNMP OFF

监听程序参数文件 D:/oracle/product/10.2.0/tg_1/network/admin/listener.o

ra

监听程序日志文件 D:/oracle/product/10.2.0/tg_1/network/log/listener.log


监听端点概要...

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=fcserver.winbo4x4.com)(PORT=1521)))

服务摘要..

服务 "PLSExtProc" 包含 1 个例程。

例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

服务 "UFDATA_002_2009" 包含 1 个例程。

例程 "UFDATA_002_2009", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

命令执行成功

七、配置tnsname.ora

D:/oracle/product/10.2.0/tg_1/NETWORK/ADMIN目录下配置tnsnames.ora文件,如下:


UFDATA_002_2009=

(DESCRIPTION =

(ADDRESS_LIST =

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

)

(CONNECT_DATA =

(SID=UFDATA_002_2009)

)

(HS = OK)

)

注意HS=OK,这主要由于是用于Oracle server调用异构服务器进行处理必须的。

现在使用tnsping测试:

C:/Documents and Settings/rocky>tnsping ufdata_002_2009


TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 05-6月 -

2009 08:16:30

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

已使用的参数文件:

D:/oracle/product/10.2.0/tg_1/network/admin/sqlnet.ora

已使用 TNSNAMES 适配器来解析别名

Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)

(HOST = 192.168.0.233)(PORT = 1521))) (CONNECT_DATA = (SID=UFDATA_002_2009)) (HS

= OK))

OK (20 毫秒)

一切正常,由透明网关必须通过其它ORACLE库进行访问其它库(dblink),该步骤可以省略,这里使用tnsping测试。

八、创建访问SQL SERVER访问账号

由于使用DBLINK不能为空密码,为了使用数据安全性,在192.168.0.233服务器创建一个登录账号为oracletosql,密码为oracletosql,并设置权限访问UFDATA_002_2009数据库权限。

九、Oralce 创建DBLINK


create public database link UFDATA2009 connect to "oracletosql" identified by "oracletosql" using


'(DESCRIPTION =


(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.233)(PORT=1521))

(CONNECT_DATA=(SID=UFDATA_002_2009)

)

(HS = ok))';

注意DESCRIPTION的HS与tnsname.ora中的HS=OK。

10、测试连接并使用SQL

SQL>Select * From DUAL@UFDATA2009;


SQL>


DUMMY

------

X

连接正常

由于ORACLE 数据库采用PL-SQL而SQL SERVER采用T-SQL且异构数据问题,即使用采用标准SQL仍可能无法正常访问。为了使用ORACLE 方便使用SQL SERVER的数据

现进行以下构建:

建立表视图,屏蔽@UFDATA2009 DBLINK连接,重要的是在PLSQL Developer可以使用智能感知功能。

Create Or Replace View DJ_UFDATA_HR_SHOW


As


Select *


from
hr_v_HR31_show@UFDATA2009


With Read Only;

构建标准ORACLE访问视图DJ_UFDATA_HR,在构建DJ_UFDATA_HR视图大部分使用智能感知形式得出字段,否则即使用写的字段名和智能感知一样也可能出错(无效字段或索引等等错误信息),且必须使用AS 命别名为ORACLE方便访问。

Create Or Replace View DJ_UFDATA_HR

As


select "HR"."cPsn_Num" As cPsn_Num,

"HR"."cPsn_Name" As cPsn_Name,

"HR"."cDept_Name" As cDept_Name,

"HR"."cDept_num" As cDept_num,

"HR"."cPsnProperty" As cPsnProperty

from DJ_UFDATA_HR_SHOW "HR"

With Read Only;

总结:

在进行配置透明网关访问SQL SERVER时,整个过程的SID(DBLINK命名随意)最好命名与SQL SERVER数据库一致,如UFDATA_002_2009,否则很容易出现以下错误信息:

ORA-28545: error diagnosed by Net8 when connecting to an agent


Unable to retrieve text of NETWORK/NCR message 65535

ORA-02063: preceding 2 lines from UFDATA2009

另外在DBLINK访问用户账号最好使用小写且使用””双引号,如” oracletosql” ,这样可以SQL SERVER2000和SQL SERVER2005访问,另外就是ORACLE 方便访问SQL SERVER的SQL程序。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/rockywu/archive/2009/06/04/4242883.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: