2014-01-29 49 views
8

我正在嘗試開發一個針對.net 4框架的C#Windows窗體應用程序。該程序將針對Oracle數據庫執行存儲過程,當我嘗試打開與數據庫的連接時,出現以下錯誤。ORA-12557 TNS:協議適配器不可加載

ORA-12557 TNS:協議適配器不可加載

我在Visual Studio 2012開發這一點,並設法使服務器資源管理器連接到數據庫成功,但我一直通過我的申請得到這個錯誤。

我的機器上有兩個Oracle 11g客戶機。一個是32位,另一個是64位。我確實需要爲不同的應用程序,所以它是不可能刪除一個。我也嘗試更改PATH變量中Oracle主目錄的順序。目前我有一個64位的第一個是我想要連接的那個。

我使用ODP.NET將我的應用程序連接到數據庫,並引用了64位應用程序中的dll。

據我所知,我已經完成了所建議的內容,並沒有設法使其工作。如果有人可以幫助它,將不勝感激。

回答

10

ORA-12577錯誤與Windows環境或Oracle Home PATH有關,因爲當我在ORACLE_HOME \ bin中執行它時,sqlplus命令可以正常工作。 由於在該機器上單獨的ORACLE_HOME中有兩個或多個oracle安裝(稱爲數據庫和伴隨),因此您的窗口中未設置ORACLE_HOME值。 有關詳細信息,請按照以下步驟操作,並希望能夠得到解決方案。 http://www.dba-oracle.com/t_ora_12577.htm

+0

我已經看過這篇文章,並嘗試更改上面提到的PATH變量中的ORACLE_HOMEs的順序。這很可能是沿着這些路線的東西,但是在PATH中改變它們並不能解決它。 –

+0

好,詹姆斯我遇到了同樣的問題,我安裝了home/db_1進行數據庫安裝,然後安裝了主/客戶端_1_。 在客戶端安裝並更改從home/client_1到home/db_1的路徑之後進入系統變量,並且不會出現錯誤。 –

+0

你說得對。我也必須刪除我添加的ORACLE_HOME變量。最有可能解決我在某些時候會遇到的另一個問題,希望不會再出現。但是,以正確的順序獲取路徑的工作。另一個問題是,我沒有意識到更新PATH變量不會影響我的程序,直到我重新啓動Visual Studio。謝謝! –

2

基本問題是在應用程序需要的RDBMS服務器安裝中存在Oracle即時客戶端安裝中缺少DLL。這就是將Oracle主機從client_1切換到db_1的原因,而不是純粹的PATH問題。

sqlplus可以在任何情況下工作,因爲它使用了Oracle安裝中存在的最小的DLL集合。

1

這裏有幾件事要檢查。不要忘記嘗試#3,如果需要的話,它解決了我的問題!

  1. 確保所有Oracle服務啓動
  2. 確保設置環境變量(PATH,ORACLE_SID = ORALOCAL,TNS_ADMIN = C:\開發\ ORACLE \產品\ 11.2.0 \ dbhome \網絡\ ADMIN)
  3. 嘗試移動Path環境變量值,如下所示: 「D:\ Dev \ Oracle \ product \ 11.2.0 \ dbhome \ bin」在 「D:\ dev \ Oracle \ product \ 11.2.0之前\ client_32 \ bin「

Fissh