ORA-12154: TNS:could not resolve the connect identifier specified
2015-11-23 21:06
218 查看
今天碰到一个情况,有一台机器用PLSQL连接数据库怎么也连不上,一直报这个错:ora--12154 :TNS :could not resolve the connect identifier specified
查看情况:数据库没有问题,其他同事可以连接,本机Net Manager 配置连接时也正常,测试也通过;只有PLSQL登录时连不上,同时程序连接也不行。注:本机器刚重装系统,新搭的环境。
后来上网搜了一圈,根据现象,大概判断是客户端的问题,于是让同事自己瞧瞧是不是客户端安装有问题,他自己也觉得好象有点不对,安装目录下没有多少东西,于是建议重装客户端,第二次重装后还是不行,因卸载不彻底。这次清理干净了,再重装了一次,告知一次都OK了。
下面将搜到的一些好资料都总结起来:
1.先检查服务器端的监听服务是否打开,如果没有打开请启动其监听
客户端:tnsping <tns_name> 服务器Linux下:
#>lsnrctl status查看监听状态
#>lsnrctl start 启动监听
2.通过Sql Plus连接一下试试,如果Sql Plus连接能成功,那就说明你的tnsnames.ora内容有错误
我的问题就在别名dev_db前面有一个空格,这个可以通过文本编辑器(Edit Plus,UE等)来查看是否有空格,只要有空格那就肯定是不行的,而且如果那段内容是出现在文件的中间的话,将导致该文件里所有相应的连接别名都不成功,如果是在最后面就只有其自身连接别名不能成功,其他连接别名还是能连接成功。(注:我的tnsnames.ora配置了多个数据库实例的连接,所有才有多个连接别名。)
如:
空格dev_db = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.168.10.5)(PORT = 1521)) ) (CONNECT_DATA = (SID = ora10) ) )
3.如果确保你的tnsnames.ora内容没有错误,那请将%ORACLE_HOME%\product\10.2.0\db_1\NETWORK\ADMIN目录下的所有文件删了,然后重新连接,一般就能解决了。
说明一下:那个目录里的文件是在你建立连接的时候动态生成的,不要怕删了会有问题
4.进入PLSQL Developer的主界面,在登录界面选择取消即不登录进入主界面,然后选择菜单Tools(工具)-Preferences(首选项),在设置窗口中,选择Oracle-Connection(连接),对应设置窗口中,找到Oracle Home(Oracle主目录),选择你本地所安装客户端的版本,保存设置,然后重新启动PLSQL Developer,这时就可以正常登录了
装了解决Oracle Developer Tools之后,出现“ORA-12154: TNS: 无法解析指定的连接标识符”报错的解决方法如下:
1.检查注册表,HKey_LocalMachine\Software\Oracle下面的Oracle_Home,若不对,修改成正确的;
2.卸载ODP for .Net (或者卸载ODT for .Net, ODT中包含ODP, ODT是VS.Net的一个集成插件,用于连接和浏览oracle数据库,并且提供对oracle数据库的拖拽操作,类似VS.Net对于SQL Server的资源管理器);
3.如果ODT for .Net的目录依然存在,删除或者重命名此目录;
然后重起系统,重新连接ASP.Net程序,如果还有同样的错误,看着办吧,我建议重装Oracle吧。
分析原因:系统原来装的是ORACLE 10G 10.1.0,卸载后还没重启就装上10.2.0,结果先是监听器起不来,竟然还是指向10.1.0的位置,监听器当然不能启动了。
处理过程: 1、查找注册表,将监听器指向新的位置,重启服务,OK; 2、PL/SQL DEVELOPER还是连接不了,其它方式都正常。将原先安装在其它逻辑盘的ODP for .Net 卸载重装到与ORACLE 10.2.0同一位置。重启系统,DEVELOPER还是报错,不过些时报错提示信息为空。 3、因为DEVELOPER设置有更改后,进入菜单TOOLS》PREFERENCES...设置,在ORACLE下的CONNECTION中,将ORACLE HOME和OCI LIBIARY设为空即自动检测。连接正常,问题解决。
二、应用程序中报错:
一个很难想到的引起ORA-12154的原因 使用OracleClient.OracleConnection时(我连的是Oracle 11g,其他版本未知),如果你的执行目录太长或者有括号等(未考察有些什么符号),那么即使你的服务名是对的,也会引起ORA-12154问题“TNS:无法处理服务名”,当出现这个问题时,请也考虑这个原因
原文链接:http://blog.csdn.net/loadrunn/article/details/7895726
查看情况:数据库没有问题,其他同事可以连接,本机Net Manager 配置连接时也正常,测试也通过;只有PLSQL登录时连不上,同时程序连接也不行。注:本机器刚重装系统,新搭的环境。
后来上网搜了一圈,根据现象,大概判断是客户端的问题,于是让同事自己瞧瞧是不是客户端安装有问题,他自己也觉得好象有点不对,安装目录下没有多少东西,于是建议重装客户端,第二次重装后还是不行,因卸载不彻底。这次清理干净了,再重装了一次,告知一次都OK了。
下面将搜到的一些好资料都总结起来:
1.先检查服务器端的监听服务是否打开,如果没有打开请启动其监听
客户端:tnsping <tns_name> 服务器Linux下:
#>lsnrctl status查看监听状态
#>lsnrctl start 启动监听
2.通过Sql Plus连接一下试试,如果Sql Plus连接能成功,那就说明你的tnsnames.ora内容有错误
我的问题就在别名dev_db前面有一个空格,这个可以通过文本编辑器(Edit Plus,UE等)来查看是否有空格,只要有空格那就肯定是不行的,而且如果那段内容是出现在文件的中间的话,将导致该文件里所有相应的连接别名都不成功,如果是在最后面就只有其自身连接别名不能成功,其他连接别名还是能连接成功。(注:我的tnsnames.ora配置了多个数据库实例的连接,所有才有多个连接别名。)
如:
空格dev_db = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.168.10.5)(PORT = 1521)) ) (CONNECT_DATA = (SID = ora10) ) )
3.如果确保你的tnsnames.ora内容没有错误,那请将%ORACLE_HOME%\product\10.2.0\db_1\NETWORK\ADMIN目录下的所有文件删了,然后重新连接,一般就能解决了。
说明一下:那个目录里的文件是在你建立连接的时候动态生成的,不要怕删了会有问题
4.进入PLSQL Developer的主界面,在登录界面选择取消即不登录进入主界面,然后选择菜单Tools(工具)-Preferences(首选项),在设置窗口中,选择Oracle-Connection(连接),对应设置窗口中,找到Oracle Home(Oracle主目录),选择你本地所安装客户端的版本,保存设置,然后重新启动PLSQL Developer,这时就可以正常登录了
装了解决Oracle Developer Tools之后,出现“ORA-12154: TNS: 无法解析指定的连接标识符”报错的解决方法如下:
1.检查注册表,HKey_LocalMachine\Software\Oracle下面的Oracle_Home,若不对,修改成正确的;
2.卸载ODP for .Net (或者卸载ODT for .Net, ODT中包含ODP, ODT是VS.Net的一个集成插件,用于连接和浏览oracle数据库,并且提供对oracle数据库的拖拽操作,类似VS.Net对于SQL Server的资源管理器);
3.如果ODT for .Net的目录依然存在,删除或者重命名此目录;
然后重起系统,重新连接ASP.Net程序,如果还有同样的错误,看着办吧,我建议重装Oracle吧。
分析原因:系统原来装的是ORACLE 10G 10.1.0,卸载后还没重启就装上10.2.0,结果先是监听器起不来,竟然还是指向10.1.0的位置,监听器当然不能启动了。
处理过程: 1、查找注册表,将监听器指向新的位置,重启服务,OK; 2、PL/SQL DEVELOPER还是连接不了,其它方式都正常。将原先安装在其它逻辑盘的ODP for .Net 卸载重装到与ORACLE 10.2.0同一位置。重启系统,DEVELOPER还是报错,不过些时报错提示信息为空。 3、因为DEVELOPER设置有更改后,进入菜单TOOLS》PREFERENCES...设置,在ORACLE下的CONNECTION中,将ORACLE HOME和OCI LIBIARY设为空即自动检测。连接正常,问题解决。
二、应用程序中报错:
一个很难想到的引起ORA-12154的原因 使用OracleClient.OracleConnection时(我连的是Oracle 11g,其他版本未知),如果你的执行目录太长或者有括号等(未考察有些什么符号),那么即使你的服务名是对的,也会引起ORA-12154问题“TNS:无法处理服务名”,当出现这个问题时,请也考虑这个原因
原文链接:http://blog.csdn.net/loadrunn/article/details/7895726
相关文章推荐
- 封装JPA的数据操作DAO类
- neo4j的安装
- LightOJ 1032 Fast Bit Calculations(数位DP)
- 为什么要乘以unity_Scale.w?
- Android实战技巧之九:最新Android开发环境(Eclipse+ADT+Android 5.0)
- 黑马程序员——Java笔记——接口
- 求n^k的前缀和
- HDU 1874 畅通工程续
- Git -- 不错的指导
- spring项目中dubbo相关的配置文件出现红叉的问题
- topcoder13185 TreePuzzle
- 如何压缩虚拟机文件
- mapreduce Wordcount输入文件在hdfs上的实例
- ViewPager+Indicator(如何写indicator)
- 内存管理:内存泄漏和空悬指针
- FC400A与400B的区别
- ViewPager 详解(一)---基本入门
- MATLAB的cat()函数
- Android自定义控件之仿京东商城下拉刷新
- 用Maven构建项目&写一个简单的Mapper-Reducer