Oracle与SQL Server的互连

2016-02-19 15:20 4 1 收藏

今天图老师小编要向大家分享个Oracle与SQL Server的互连教程,过程简单易学,相信聪明的你一定能轻松get!

【 tulaoshi.com - 编程语言 】

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  现在这个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.

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

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

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

来源:http://www.tulaoshi.com/n/20160219/1609415.html

延伸阅读
Oracle,SQL Server,MySQL的自增变量设置: 1、MySQL的自增变量是比较好记的,使用AUTO_INCREMENT关键字,如果知道英文的就容易记忆了,如下创建一个带有自增变理的表。 createtabletest(idintAUTO_INCREMENT primarykeynotnull,namevarchar(50)); 注释:此处的id一定要申明为主键,否则会报错。 2、SQl Server使...
标签: Web开发
如果你正在营造微软 .NET 网络而后端运行着 Oracle 数据库,那么你应该把后端迁移到 SQL Server。这一问题的核心不在于比较数据库的性能而是寻求最适合你的工具。在 .NET 体系结构下要回答这两个问题,答案只有一个,那就是 .NET Server。在这篇文章里,我们首先探究下为什么你的网络中存在 Oracle 服务器,然后讨论如何将其迁移到 SQL Ser...
数据库并行访问,也就是两个或两以上用户同时访问同一数据,这也是数据库引擎如何设计和实现适度反应所面临的最大问题。设计优良、性能卓越的数据库引擎可以轻松地同时为成千上万的用户服务。而“底气不足”的数据库系统随着更多的用户同时访问系统将大大降低其性能。最糟糕的情况下甚至可能导致系统的崩溃。 当然,并行访问是任何数...
如何在Oracle里设置访问多个SQL Server数据库?假设我们要在ORACLE里同时能访问SQL Server里默认的pubs和Northwind两个数据库。 1、在安装了ORACLE9i Standard Edition或者ORACLE9i Enterprise Edition的windows机器上(IP:192.168.0.2), 产品要选了透明网关(Oracle Transparent Gateway)里访问Microsoft SQL Server数据库 ...
标签: ASP
<HTML <HEAD <TITLE数据库操作</TITLE <meta http-equiv="Content-Type" content="text/html; charset=gb2312" </HEAD <BODY <form method="post" name=myform <%if action="restore" then%<INPUT TYPE="hidden" name="action" value="resto...

经验教程

877

收藏

15
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部