在运行java应用程序时,我得到了ORA- 12154错误。在java应用程序中,我们必须使用数据库凭据登录。对于某些用户凭据,应用程序正在成功运行,但对于另一些用户来说,它正在抛出错误ora-12154:TNS:未能解析指定的连接标识符。
有人能帮我解决这个问题吗。
发布于 2018-09-20 09:43:54
最常见的原因是数据库别名(连接到的)没有包含在TNSNAMES.ORA文件中。
如果您有几个甲骨文软件产品,很有可能每个产品都有自己的TNSNAMES.ORA文件(通常位于其\network\admin目录中)。它的方法是同时编辑所有这些文件(这是愚蠢的),或者创建一个TNS_ADMIN环境变量,它将指向包含“主”TNSNAMES.ORA文件的目录,如我所拥有的:
M:\>set tns_admin
TNS_ADMIN=C:\0_Oracle_library因此,每次我必须添加一个新的数据库时,我都会编辑该TNSNAMES.ORA文件和我的所有程序(表单、报表、SQL、TOAD、SQL*Plus、.)访问并使用它。
发布于 2018-09-20 09:57:02
Oracle错误代码文档提供了一些有用的故障排除技巧(以下来自12.1):
ORA-12154: TNS:无法解析指定的连接标识符 原因:使用连接标识符请求到数据库或其他服务的连接,而指定的连接标识符无法使用配置的命名方法之一解析为连接描述符。例如,如果使用的连接标识符类型是一个网络服务名称,则无法在命名方法存储库中找到该网络服务名称,或者无法找到或到达该存储库。 行动: 如果使用本地命名(TNSNAMES.ORA文件):
首先检查是否可以tnsping指定的服务(tnsping是包含在Oracle中的实用程序)。例如,如果连接为x/y@zzz与ORA-12154失败,那么
tnsping zzz这可能会给
TNS-03505: Failed to resolve name但它还将显示上述本地sqlnet.ora参数文件的路径。根据您的设置,应该在同一位置有其他.ora文件。
根据您的操作系统、Oracle客户端和名称解析设置,可以使用多种方法来配置。(注意,tnsnames.ora文件不是唯一的命名方法。)如果你分享一些更多的细节,那么解决这个问题应该是很简单的。
https://stackoverflow.com/questions/52421827
复制相似问题