ITPub博客

首页 > 数据库 > SQL Server > SQL SERVER与ORACLE的数据共享

SQL SERVER与ORACLE的数据共享

原创 SQL Server 作者:guyeh 时间:2007-11-12 12:58:27 0 删除 编辑

SQL SERVERORACLE的数据共享

[@more@]

在当前的应用中SQL SERVER数据库服务器和ORACLE数据库服务器占据了极大的份额,在中小型应用中由于SQL SERVERWINDOWS的良好匹配,管理、使用简便,而使得在这个领域的应用极其广泛如企事业人事管理系统、考勤系统、小型收费系统等;而ORACLE一直以来以其强大的数据库管理、数据安全、数据库完整性检查、空间管理、数据备份与恢复等功能,以及其与UNIX/LINUX平台的良好间日,使得在大型应用中具有不可动摇的地位,如学校一卡通系统、大型数据交换平台、金融管理系统等。

随着信息化的发展,信息交换平台的建立在许多企事业单位变的迫切重要。而由于各种历史的原因当前的系统集成主要是整合现有的应用系统实现数据共享,而当前的应用系统更是SQL SERVERORACLESYBASELOTUS等等数据库共存的局面,为此实现他们之间的数据共享与交换是必不可少的过程。下面介绍一种通过SQL SERVERORACLE数据库服务器自身携带的工具实现他们之间的数据共享交换的方法,其他数据库系统也有类似的工具可以轻松实现我们的需求。

一、系统实现方案:

1、 ORACLE共享SQL SERVER的数据:ORACLE自身为需要访问异类数据库的用户提供了一个称为“透明网关”的工具,默认不安装。它除了提供针对SQL SERVER的外还有针对SYBASEDB2等的透明网关服务,安装此组件并进行相关的配置即可达到我们的要求。

需要说明的是由于SQL SERVER不支持UNIX/LNIUX平台,所以ORACLE FOR UNIX/LINUX版本不支持此功能。所以如果ORACLE服务器是安装在UNIX/LNIUX平台上的则透明网关需要安装在另外一台WINDOWS平台的电脑上。

2、 SQL SERVER访问ORACLE则相对较为简单一些,可以通过配置SQL SERVER链接服务器的方式完成。SQL SERVER的链接服务器的一个主要功能即是对整个企业内的异类数据源执行分布式查询、更新、命令和事务。所以我们利用它来完成我们的需求。

二、平台:

ORACLE数据库服务器:oracle 9i+lniux dc4.1(IP:192.168.0.2)

SQL SERVER 数据库服务器:windows 2000 server+sql server 2000(IP:192.168.0.3)

ORACLE网关服务器:windows 2000 +oracle 9i+sql server 2000(安装类型选择“仅连接”)(IP:192.168.0.4)

三、系统实现完全配置

1ORACLE通过透明网关实现访问SQL SERVER中的数据

1)、安装ORACLE数据库服务器和SQL SERVER数据库服务器(包括操作系统和数据库软件);

2)、安装ORACLE网关服务器。(此处仅介绍ORACLE网关的安装,其他安装请参考相关文档)ORACLE的安装选择透明网关(Oracle Transparent Gateway)产品。如图所示

透明网关安装好了以后会在Oracle主目录下生成一个tg4msql文件夹。

3)、安装ORACLE网关服务器的SQL SERVER部分。只需在安装时选择“仅连接”即可,其他可参考SQL SERVER的安装文档。这一步很重要,如果不安装ORACLE透明网关将不能生效,安装完后winntsystem32下有ntwdblib.dll其作用是提供访问SQL SERVER DB_LIBARAY

4)、配置具体的透明网关配置文件。此配置在网关服务器(192.168.0.4)

$ORACLE9I_HOMEtg4msqladmin下新建文件initpubs.ora,(也可以直接在inittg4msql.ora中修改)添加以下内容:

HS_FDS_CONNECT_INFO="SERVER=192.168.0.3;DATABASE=pubs"

HS_DB_NAME=pubs

HS_FDS_TRACE_LEVEL=OFF

HS_FDS_RECOVERY_ACCOUNT=RECOVER

HS_FDS_RECOVERY_PWD=RECOVER

5)、配置Listener.ora增加如图黑体部分内容,如果访问多个数据库,则不同的数据库使用不同的SID_NAME即可(如图即是访问SQL SERVER中的PUBS数据库)。PROGRAM=tg4msql不能更改。此配置在网关服务器(192.168.0.4)

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(SID_NAME = PLSExtProc)

(ORACLE_HOME = C:oracleora92)

(PROGRAM = extproc)

)

(SID_DESC =

(GLOBAL_DBNAME = jw)

(ORACLE_HOME = C:oracleora92)

(SID_NAME = jw)

)

(SID_DESC=

(SID_NAME=pubs)

(ORACLE_HOME=C:oracleora92)

(PROGRAM=tg4msql)

)

)

配置完毕需要重启ORACLETNSListener服务。

6)、配置tnsnames.ora,此配置在ORACLE服务器上完成(192.168.0.2)增加以下内容

pubs = /*可以随便取,建议和数据库名相同以方便识别*/

(DESCRIPTION =

(ADDRESS_LIST =

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

) /*HOST必须是网关的IP或主机名*/

(CONNECT_DATA =

(SID = pubs) /*必须和Listener.ora中的SID_NAME相同*/

)

(HS=ok) /*必须加上此行*/

)

在命令行输入tnsping pubs 出现以下提示说明配置成功

C:Documents and SettingsAdministrator>tnsping pubs

TNS Ping Utility for 32-bit Windows: Version 9.2.0.1.0 - Production on 04-10-2

005 12:00:27

Copyright (c) 1997 Oracle Corporation. All rights reserved.

已使用的参数文件:

C:oracleora92networkadminsqlnet.ora

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

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

(HOST = 192.168.0.130)(PORT = 1521))) (CONNECT_DATA = (SID = pubs)) (HS=pubs))

OK10毫秒)

7)、设置数据库参数global_names=false。此配置在ORACLE服务器上完成(192.168.0.2)。

设置global_names=false不要求建立的数据库链接和目的数据库的全局名称一致。global_names=true则要求。

alter system set global_names=false;

8)、建立公有的数据库链接。此配置在ORACLE服务器上完成(192.168.0.2)。

create public database link pubs connect to sa

identified by sa1234

using ‘pubs’; /* 必须有单引号 */

其中saSQL SERVER登陆用户名,sa1234为其密码,因为ORACLE不允许全数字的密码格式而SQL SERVER允许,所以如果有这种情况就要修改sa密码,或者增加一个满足要求的用户,修改密码方法如下:

SQL SERVER的企业管理器中选择“安全性/登陆/sa,右击选择属性修改下图的密码框即可。

添加用户的方法如下:

在如下图所示的界面右击“登陆”,选择“新建登陆”,

打开如下所示界面,输入登陆名称,密码,设置服务器角色等,确认即可。

9)、访问SQL Server下数据库里的数据(192.168.0.2)。

select * from stores@pubs;

注意:ORACLE访问SQL Server的数据库链接时,用select 的时候字段名是用双引号引起来的。

select "zip" from stores@pubs;

2、 SQL SERVER通过链接服务器访问ORACLE数据库

此功能的实现需要在SQL SERVER服务器上安装ORACLE客户端,以连接ORACLE服务器。因而在此设置中ORACLE服务器不需要了。

1)、安装ORACLE数据库服务器和SQL SERVER数据库服务器(包括操作系统和数据库软件);

2)、在SQL SERVER服务器中安装ORACLE客户端;

在此需要说明的是SQL SERVER的文档中说安装ORACLE客户端就可以,但是在实际安装中客户端需要运行的几个ORACLE客户端注册表文件老是不能安装上,所以我选择的是安装服务器端,各位可以自己测试安装ORACLE客户端。

需要的几个注册表文件存在于C:Program FilesCommon FilesSystem FilesOLE DB 中,如果ORACLE安装完后此目录中没有mtxoci81x_win2k.reg文件,此功能将不能成功实现。

3)、打开SQL SERVER查询分析器并登陆;

4)、在编辑窗口运行下列SQL语句,执行 sp_addlinkedserver 创建链接服务器;

exec sp_addlinkedserver

'urp_server', /* 建立的链接服务器名 */

'oracle', /* 固定 */

'msdaora', /* 固定 */

'urp' /* ORACLE实例别名 */

5)、在编辑窗口运行下列SQL语句,使用 sp_addlinkedsrvlogin 创建从 SQL Server 登录到 Oracle 登录的登录映射;

exec sp_addlinkedsrvlogin

'urp_server', /* 已建立的链接服务器名 */

false, /* 固定 */

null, /*为每个登陆SQL SERVER的用户使用此链接服务器,否则写用户名 */

'THNSV2', / * ORACLE用户名 */

'THNSV2_456' /*ORACLE用户密码 */

如此则在SQL SERVER中就可以访问ORACLE的数据了。

建立的链接服务器可以在企业管理器中看见,如图所示

6)、SQL SERVER中访问ORACLE数据

Select * from urp_serever..THNSV2.TABLE

说明:数据库的格式必须是链接服务器名..ORACLE用户名.表名.

3、 补充说明

ORACLE访问SQL SERVER的透明网关组件在8i时是需要另外购买的,而9i是随WINDOWS版携带的。而SQL SERVER访问ORACLE的方式比较多,链接服务器只是其中一种,有兴趣的朋友可以参阅相关文档实现。

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

上一篇: solaris9网络安装
请登录后发表评论 登录
全部评论

注册时间:2007-12-29

  • 博文量
    61
  • 访问量
    443209