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

 更新时间:2024年01月04日 15:40:32   作者:MinSen  
Oracle11g server 64bit服务器端安装在Windows Server2008 Enterprise上,安装Oracle11g client 32bit,通过SQL Plus以sysdba身份连接数据库,并且创建表空间、用户、授权成功,在连接数据库时出现问题,下面讲解ORA-12154无法解析指定的连接标识符问题,感兴趣的朋友一起看看

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数据库问题的解决方法 见文末补充介绍。

  具体方法是在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

补充:

Asp.Net 应用程序在IIS发布后无法连接oracle数据库问题的解决方法

asp.net程序编写完成后,发布到IIS,经常出现的一个问题是连接不上Oracle数据库,具体表现为Oracle的本地NET服务配置成功;用pl/sql 等工具也可以连接上数据库,但是通过浏览器中运行程序,就是报连接不上数据库的错误。这时可以尝试下面的解决方法:

     1 在oracle安装目录(d:"oracle"ora92)上右键,属性->安全,选中Authenticated Users将权限的读取和运行项的勾去掉,再打上,然后点击应用,再点击高级,选中“用在此显示的可以应用到子对象的项目替代子对象的权限项目”,点击确定,然后重新启动机器 。这时一般可以解决问题,如果不能解决问题,则尝试第2步和第3步。

     2 把用户Aspnet和Internet 来宾用户IUSR_COMPUTERNAME加入Ora92的安全权限里。

     3 在ISS中选择“应用程序池”,选中你的应用程序所属的应用程序池,右键属性,点“标识”标签,在预定义帐户项选“本地系统”,然后重启ISS。

到此这篇关于ORA-12154:TNS:无法解析指定的连接标识符的文章就介绍到这了,更多相关ORA-12154无法解析指定的连接标识符内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • oracle查询字符集语句分享

    oracle查询字符集语句分享

    这篇文章主要介绍了oracle查询字符集的语句,查看国家字符集,查看oracle server端的字符集,需要的朋友可以参考下
    2014-02-02
  • 详解Oracle数据库各类控制语句的使用

    详解Oracle数据库各类控制语句的使用

    本文我们主要介绍了Oracle数据库中各种控制语句的使用,包括逻辑控制语句、Case when的使用、While的使用以及For的使用等,希望本次的介绍能够对您有所收获!
    2015-09-09
  • Oracle表空间数据文件移动的方法

    Oracle表空间数据文件移动的方法

    最近接了个项目,遇到这样的问题,需要实现把用户表空间中的数据文件从某一个路径下移动到另一个路径下,实现过程说简单不简单,说复杂不复杂,下面小编给大家分享我的解决办法,对oracle表空间数据文件相关知识感兴趣的朋友一起学习吧
    2015-12-12
  • Oracle归档日志写满(ora-00257)了怎么办

    Oracle归档日志写满(ora-00257)了怎么办

    今天在使用oracle数据库做项目时,突然报错:ORA-00257: archiver error. Connect internal only, until freed,该问题如何解决呢?经过本人一番折腾此问题还要归档于日志满了,下面小编把Oracle归档日志写满(ora-00257)的解决办法在此分享给大家供大家参考
    2015-10-10
  • Oracle存储过程、包、方法使用总结(推荐)

    Oracle存储过程、包、方法使用总结(推荐)

    这篇文章主要介绍了Oracle存储过程、包、方法使用总结(推荐),需要的朋友可以参考下
    2017-05-05
  • oracle指定排序的方法详解

    oracle指定排序的方法详解

    本篇文章是对oracle指定排序的方法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • 如何使用GDAL库的ogr2ogr将GeoJSON数据导入到PostgreSql中

    如何使用GDAL库的ogr2ogr将GeoJSON数据导入到PostgreSql中

    本文主要介绍了PyTorch中的masked_fill函数的基本知识和使用方法,masked_fill函数接受一个输入张量和一个布尔掩码作为主要参数,掩码的形状必须与输入张量相同,掩码操作根据掩码中的布尔值在输出张量中填充指定的值或保留输入张量中的值
    2024-10-10
  • Oracle 获取上周一到周末日期的查询sql语句

    Oracle 获取上周一到周末日期的查询sql语句

    本文为大家介绍下Oracle如何取得上周一到周末日期的查询语句,感兴趣的朋友可以聊接下
    2013-09-09
  • 解决Oracle 查询时报错ORA-00923: FROM keyword not found where expected的问题

    解决Oracle 查询时报错ORA-00923: FROM keyword not found where 

    这篇文章主要介绍了解决Oracle 查询时报错ORA-00923: FROM keyword not found where expected的问题,主要给大家介绍可能发生报错的几种情况,感兴趣的朋友跟随小编一起看看吧
    2023-03-03
  • Oracle表空间查看sql使用情况

    Oracle表空间查看sql使用情况

    我们在日常工作中查看表空间的使用情况大多数都是使用DBA。下面脚本之家小编给大家带来了oracle表空间查看sql使用情况的方法步骤,需要的童鞋参考下
    2016-05-05

最新评论