ORA-12154:TNS:无法解析指定的连接标识符(PLSQL Developer)

时间:2012-10-10 18:09:14

标签: oracle plsql sqlplus plsqldeveloper tnsnames

我需要使用PLSQL Developer来访问oracle数据库。当我尝试连接到我的数据库时出现以下错误。 ORA-12154: TNS:could not resolve the connect identifier specified.我能够从命令行使用SQLPLUS连接到数据库,并且 tnsping 成功返回,但我无法弄清楚为什么PLSQL Developer无法工作 - 它正在使用右 tnsnames.ora 文件,其中的连接字符串是正确的,因为它与 tnsping 使用的相同。

任何人都知道我可以做些什么来解决这个问题?我已经查看了关于这个特定错误的其他线程而没有运气。

的tnsnames.ora

    ORCL =
      (DESCRIPTION = 
      (ADDRESS = (PROTOCOL = TCP)(HOST = MININT-AIVKVBM)(PORT = 1521)) 
      (CONNECT_DATA = 
        (SERVER = DEDICATED) 
        (SERVICE_NAME = orcl)
      )
    )

的sqlnet.ora

     SQLNET.AUTHENTICATION_SERVICES= (NTS)
     NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

sqlpus命令行 image here

PLSQL开发人员连接首选项image here

12 个答案:

答案 0 :(得分:27)

答案只是将PLSQL Developer文件夹从“Program Files(x86)”移动到“Program Files”文件夹中 - 很奇怪!

答案 1 :(得分:3)

此错误非常常见,通常是您尝试与数据库建立连接时获得的第一个错误。 我建议修复ORA-12154的6个步骤:

  1. 已在tnsnames.ora中正确输入检查实例名称。
  2. 实例或数据库名称末尾不应有控制字符。
  3. 应正确终止TNS条目周围的所有禁忌
  4. sqlnet.ora中的域名条目不应与完整数据库名称冲突。
  5. 如果问题仍然存在,请尝试在tnsnames.ora。
  6. 中重新创建TNS条目
  7. 最后,您可以使用SQL * Net Easy配置实用程序添加新条目。
  8. 了解更多信息:http://turfybot.free.fr/oracle/11g/errors/ORA-12154.html

答案 2 :(得分:1)

由于我无法添加评论,只是想我发布此内容以便完成。 tufy的答案是正确的,它与正在运行的应用程序的路径中的括号(括号)有关。

  

网络层存在网络错误   无法解析路径中包含括号的程序位置   尝试连接到Oracle的可执行文件。

提交给Oracle,Bug 3807408引用。

Source

答案 3 :(得分:1)

在程序文件x86和程序文件中复制粘贴pl sql developer。如果客户端安装在其他分区/驱动器中,则将pl sql developer复制到该驱动器。并从pl sql developer文件夹而不是桌面快捷方式运行。

终极解决方案!寒意

答案 4 :(得分:0)

  • 它没有用,所以我切换到oracle sql开发人员,它工作 没有问题(在1分钟内连接)。
  • 此链接给了我一个想法connect to MS Access所以我创建了一个 用户在oracle sql开发人员和尝试在Toad中连接它 它起作用了。

或第二种解决方案

您可以尝试通过在Toad

的连接屏幕中提供主机和端口来使用Direct not TNS进行连接

答案 5 :(得分:0)

对我来说,这是tnsnames.ora连接标识符的格式错误。标识符字符串的缩进是必需的,如注释中的tnsnames.ora示例所示。

答案 6 :(得分:0)

只是想添加 - 显然这也可能是因为安装Instant Client for 10,然后意识到你想要完整安装并在并行目录中再次安装它。我不知道为什么会破坏它。

答案 7 :(得分:0)

除上述解决方案外, 还要检查tnsname ora文件所在的位置,并与环境变量

中的路径进行比较

答案 8 :(得分:0)

我在工作中遇到了问题。 oracle服务器被修补了#34;我使用的其中一个数据库无法通过TNSNames条目连接,但通过Basic连接。数据库已启动,管理员可以看到它已启动并运行。

另外,任何使用TNS连接数据库的应用程序都无法正常工作。

发现的问题是TNS文件中的数据库名称不正确,但由于某种原因,它已经工作了多年。更正名称为我们修复了它。我确实发现Oracle SQL Developer一直在使用旧的TNS条目,即使我更新了它,我也不想只为一个数据库连接重新安装它。看来,当创建数据库时,它被赋予了一个较小的名称,然后是其他名称,并通过TNSNames文件中的一些剪切和粘贴操作混合起来。没有人确定它是如何工作的,因为我们正在调查它,但是oracle补丁确保名称必须正确

这个名字的一个例子就是" DBName.Part1.Part2"但事实上,数据库名称是" DBName"

答案 9 :(得分:0)

只能从PLSQL Developer Main文件夹中的Oracle home复制并粘贴tnsnames和sqlnet文件。 使用下面的Query来获取oracle home

选择substr(file_spec,1,instr(file_spec,'\',-1,2)-1)ORACLE_HOME     来自dba_libraries     其中library_name ='DBMS_SUMADV_LIB';

答案 10 :(得分:0)

我遇到了运行CentOS7和Oracle 11GR2的VM从Windows 7访问的问题,解决方案很奇怪,在我的本地机器上,指向数据库的tnsnames在服务名称之前有一个空格,我只是删除了空间和然后我就能连接了。

一个简单的例子。

错误的tnsnames。

[这是一个空的空间] XE =   (DESCRIPTION =     (ADDRESS =(PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))     (CONNECT_DATA =       (SERVER = DEDICATED)       (SERVICE_NAME = XE)     )   )

EXTPROC_CONNECTION_DATA =   (DESCRIPTION =     (ADDRESS_LIST =       (ADDRESS =(PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))     )     (CONNECT_DATA =       (SID = PLSExtProc)       (演示= RO)     )   )

正确的tnsnames。

XE =   (DESCRIPTION =     (ADDRESS =(PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))     (CONNECT_DATA =       (SERVER = DEDICATED)       (SERVICE_NAME = XE)     )   )

EXTPROC_CONNECTION_DATA =   (DESCRIPTION =     (ADDRESS_LIST =       (ADDRESS =(PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))     )     (CONNECT_DATA =       (SID = PLSExtProc)       (演示= RO)     )   )

答案 11 :(得分:-1)

ORA-12154:TNS:无法解析指定的连接标识符(PLSQL Developer)

答案:转到已安装ORACLE DATABASE的文件夹。例如E:\oracle\product\10.2.0 [or as your oracle version]\db-1\network\ADMIN然后复制两个文件(1)sqlnet.ora,(2)tnsnames.ora并关闭此文件夹。 转到已安装ORACLE DEVELOPER的文件夹。例如E:\DevSuitHome_1\NETWORK\ADMIN然后重命名两个文件(1)sqlnet.ora,(2)tnsnames.ora并将这两个复制的文件粘贴到这里,你没事。