本人接触和使用Oracle数据库才有一个季度的时间,问题比较白,大神请无视本文。
环境:
1、数据服务器,windows2008R2,Oracle11g
2、报表服务器,windows2008R2,SQLServer2008R2,Oracle客户端32位,PL\SQL32位(连接数据服务器的Oracle数据库没问题)
任务:
自己的报表平台使用sqlserver数据库(没有Oracle版的,没有为什么),要在SQLServer端通过链接服务器去连接数据库服务器的Oracle数据库读取数据。
遇到的难题:
建立链接服务器,遇到提示:无法创建链接服务器 "ORCL" 的 OLE DB 访问接口 "OraOLEDB.Oracle" 的实例 (错误:7302),搜索了N多解决方法,都无法解决这个问题。
后来搜到了:http://www.cnblogs.com/yuanxiaoping_21cn_com/archive/2013/11/20/3433020.html
这篇博客,发现该博主解决的是【Microsoft OLE DB Provider for ODBC Drivers】这个接口,而我要的是使用【OraOLEDB.Oracle】接口,但是博主的解决思路给了我启发,即同时安装oracle客户端32位和64位,使用同样的【tnsnames.ora】文件。
以往的经验和教训:
在32位windows系统的服务器上,安装oracle客户端32位时,建立链接服务器很顺利;
在64位windows系统的服务器上,安装oracle客户端32位时,建立链接服务器则失败,失败的提示同本文题目,也尝试同时安装32位和64位Oracle客户端(但没有使用和32位客户端一样的连接文件),但也没取得成功;
在64位windows系统的服务器上安装Oracle11g数据库(64位)时,建立与数据库服务器的链接服务器就比较顺利。
综上推断:
报表服务器的windows2008R2系统和SQLServer2008R2数据库都是64位的,它需要64位Oracle客户端,并且需要和32位Oracle客户端一样的连接文件【tnsnames.ora】。
解决:
下载64位Oracle客户端,地址:http://download.oracle.com/otn/nt/oracle11g/112010/win64_11gR2_clsent.zip
下载时,直接把上述地址粘贴到迅雷里面就可以下载,直接点开链接地址则需要注册或者登录该网站。
安装时,为了区别,将安装目录改为【D:\app\Administrator\product\11.2.0\client_64】;
连接文件【tnsnames.ora】里面的名称,也加了区别,比方说32位下的连接名字叫orcl,那么64位里面叫orcl64。
测试:
建立链接服务器(数据库源为orcl64)成功,原来32位的PL\SQL仍然以orcl连接。
总结:
32位的PL\SQL连接数据库服务器,使用32位驱动;
64位SQLServer连接数据库服务器,使用64位驱动;
两个oracle客户端都要安装,各自提供驱动,车走车路,马走马路,彼此井水不犯河水。