5

我需要使用 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 命令行 图像在这里

PLSQL 开发人员连接首选项图片在这里

4

12 回答 12

32

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

于 2012-10-11T14:19:08.187 回答
3

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

  1. 检查实例名称是否已在 tnsnames.ora 中正确输入。
  2. 实例或数据库名称的末尾不应有控制字符。
  3. TNS 条目周围的所有括号都应正确终止
  4. sqlnet.ora 中的域名条目不应与完整的数据库名称冲突。
  5. 如果问题仍然存在,请尝试在 tnsnames.ora 中重新创建 TNS 条目。
  6. 最后,您可以使用 SQL*Net Easy 配置实用程序添加新条目。

欲了解更多信息:http ://turfybot.free.fr/oracle/11g/errors/ORA-12154.html

于 2013-02-17T16:13:59.857 回答
1

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

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

提交给 Oracle,参考错误 3807408。

资源

于 2013-09-05T14:34:26.973 回答
1

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

终极解决方案!寒意

于 2017-02-28T08:38:55.313 回答
0

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

于 2013-07-31T14:44:53.197 回答
0
  • 它不起作用,所以我切换到 oracle sql developer 并且它没有问题(在 1 分钟内建立连接)。
  • 这个链接给了我一个连接到 MS Access的想法,所以我在 oracle sql developer 中创建了一个用户,并尝试在 Toad 中连接到它并且它工作。

或第二种解决方案

您可以通过在 Toad 的连接屏幕中提供主机和端口来尝试使用 Direct 而不是 TNS 进行连接

于 2013-06-24T14:23:10.633 回答
0

另外除了上述解决方案,还要检查tnsname ora文件存在的位置,并与环境变量中的路径进行比较

于 2014-06-19T15:37:28.880 回答
0

我在工作中遇到了问题。oracle 服务器已“修补”,我使用的数据库之一无法通过 TNSNames 条目连接,而是通过基本连接。数据库已启动,管理员可以看到它已启动并正在运行。

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

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

名称的一个例子是它被记录为“DBName.Part1.Part2”,但实际上数据库名称是“DBName”

于 2014-11-05T09:58:10.300 回答
0

只是想补充一下——显然这也可能是由于安装了 Instant Client for 10,然后意识到您想要完整安装并在并行目录中再次安装它。我不知道为什么这会破坏它。

于 2013-10-28T21:05:58.770 回答
0

只需将 tnsnames 和 sqlnet 文件从 Oracle home 复制并粘贴到 PLSQL Developer Main 文件夹中。使用以下查询获取 oracle 主页

select substr(file_spec, 1, instr(file_spec, '\', -1, 2) -1) ORACLE_HOME from dba_libraries where library_name = 'DBMS_SUMADV_LIB';

于 2015-10-18T02:04:35.250 回答
0

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

一个简单的例子。

错误的 tns 名称。

[这是一个空白]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) (PRESENTATION = 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) (PRESENTATION = RO))

于 2017-04-07T14:20:04.123 回答
-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并将两个复制的文件粘贴到这里就可以了。

于 2014-10-10T09:39:10.143 回答