2009年9月24日

解決 ADO.NET 建立 Oracle 資料庫連線的問題

解決 ADO.NET 建立 Oracle 資料庫連線的問題

當你在 ASP.NET 嘗試使用 System.Data.OleDb.OleDbConnection 來開啟 Oracle 資料庫連線時,可能會發生如下的錯誤訊息:
找不到 Oracle 用戶端及網路元件。這些元件由 Oracle 公司供應且為 Oracle 8i 以上版本用戶端軟體安裝的一部分。在安裝這些元件前您無法使用此提供者。

如果是使用 System.Data.OracleClient 則會發生如下的錯誤訊息:
System.Data.OracleClient requires Oracle client software version 8.1.7 or greater.

因 為使用 .NET Framework Data Provider 存取 Oracle 資料庫,需要安裝 Oracle 用戶端軟體 8.1.7 版及更新版本。如果你是在未安裝 Oracle 用戶端軟體的情況下發生這樣的問題,你可以造訪 Oracle 官方網站,下載 Oracle Data Access Components (ODAC)。下載完成後,請執行安裝程式,並在安裝過程中選擇安裝 Oracle Data Provider for .NET。

若是在已安裝 Oracle 用戶端軟體的情況下,可能是 ORACLE_HOME 安裝在 Windows NTFS 磁碟分割區, 導致 ASP.NET 所使用的 Authenticated User 權限找不到 ORACLE_HOME 目錄,才導致這樣的錯誤。在 roytore 所發表的文章中,有提到針對此問題的解決作法:
  1. 以管理者身分登入 Windows。
  2. 使用檔案總管開啟 ORACLE_HOME 資料夾的內容對話盒,並點選 [安全性] 頁籤。
  3. 在群組或使用者清單中,點選 [Authenticated Users]。在下方權限清單中,取消 [讀取及執行] 項目的核取方塊,並按下 [套用]。
  4. 接著按下 [進階] 按鈕,確認 [Authenticated Users] 的權限是 [讀取及執行],且套用在 [這個資料夾,子資料夾及檔案]。
  5. 按下 [確定] 按鈕,直到關閉資料夾內容對話盒。
  6. 重新啟動 Windows。
相關下載:
Oracle Data Access Components (ODAC) Downloads

參考文章:
System.Data.OracleClient requires Oracle client software version 8.1.7 or greater.
by roytore