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

1问题的描述
Oracle11g server 64bit服务器端安装在Windows Server2008 Enterprise上,安装Oracle11g client 32bit,通过SQL Plus以sysdba身份可以连接数据库,并且创建表空间、用户、授权成功,如下图所示。

但是在连接数据库时出现了一些问题:
(1)在客户端配置服务,通过PLSQL连接数据库,出现错误“ora-12154: TNS:无法解析指定的连接标识符”;
(2)通过PLSQL能够正确连接Oracle11g,但是同样的用户名密码在VS2010中却无法连接,报错“ORA-12154: TNS:无法解析指定的连接标识符”;
(3)在VS2010中能够正确访问Oracle11g,但是网站发布之后数据无法访问,报错“ORA -12154: TNS:无法解析指定的连接标识符”。
2问题的解决
2.1在客户端配置服务,通过PLSQL连接数据库,出现错误“ORA-12154: TNS:无法解析指定的连接标识符”

(1)解决本问题需要给系统添加环境变量TNS_ADMIN并且将oracle服务器端和客户端“….NETWORK\ADMIN”路径复制给该环境变量,并且将oracle客户端的路径放在前面,如下图所示。

(2)然后在PLSQL中(点击“取消”,在没有成功登陆的情况下也可以设置连接属性),点击“tools”->“preferences”,在对话框中设置oralce home和OCI library,其中Oracle home选择所安装的oracle服务器端,oci library设置oracle 32位客户端的“****product\11.2.0\client_1\bin\oci.dll”路径。

2.2通过PLSQL能够正确连接Oracle11g,但是同样的用户名密码在VS2010中却无法连接,报错“ora-12154: TNS:无法解析指定的连接标识符”

这个问题的出现实在让人无语,正常情况下在VS2010中选择“Server Explorer”->Data Connection->Add Connection输入数据库连接的信息,是可以成功连接oracle数据库的,但是让人不解的是同样的用户名/密码在PLSQL中可以正常登陆,但是在这里却会显示上图所示的错误。这样在运行VS程序时,显示上述错误。

更莫名其妙的事情是,我们在客户端重新配置了一个新的服务,并用新的服务去连接的时候,居然成功了。至此,我们反思,只有一种原因,那就是之前我们用的服务是在设置环境变量“TNS_ADMIN”之前配置的,由于编辑了环境变量,导致Oracle无法获取之前的服务名称。
2.3在VS2010中能够正确访问Oracle11g,但是网站发布之后数据无法访问,报错“ORA-12154: TNS:无法解析指定的连接标识符”
当你解决了遇到的问题,觉得自己已经取得成功的时候,往往还会有新的问题出现,现实就是这样无情,它会迫使你将一个问题彻底搞清楚。
在VS程序中能正确访问的Oracle数据库,当网站在IIS中被发布以后,数据库仍旧不能访问,该死的“ORA-12154: TNS:无法解析指定的连接标识符”。

出现本问题是因为Oracle的访问权限问题,第一种情况是Oracle目录缺乏Authenticated Users用户权限,第二种情况是缺乏interner来宾用户权限。
Authenticated Users权限设置参考博客——
Asp.Net 应用程序在IIS发布后无法连接oracle数据库问题的解决方法http://www.cnblogs.com/zhangronghua/archive/2008/10/07/1305597.html
具体方法是在oracle安装目录(d:"oracle")上右键,属性->安全,选中Authenticated Users将权限的读取和运行项的勾去掉,再打上,然后点击应用,再点击高级,选中“用在此显示的可以应用到子对象的项目替代子对象的权限项目”,点击确定,然后重新启动机器 。
需要注意地方是设置完权限后,一定要重启电脑才会权限设置才会生效。
添加internet来宾用户
(1)在Oracle目录上右击选择“属性”,显示如下对话框。

(2)点击“编辑”进入权限编辑对话框,如下图所示。

(3)点击“添加”显示如下对话框。

(4)点击“高级”进入用户和组选择对话框。选择internet来宾用户“IIS_IUSRS”,然后一路确定即完成该用户权限的设置。操作完成后请牢记一定要重启电脑,设置才能生效。

关于添加aspnet用户
网上有博主说这个问题是由于Oracle目录没有aspnet用户访问权限所致,而有些情况下电脑上虽然安装了vs但是还是会没有aspnet用户,本人按照博客上的方法——下图所示添加aspnet用户,但是该操作虽然能够成功完成,但是系统用户和组中还是不会出现aspnet用户。奇怪是不去管它,只进行Authenticated Users权限设置和添加internet来宾用户也可以在发布后的网站内成功访问Oracle数据库。

3参考文献
[1] ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法
http://www.blogjava.net/freeman1984/archive/2011/04/15/348350.html
[2] http://bbs.csdn.net/topics/390312212
[3] Oracle 10g ORA-12154: TNS: could not resolve the connect identifier specified 问题解决!
http://www.blogjava.net/wahahacj/archive/2007/11/19/161689.html
4致谢
感谢杨师兄的鼎力相助,感谢各位博主的热情分享。
ORA-12154:TNS:无法解析指定的连接标识符的更多相关文章
- ORA-12154:TNS:无法解析指定的连接标识符
问题:ORA-12154:TNS:无法解析指定的连接标识符 原因:没有配置tnsnames.ora文件 解决方案: 配置环境变量变量名:ORACLE_HOME 变量值:如:D:\Database\pr ...
- Oracle几个基础配置问题:ORA-12154: TNS: 无法解析指定的连接标识符、ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务、ORA-12516 TNS监听程序找不到符合协议堆栈要求的可用处理程序
问题1:ORA-12154: TNS: 无法解析指定的连接标识符 在一台服务器上部署了Oracle客户端,使用IP/SID的方式访问,老是报ORA-12154错误,而使用tnsnames访问却没有问题 ...
- <转>ORA-12154: TNS: 无法解析指定的连接标识符
相信作为ORACLE数据库的开发人员没有少碰到“ORA-12154: TNS: 无法解析指定的连接标识符”,今天我也又碰到了类似的情况,将我的解决方法进行小结,希望能对碰到同样问题的友人们提供帮助. ...
- Oracle数据库ORA-12154: TNS: 无法解析指定的连接标识符详解
ORA-12154: TNS: 无法解析指定的连接标识符(转自http://www.cnblogs.com/psforever/p/3929064.html) 相信使用过Oracle数据库的人一定碰到 ...
- ORA-12154 TNS无法解析指定的连接标识符
又是这个百无聊赖的问题,尽管问题芝麻点大,却让我们好找啊! 非常久没有安装oracle了.今天安装11g的时候,用PLSQL Developer连接时,就出现了这个俗不可耐的问题:ORA-12154 ...
- C#连接oracle数据库提示ORA-12154: TNS: 无法解析指定的连接标识符
C#连接oracle数据库提示ORA-12154: TNS: 无法解析指定的连接标识符如果PLSQL Develope能连接上而用代码无法连接上则可以考虑sqlnet.ora文件中是否有NAMES.D ...
- PL/SQL连接远程服务器数据库,出现ORA-12154: TNS: 无法解析指定的连接标识符。
故障环境:上礼拜新装了一台服务器(win server2008r2),并在服务器上安装了ORACLE 11g database.且已经做好监听配置,开通了1521端口. 我又在局域网内另一台pc端装了 ...
- oracle 可以连接数据库,vs连不上. 报错提示:ORA-12154: TNS: 无法解析指定的连接标识符
方法1:问题:VS 连接 Data Source=ORCL_Service19;User Id=*;Password=* 连接不上 oracle 可以连接数据库,vs连不上,报错提示:ORA-1215 ...
- PL/SQL登录Oracle18数据库:ORA-12154:TNS无法解析指定的连接标识符
PL/SQL登录Oracle18数据库出现ORA-12154:TNS无法解析指定的连接标识符解决以下问题:首先更改Oracle客户端的tnsnames.ora,我的路径是:D:\OracleSQL\n ...
- 解决 ORA-12154 TNS无法解析指定的连接标识符
相信作为ORACLE数据库的开发人员没有少碰到"ORA-12154: TNS: 无法解析指定的连接标识符",今天我也又碰到了类似的情况,将我的解决方法进行小结,希望能对碰到同样问题 ...
随机推荐
- 用户 'IIS APPPOOL\Classic .NET AppPool' 登录失败。
“用户 'IIS APPPOOL/Classic .NET AppPool' 登录失败”的解决方法 错误: “/”应用程序中的服务器错误. 用户 'IIS APPPOOL\Classic .NET ...
- 十四、Struts2的国际化
十四.Struts2的国际化 1.配置全局国际化消息资源包 配置全局消息资源包 <!--配置全局消息资源包 --> <constant name="struts.c ...
- iOS 获取当前城市
1.倒入头文件 #import <CoreLocation/CoreLocation.h> 2.实现定位协议CLLocationManagerDelegate 3.定义定位属性 @pro ...
- CentOS-6.4无线上网命令行配置
参考:http://www.vfeelit.com/504.html 待连接的WIFI的ssid为“thm”,密码为12345678,认证方式为WPA2-PSK 1. 检查无线网卡驱动是否安装 ...
- C#中的快捷键,可以更方便的编写代码 (转载)
C#中的快捷键,可以更方便的编写代码 CTRL + SHIFT + B 生成解决方案 CTRL + F7 生成编译 CTRL + O 打开文件 CTRL + SHIFT + O 打开项目 CTRL + ...
- 未能正确加载“Microsoft.VisualStudio.Implementation.EditorPackage”包
未能正确加载“Microsoft.VisualStudio.Implementation.EditorPackage”包 未处理ImportCardinalityMismatchException 未 ...
- css 强制不换行
强制不换行 div{white-space:nowrap;} 自动换行 div{ word-wrap: break-word; word-break: normal; } 强制英文单词断行 div{w ...
- 安装elasticsearch
安装elasticsearch 来自:http://www.cnblogs.com/huangfox/p/3541300.html 一)安装elasticsearch 1)下载elasticsea ...
- Java实现计算20的阶乘
循环从1乘到20,要注意的就是结果可能会很大,长度超出int类型的范围,所以定义乘积的时候用long. 代码如下: public class Practice3 { public static voi ...
- delphi函数调用约定
指令 参数存放位置 参数传递顺序 参数内存管理 使用地方 Register CPU寄存器 从左到右 被调用者 默认,published属性存取方法必须使用 Pascal 栈 从左到右 被调用者 向后兼 ...