首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ORA-12154无法解析指定的连接标识符

ORA-12154无法解析指定的连接标识符
EN

Stack Overflow用户
提问于 2011-11-01 02:24:39
回答 16查看 200.5K关注 0票数 33

我已经切换到64位的Windows7,并创建了一个简单的web应用程序来测试与数据库的连接。我使用的是VS2010- plain asp.net web项目,并且我在VS中运行应用程序。

我收到此错误:"ORA-12154无法解析指定的连接标识符“

我还有一个样例控制台应用程序,用于测试与数据库的连接,并且运行良好。

在谷歌了一下之后,我发现网上有很多帖子都提到了权限,所以我把我的C:/Oracle权限设置为ASP.net帐户、网络服务、计算机名的读/写/执行。这仍然不能解决问题。我检查了我的web应用程序是否在我的domain\username帐户下运行,以及该帐户是否拥有对C:\Oracle文件夹的读/写/执行权限。

我甚至重新安装了VS,以确保它位于C:\Program Files而不是C:\Program Files(x86)中。

你知道为什么我的web应用看不到连接字符串吗?(虽然控制台应用程序可以)不确定我还能做什么。

EN

回答 16

Stack Overflow用户

发布于 2011-11-01 05:36:18

我将假设您使用tnsnames.ora文件来指定可用的数据库服务。如果是这样的话,连接错误通常归结为两件事。

  1. 应用程序找不到您在连接字符串中指定的TNS项。
  2. 找到了TNS项,但tnsnames.ora文件中的IP或主机不正确。

在第一点上展开(我认为这是你的问题)。当您告诉Oracle使用以下命令进行连接时:

代码语言:javascript
运行
复制
sqlplus user/pass@service

该服务在tnsnames.ora文件中定义。如果我尝试使用tnsnames.ora中未定义的服务进行连接,则会收到以下错误:

sodonnel@home ~$ sqlplus sodonnel/sodonnel@nowhere

代码语言:javascript
运行
复制
SQL*Plus: Release 11.2.0.1.0 Production on Mon Oct 31 21:42:15 2011

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

ERROR:
ORA-12154: TNS:could not resolve the connect identifier specified

所以你需要检查几件事:

  1. 是否有tnsnames.ora文件-我认为是,因为您的控制台可以连接
  2. 在该文件中是否有该服务的条目-我认为也是,因为控制台连接
  3. 应用程序是否可以找到该file

您的问题很可能是第三个-应用程序是否以与您运行控制台时不同的用户身份运行?

Oracle在TNS_ADMIN环境变量中定义的目录中查找tnsnames.ora文件--如果您以不同的用户身份运行,那么可能没有设置TNS_ADMIN环境变量,因此它无法找到该文件?

票数 25
EN

Stack Overflow用户

发布于 2016-06-23 03:03:49

有一个类似的问题,只有我的web应用程序是正常的,是SQLPlus给我带来了连接问题,以及ORA-12154 could not resolve the connect identifier specified错误。我安装了11g和12个Oracle客户端。我的环境变量都设置为指向我的12实例:

  • ORACLE_HOME = C:\oracle\product\12
  • PATH = C:\oracle\product\12\bin;....
  • TNS_ADMIN = C:\oracle\product\12\network\admin

HKLM\Software\Oracle\KEY_OraClient12Home1还需要一个注册表条目,即TNS_ADMIN的字符串条目,其路径与环境变量相同。

我在C:\oracle\product\11\network\adminC:\oracle\product\12\network\admin上都有一个tnsnames.ora。据我所知,我的web应用程序和我使用的12 SQLPlus客户端都应该使用所有的12版本变量。

我的故障排除步骤:

使用11g's 11.

  • Connect (worked!)

  • Change将上面的所有环境变量从12更改为11.

  • Connect使用12's SQLPlus (worked!)
  • Change将上面的所有环境变量从12更改回12.
  • Connect (!)

所以我真的不知道是什么原因导致12的SQLPlus停止连接,但这种重置可能对某些人有效,所以我想在这里记录它。

票数 5
EN

Stack Overflow用户

发布于 2012-08-24 09:16:50

可能会有很多问题,但如果您使用的是oracle 10g,请卸载oracle 10g,并从注册表中删除该值,然后安装oracle 11g。但是,如果您使用的是oracle 11g,请首先检查注册表是否指向right home。有时可能会有多个home,因为您需要反复安装sql developer。在这种情况下,您可以删除不必要的home注册表值,也可以向所有这些home添加tns和sql.net文件,这可能会解决问题。我用这种方式解决了我的问题。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7957955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档