分享
 
 
 

Oracle 10g + SQL SERVER 2000 透明网关设置

王朝oracle·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

前提:在安装oracle时选中安装透明网关组件(默认不选中),如果未安装可以重新选择安装此组件.

环境:Oracle 10g + SQL SERVER 2000

数据库:Oracle:ZNDATA;SQL SERVER:ZNDB

目标:在oracle下建立一个tnsname用来访问SQL SERVER的ZNDB数据库.

(1)建立ZNDB数据库在Oracle下的别名zheneng:

进入%ORACLE_HOME%\tg4msql\admin目录建立文件initzheneng.ora,里面内容如下:

HS_FDS_CONNECT_INFO="SERVER=192.168.0.197;DATABASE=ZNDB"

HS_FDS_TRACE_LEVEL=OFF

HS_FDS_RECOVERY_ACCOUNT=RECOVER

HS_FDS_RECOVERY_PWD=RECOVER

(2)建立listener:

进入%ORACLE_HOME%\network\admin修改listener.ora文件增加:

(SID_DESC =

(SID_NAME = zheneng) ###注意:要与前面建的文件名字initzheneng去掉init后一样.

(ORACLE_HOME = D:\oracle\product\10.1.0\db_1)

(PROGRAM = tg4msql)

)

(3)建立tnsnames.ora:

与(2)相同目录下修改tnsnames.ora文件增加一个TNSNAME:

ZNDB =

(DESCRIPTION =

(ADDRESS_LIST =

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

)

(CONNECT_DATA =

(SID = zheneng)

)

(HS = zheneng)

)

(4)sqlplus测试:

创建数据库连接:

sql>create database link mssqlLink connect to sa identified by sa using 'ZNDB';

sql>select * from akm@mssqlLink

如果正确的话应该显示sqlserver中的结果

参考网上文章:

不同数据库平台的互连一般称之为数据库的异构服务,现在各大数据库之间都可以实现这样的异构互连,只是各厂商的具体实现技术不一样,如:在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就可以了。下面实验数据:

------------ www.ncn.cn ------------- gototop --------------

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.

------------ www.ncn.cn ------------- gototop --------------

gototop 2003.7.25注:很多朋友问到关于透明网关的一些问题,在此加以说明如下:

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、各数据库中特殊的数据类型,需要在程序中实现转换,应尽量避免使用无法转换的数据类型。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有