oracle中直接访问sqlserver的数据

来源:互联网 发布:球球大作战php源码 编辑:程序博客网 时间:2024/06/08 13:24
一、配置DSN:
   数据源 ODBC 数据源名称:pjfc
   默认数据库要选择你想要指向的用户,例如我sqlserver有个用户pjfc

   此数据源指向SQLSERVER服务。


   注意:1、必须测试通过。


         2、必须是系统数据源
二、配置hsodbc:
   新增$ORACLE_HOME\hs\admin\initCZEIS.ora,文件内容如下:
        HS_FDS_CONNECT_INFO =pjfc
        HS_FDS_TRACE_LEVEL =OFF


   注意:1、文件必须命名为 init<虚拟SID名称>.ora


         2、HS_FDS_CONNECT_INFO = <odbc数据源名称>


三、添加监听:


   修改 $ORACLE_HOME\NETWORK\ADMIN\listener.ora :
   在SID_LIST 下添加新项:
    (SID_DESC =
      (SID_NAME = CZEIS)
      (ORACLE_HOME = $ORACLE_HOME(这个为你oracle的路径我的机子是E:\oracle\product\10.2.0\db_1))
      (PROGRAM = hsodbc)
    )
四、重启listener:


   这里要确保重起成功


五、添加TNS:
  修改 $ORACLE_HOME\NETWORK\ADMIN\tnsnames.ora :
pjfcORA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = pjfc)
    )
    ( HS = OK )
  )


注意:此处的host 配成 ODBC数据源所在的机器,而不是所指向的机器,一般为LOCALHOST


六、创建数据库连接


   CREATE PUBLIC DATABASE LINK test CONNECT TO "sa" identified by "密码(区分大小写)" using 'pjfc';


七、在pl/sql测试
select * from 表A@test
表A为sqlserver用户pjfc中的某个表,上面语句能运行就ok了。