SQL Server 2008 R2 链接 Oracle 10g Windows Server2008 R2下安装Oracle 10glistener.ora/sqlnet.ora/tnsnames.ora配置文件详解

首先sqlserver 链接oracle可以通过两个访问接口:

“MSDAORA” 和“OraOLEDB.Oracle”

1、“MSDAORA”访问接口是由Microsoft OLE DB Provider for Oracle提供的,这里建议不使用此接口进行链接。通过该访问接口建立的链接服务器在进行查询oracle表(带数据类型CLOB、BLOB字段)时会报这个错误“ 链接服务器""的 OLE DB 访问接口 "MSDAORA" 返回了消息 "发生了一个 Oracle 错误,但无法从 Oracle 中检索错误信息。"。 链接服务器""的 OLE DB 访问接口 "MSDAORA" 返回了消息 "数据类型不被支持。"。 消息 7321,级别 16,状态 2,第 1 行 准备对链接服务器 "" 的 OLE DB 访问接口 "MSDAORA" 执行查询"select * from SYS_MESSAGE"时出错。”

2、“OraOLEDB.Oracle” 访问接口是由oracle 的Oracle Probider for OLE DB 驱动提供的。它解决了两个数据库类型不一致的的问题。而且如果需要使用分布式事务,必须使用它来创建链接服务器。后文会有详细介绍。 在创建之前,在SQLSERVER中,链接服务器->访问接口->OraOLEDB.Oracle->右键属性,选中 "Allow inprocess" (中文为:允许进程内) 这一步是使我们选择的OraOLEDB.Oracle接口打开执行操作。如未设置会报如下错误: “无法初始化链接服务器 "null" 的 OLE DB 访问接口 "OraOLEDB.Oracle" 的数据源对象"

服务器 windows server 2008 r2 64位 或 win 7 enterprise 64位

1. 服务器上需要安装Oracle 64位的客户端(http://www.oracle.com/technetwork/cn/database/10204-winx64-vista-win2k8-082253-zhs.html)

安装完成后SQL Server的访问接口上会新增”OraOLEDB.Oracle”(安装32位客户端,看不到)。

安装:Windows Server2008 R2下安装Oracle 10g

2. 配置”OraOLEDB.Oracle”属性->启用项“允许进程内”;

3. 新建链接服务器(名称 自定 :ORA_LINK)

4. 填写链接服务器名称->选择访问接口”Oracle Provider for OLE DB”

5. 填写产品名称->Oracle

6. 数据源填写Oracle客户端/服务端配置的连接地址的服务名(tnsnames.ora中的服务名)

  (listener.ora/sqlnet.ora/tnsnames.ora配置文件详解)

  (sqlnet.ora<->Oracle Net Manager 概要文件)(tnsnames.ora<->Oracle Net Manager 服务命名)(listener.ora<->Oracle Net Manager 监听程序)

7. 填写Oracle的登陆账号密码:选择项->安全性->选择”使用此安全上下文建立连接”,并填入Oracle登录名与登陆密码

SELECT * FROM OPENQUERY(ORA_LINK,'SELECT * FROM USERNAME.TABLE');

Oracle 的 透明网关(transparent Gateway) 也可以实现 Oracle 可以与 其它异构数据库的互联