ITPub博客

首页 > Linux操作系统 > Linux操作系统 > [zt] Oracle与SQL Server的互连

[zt] Oracle与SQL Server的互连

原创 Linux操作系统 作者:tolywang 时间:2009-05-08 10:09:53 0 删除 编辑

作者:gototop    
  -------------------------------------------------------------------------  
   
  另一篇  
  http://www.csdn.net/develop/author/columnAuthor/hochihyi/Article/SqlServer/002.htm  
  -----------------------------------------------------------------------------------  
   
          不同数据库平台的互连一般称之为数据库的异构服务,现在各大数据库之间都可以实现这样的异构互连,只是各厂商的具体实现技术不一样,如:在SQL   SERVER里面叫做LINKED   SERVER,通过ODBC实现与其它数据库的互联。  
   
          而ORACLE实现异构服务的技术叫做透明网关(Transparent   Gateway),当然之前ORACLE还采用过通用连接技术。目前ORACLE利用透明网关可以实现和SQL   SERVER、SYBASE、DB2等多种数据库的互联。 Oracle   For   SQL   Server的透明网关在UNIX下无法实现,目前只支持WIN  
    
           透明网关的体系结构也很简单,在ORACLE和SQL   SERVER之间使用ORACLE透明网关服务器实现互连互通,其中透明网关服务器可以与ORACLE或SQL   SERVER数据库在同一台主机上,也可以是在独立的一台主机上。  
   
  下面是具体步骤:

    
  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就可以了。下面实验数据:  
   
  ------------   http://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行。  
   
  ------------   http://www.ncn.cn/   -------------   gototop   --------------  
   
  以上示例,oracle   server和透明网关server都是在同一台机器上,像在开始说明的那样,我们同样可以在其他下面oracle   server中通过透明网关来访问sql   server的数据。下面是示例:  
   
  现在这个oracle   server上添加tnsname。  
   
  ------------   http://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.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、各数据库中特殊的数据类型,需要在程序中实现转换,应尽量避免使用无法转换的数据类型。    

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

请登录后发表评论 登录
全部评论
Oracle , MySQL, SAP IQ, SAP HANA, PostgreSQL, Tableau 技术讨论,希望在这里一起分享知识,讨论技术,畅谈人生 。

注册时间:2007-12-10

  • 博文量
    5595
  • 访问量
    13471917