2014-01-16 91 views
1

我目前正在測試Delphi XE5以決定是否升級到它。我偶然發現了一個似乎是IDE配置問題的東西。Delphi XE 5試用 - ORA-12154問題

我們與Oracle合作(11g版本11.2.0.3.0 - 64位生產),我試圖建立一個既與TFDConnection一個TSQLConnectiondesign time連接到數據庫只是爲了測試目的。

由於某些原因,兩個都失敗,錯誤ORA-12154,但只在設計時。如果我離開配置的連接並激活它們在runtime它工作正常。例如,我可以從數據庫中檢索數據。

我使用tnsnames.ora說明指定數據庫。下面你可以看到Firedac連接定義(連接的dbExpress配置使用相同的數據庫,用戶等):

Firedac connection definition

而且環境報告:

================================ 
Connection definition parameters 
================================ 
Database=DBDES01_NEW 
User_Name=SMILO_PRD 
Password=***** 
DriverID=Ora 
================================ 
FireDAC info 
================================ 
Tool = RAD Studio XE5 
FireDAC = 9.0.1 (Build 63974) 
Platform = Windows 32 bit 
Defines = FireDAC_NOLOCALE_META;FireDAC_MONITOR 
================================ 
Client info 
================================ 
Loading driver Ora ... 
    Variable [Explicit Oracle Home]: [E:\oracle\product\10.2.0\client_1\] 
    Variable [Explicit OCI]: [E:\oracle\product\10.2.0\client_1\BIN\oci.dll] 
    Searching for Instant Client ... 
    Not found ! 
    Searching for Oracle Home ... 
    Checking Oracle Home at key [\Software\Oracle] ... 
    Checking Oracle Home at key [\Software\Oracle\KEY_OraClient10g_home1] ... 
     Found [E:\oracle\product\10.2.0\client_1\bin\oci.dll], position [2147483647], in [reg: \Software\Oracle\KEY_OraClient10g_home1] 
Home = E:\oracle\product\10.2.0\client_1 
Version = 1002000100 
OCI DLL name = E:\oracle\product\10.2.0\client_1\bin\oci.dll 
TNSNAMES dir = E:\oracle\product\10.2.0\client_1\Network\Admin\tnsnames.ora 
NLS_LANG = SPANISH_SPAIN.WE8MSWIN1252 
================================ 
Session info 
================================ 
Failed to connect to DBMS ! 
[FireDAC][Phys][Ora] ORA-12154: TNS:no se ha podido resolver el identificador de conexión especificado 

使用tnsnames.ora作品連接正確的使用從TOAD,舊的Delphi 2006安裝,以及如果我在運行時激活連接。

該問題必須存在於我的IDE配置中。到目前爲止,我找不到任何解決方案。關於我可以檢查的任何想法?

回答

3

如果調用應用程序位於包含括號字符的目錄路徑中(這將針對安裝在64位Windows上的32位應用程序發生,包括Delphi),Oracle客戶端的舊版本中存在一個錯誤,該錯誤將導致ora-12154 IDE)。Oracle在11.2和更新版本的客戶機中修正了這個錯誤(我在11.2系統上看到了這個錯誤)。這個Oracle錯誤號是#3807408。在我的常見問題頁面http://www.benthicsoftware.com/faq.html中有更多信息。

+0

如果這不是問題,則可能需要使用TNS_ADMIN環境變量來強制執行tnsnames.ora文件的位置。 – MarkF

+0

我會試一試,但首先我必須親自參與11g客戶端。至於TNS_ADMIN環境變量,我懷疑這是問題所在。 IDE會看到'tnsnames.ora'文件,對於'FireDac'連接組件,我嘗試添加'TFDPhysOracleDriverLink'並設置'TNSAdmin'屬性。正如我在我的問題中所說的,這在運行時工作,而不是在設計時。無論如何,謝謝你的回答。 :-) –

1

我遇到這個線程尋找答案,因爲我們有一個類似的問題......在我們的Delphi IDE設計時間內,Oracle連接將無法工作,但在運行時無所謂。

在我們的企業環境中,我們的機器具有強制特定(「較早」)的Oracle客戶端版本,就像之前針對Oracle客戶端錯誤的響應一樣。

在設計時,調用Oracle客戶端的應用程序是Delphi本身,而不是項目.exe。在64位安裝中,Delphi的默認路徑使用括號括起來的文字來描述操作系統版本。