在Oracle数据库中连接异种数据源  
  一共有三种方法:  
   
  1、 透明网关(Transparent   Gateways)  
  2、 通用连接(Generic   Connectivity)之ODBC连接  
  3、 通用连接(Generic   Connectivity)之OLE   DB连接  
   
   
  现在利用第二种方法使Oracle与SQL   Server直连。  
   
   
   
  1. 安装HS部件。    
   
  缺省情况下,HS服务是和Oracle   8.1.7一起安装的,你可以查询SYS用户下是否存在HS_BASE_CAPS视图,以确认HS部件是否安装,如果没有可以用相关的安装盘进行安装。    
   
  2. 配置ODBC系统连接字。    
   
  在控制面板选择“Data   Sources   (ODBC)”,在“系统DNS”内配置ODBC   for   SQL   Server连接(DNS名称   eg:111)  
   
   
  3. 配置tnsnames.ora,它位于ORACLE_HOME\NETWORK\ADMIN。    
   
  在这个文件中增加如下代码:    
   
  hgdb(要访问的SQL   SERSER   的数据库名)   =    
   
  (DESCRIPTION   =    
   
  (ADDRESS_LIST   =    
   
  (ADDRESS   =   (PROTOCOL   =   TCP)(HOST   =   HOSTNAME(本机IP也可))(PORT   =   1521)))    
   
  (CONNECT_DATA   =    
   
  (SID   =   hgdb)   (要访问的SQL   SERSER   的数据库名,要和Listener里配置的sid相同)    
   
  (HS=OK)   (打开HS服务选项   )    
   
   
  4. 配置listener.ora,它位于ORACLE_HOME\NETWORK\ADMIN。    
   
  在这个文件中增加如下代码:    
   
  SID_LIST_LISTENER   =    
   
  (SID_LIST   =    
   
  (SID_DESC   =    
   
  (SID_NAME   =   hgdb)   (要访问的SQL   SERSER   的数据库名,与tnsname名称相对应   )  
   
  (ORACLE_HOME   =   C:\oracle\ora90)    
   
  (PROGRAM   =   hsodbc)(要使用的HS服务程序,如果使用OLE   DB,程序名为hsole     )    
   
   
  5.   重新启动Oracle   listener。    
   
  6.   新增位于ORACLE_HOME\HS\ADMIN内文件,这里是inithgdb。    
   
  两行代码:    
   
    HS_FDS_CONNECT_INFO   =   111(ODBC   中DNS名称)  
   
    HS_FDS_TRACE_LEVEL   =   0    
   
  7,     设置数据库参数global_names=false。  
   
  设置global_names=false不要求建立的数据库链接和目的数据库的全局名称一致。  
  global_names=true则要求,   多少有些不方便。  
   
  oracle9i和oracle8i都可以在DBA用户下用SQL命令改变global_names参数  
   
  alter   system   set   global_names=false;  
   
   
  8.   用管理员用户登录SQL   PLUS,创建DATABASE   LINK。    
   
  create   database   link   hgdb   connect   to   sa   identified   by   sa   using   ‘hgdb’;    
   
   
  9.   测试连接。如:    
   
  SQL>   select   *   from   rolldown@hgdb;  
   
   
  到此我们已经完成了使用ODBC连接SQL   SERVER的配置工作。   
 
posted on 2008-09-23 20:30  yxbsmx  阅读(321)  评论(0编辑  收藏  举报