2014-01-16 58 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的默认路径使用括号括起来的文字来描述操作系统版本。