本人接觸和使用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客戶端都要安裝,各自提供驅動,車走車路,馬走馬路,彼此井水不犯河水。