本人接觸和使用Oracle數據庫纔有一個季度的時間,問題比較白,大神請無視本文。html
環境:sql
一、數據服務器,windows2008R2,Oracle11g數據庫
二、報表服務器,windows2008R2,SQLServer2008R2,Oracle客戶端32位,PL\SQL32位(鏈接數據服務器的Oracle數據庫沒問題)windows
任務:服務器
本身的報表平臺使用sqlserver數據庫(沒有Oracle版的,沒有爲何),要在SQLServer端經過連接服務器去鏈接數據庫服務器的Oracle數據庫讀取數據。oracle
遇到的難題:app
創建連接服務器,遇到提示:沒法建立連接服務器 "ORCL" 的 OLE DB 訪問接口 "OraOLEDB.Oracle" 的實例 (錯誤:7302),搜索了N多解決方法,都沒法解決這個問題。ide
後來搜到了:http://www.cnblogs.com/yuanxiaoping_21cn_com/archive/2013/11/20/3433020.html sqlserver
這篇博客,發現該博主解決的是【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客戶端都要安裝,各自提供驅動,車走車路,馬走馬路,彼此井水不犯河水。