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: 无法解析指定的连接标识符",今天我也又碰到了类似的情况,将我的解决方法进行小结,希望能对碰到同样问题 ...
随机推荐
- Linux:设置alias永久生效
登录数据库每次要输入密码,如:[root@localhost ~]# mysql -p123456 觉得麻烦... 简单的方法可以设置别名:alias mysql="mysql -p1234 ...
- ORA-00031: session marked for kill 处理Oracle中杀不掉的锁
一些ORACLE中的进程被杀掉后,状态被置为"killed",但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库.现在提供一种方法解决这种问题,那就是在ORACLE中杀不 ...
- “Sysprep 错误 + CAPI2 引起的蓝屏”的参考解决方法
这些天我在给学校机房部署 Windows 7 系统时,遇到一些问题,在网上找了很长时间才找到,其中有一个还是英文的资料.特此分享出来,希望能给遇到同样问题的人一个参考.由于学校的机子型号不都一样,所以 ...
- CentOS学习笔记--账号管理与权限配置
Linux 的账号管理与权限配置 管理员的工作中,相当重要的一环就是『管理账号』啦! 使用者标识符: UID 与 GID 虽然我们登陆 Linux 主机的时候,输入的是我们的账号,但是其实 Linux ...
- JavaScript中this详解
这里的主题是 this ,不扯远了.this 本身原本很简单,总是指向类的当前实例,this 不能赋值.这前提是说 this 不能脱离 类/对象 来说,也就是说 this 是面向对象语言里常见的一个关 ...
- DataTable.Select
转载请注明出处:http://www.cnblogs.com/havedream/p/4453297.html 方法:DataTable.Select 作用:获取 DataRow 对象的数组. 重载: ...
- SQL中删除某数据库所有trigger及sp
SQL中删除某数据库所有trigger及sp 编写人:CC阿爸 2014-6-14 在日常SQL数据库的操作中,如何快速的删除所有trigger及sp呢 以下有三种方式可快速处理. --第一种 - ...
- phpmyadmin误删表后的恢复过程(心惊胆跳啊)
话说今天不知道是抽风了还是失魂了,在用phpmyadmin删除测试数据时,竟然将整个表删除了: 等程序运行出错时,才出现整个表都没有了,而且之前也没有备份好!这下蛋疼了,这个可是production服 ...
- android里面线程睡眠事件使用方法
SystemClock.sleep(时间); 不用Thread.sleep()的原因:要抛异常,占用资源
- Android判断横屏竖屏代码
// 判断Android当前的屏幕是横屏还是竖屏.横竖屏判断 if (this.getResources().getConfiguration().orientation == Configurati ...