前往顾页
以后地位: 主页 > 收集编程 > .Net实例教程 >

Oracle与SQL Server的互连

时候:2010-09-29 11:02来源:知行网www.zhixing123.cn 编辑:麦田守望者

不合数据库平台的互连一般称之为数据库的异构办事,现在各年夜数据库之间都可以实现如许的异构互连,只是各厂商的详细实现技术不一样,如:在SQL SERVER内里叫做LINKED SERVER,经由过程ODBC实现与别的数据库的互联。而ORACLE实现异构办事的技术叫做透明网关(Transparent Gateway),当然之前ORACLE还采取过通用连接办艺。目前ORACLE操纵透明网关可以实现和SQL SERVER、SYBASE、DB2等多种数据库的互联。

透明网关的体系布局也很简朴,在ORACLE和SQL SERVER之间利用ORACLE透明网关办事器实现互连互通,此中透明网关办事器可以与ORACLE或SQL SERVER数据库在同一台主机上,也能够是在自力的一台主机上。
下面是详细步调,如有疑问欢迎和我联系,MSN: gototop_ncn@hotmail.com。
1、在SQL SERVER数据库上建立测试账号和表
这里我用的是10.16.74.140的PUBS数据库,账号cyx,
create table t (c char(10));
2、我测试所用数据库和透明网关是在同一台机器上,在我本机:10.16.98.16,透明网关在oracle默许装置时是不装置的,所以如果你想用需求挑选这一选项。
3、装置透明网关for sql server的软件后,可以在$ORACLE_HOME下看到tg4msql目次,编辑$ORACLE_HOME/tg4msql/admin/inittg4msql.sql文件确认这一行精确:
HS_FDS_CONNECT_INFO="SERVER=10.16.74.140;DATABASE=pubs"
4、点窜透明网关server上的listener.ora,在SID_LIST中插手以下内容:
(SID_NAME = tg4msql) # SID本身定名
(ORACLE_HOME = c:)
(PROGRAM = tg4msql)
5、在oracle server上的tnsnames.ora中插手到透明网关的tnsname,内容以下:
sql2k =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.16.98.16)(PORT = 1521)) #此处HOST填的是透明网关SERVER的地点
)
(CONNECT_DATA = (SID = tg4msql) ) #此SID应和透明网关SERVER上设定的SID不异
(HS=OK)
)
6、点窜ORACLE SERVER的初始化参数,将global_names设为false,因为我们其实不利用GLOBAL NAME。然后重起数据库。
7、现在在ORACLE SERVER上建立DB LINK便可以了。下面尝试数据:
C:>sqlplus /nolog
SQL*Plus: Release 9.2.0.1.0 - Production on 礼拜三 6月 25 13:29:41 2003
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> conn sys/change_on_install as sysdba
已连接。
SQL> create user cyx identified by cyx default tablespace users;
用户已建立
SQL> grant connect to cyx;
受权成功。
SQL> grant resource to cyx;
受权成功。
SQL> conn cyx/cyx
已连接。
SQL> create database link tosql2k connect to cyx identified by cyx using
2 'sql2k';
数据库链接已建立。
SQL> select * from t@tosql2k;
c
---------
abc
aaa
bbb
cyx
gototop
ncn
11111
已挑选7行。
SQL> insert into t@tosql2k values('ncn.cn');
已建立 1 行。
SQL> commit;
提交完成。
SQL> select * from t@tosql2k;
c
----------
abc
aaa
bbb
cyx
gototop
ncn
11111
ncn.cn
已挑选8行。
------------ www.ncn.cn ------------- gototop --------------

以上示例,oracle server和透明网关server都是在同一台机器上,像在开端申明的那样,我们一样可以在其他下面oracle server中经由过程透明网关来拜候sql server的数据。下面是示例:
现在这个oracle server上增加tnsname。
------------ www.ncn.cn ------------- gototop --------------
hawk3$sqlplus cyx
SQL*Plus: Release 8.1.7.0.0 - Production on Wed Jun 25 14:00:34 2003
(c) Copyright 2000 Oracle Corporation. All rights reserved.

Enter password:
Connected to:
Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production
SQL> create database link hawk3_sql2k connect to cyx identified by cyx
2 using 'sql2k';
Database link created.
SQL> select * from t@hawk3_sql2k;
c
--------------------
abc
aaa
bbb
cyx
gototop
ncn
11111
ncn.cn
8 rows selected.
很多朋友问到关于透明网关的一些问题,在此加以申明以下:
1、Oracle For SQL Server的透明网关在UNIX下无法实现,目前只支撑WIN; 启事很简朴,SQL Server本身不支撑UNIX,所以Oracle也无法直接在UNIX下拜候SQL Server。
2、Oracle For别的数据库的透明网关,如SYBASE等有UNIX本版本的数据库在UNIX可以实现。
3、Oracle透明网关软件在Oracle 8i时是需求费钱另买的,年夜约1万$;到Oracle 9i时是作为数据库的一个组件免费公布的。装置时在组件种挑选便可。
4、针对我们的实际利用,如果有需求实现Oracle 到SQL Server的互连,我们需求别的用一台WIN下的Oracle 9i来做透明网关办事器,别的UNIX下的Oracle经由过程这个透明网关来拜候SQL Server。
5、不合数据库间的数据措置需利用标准SQL来实现。
6、各数据库中特别的数据范例,需求在法度中实现转换,应尽可能避免利用无法转换的数据范例。
 

------分开线----------------------------
标签(Tag):数据库 SQLServer Sqlserver2008 SQLServer2005
------分开线----------------------------
保举内容
猜你感兴趣