Oracle 访问 SQL SERVER过程

主机 
操作系统 
软件环境 
GateWay Windows XP Oracle 10g 
192.168.100.6 SQL Server 2000 Client
Finasvr Windows 2000 Server  SQL Server 2000(访问的数据库是SQLTest) 
10.1.1.13

一.SQLDB的配置
    在SQL SERVER上建立用户testuser/testuser, 并授予可访问SQLTest的权限(Oracle数据库通过该用户访问SQL Server)。
二.GATEWAY的配置(%ORACLE_HOME% 如C:\Oracle\product\10.2.0\)
  1.安装ORACLE10g的透明网关(Oracle Transparent Gateway)选项 Microsoft SQL Server。 安装时需要选择SQL SERVER主机和数据库(server:10.1.1.13, DB:SQLTest)。
  2.安装SQL Server2000,因为是WINDOWS XP,所以只装了SQL Server 2000客户端。
  3.拷贝%ORACLE_HOME%\tg4msql\admin\inittg4msql.ora改名为initSID_NAME.ora(example:initFinasvr.ora),这是网关进程启动时需要的初始化文件,修改 HS_FDS_CONNECT_INFO这行,其他的内容不变。比如:
    HS_FDS_CONNECT_INFO="SERVER=Finasvr;DATABASE=SQLTest"   or
    HS_FDS_CONNECT_INFO="Finasvr.SQLTest"
4.修改%ORACLE_HOME%\network\admin 下listener.ora内容如下:
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS_LIST =
            (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
          )
        )
      )
    #这边的HOST一定是localhost,而不是SQL SERVER那台机器
 
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = PLSExtProc)
          (ORACLE_HOME = C:\Oracle\product\10.2.0)
          (PROGRAM = extproc)
        )
       (SID_DESC=
          (SID_NAME=finasvr)
          (ORACLE_HOME= C:\Oracle\product\10.2.0) 
       (PROGRAM=tg4msql)
      )
     )
 
5.重启动GateWay上(IP:192.168.100.6)TNSListener服务
 
三.ORADB的配置($ORACLE_HOME=/u01/app/oracle/oracle/product/10.2.0/db_1/)
    在$ORACLE_HOME/network/admin/tnsnames.ora, 添加下面的内容
    finasvrlk =   # 连接字符串可以随便取
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.6)(PORT = 1521))
          (CONNECT_DATA =
           (SID = finasvr) #SID_NAME与上面的SID_NAME相同
          )
         (HS=OK)          #固定为OK
         )
     保存tnsnames.ora后,可以用TNSPING命令测试listener
 
    设置数据库参数global_names=false。
    设置global_names=false不要求建立的数据库链接和目的数据库的全局名称一致。global_names=true则要求建立的数据库链接和目的数据库的全局名称一致。
    alter system set global_names=false;
 
    建立数据库链接:            
      create database link sqllink connect to testuser identified by “testuser” using ‘finasvrlk’;
 
    访问SQL Server下数据库里的数据:         
      select * from temp@sqllink;
 
    使用透明网关只可以用标准的 DML,并及时提交
原文地址:https://www.cnblogs.com/jasonsfu/p/1156450.html