当前位置: 首页 > 图文教程 > 数据库 > Oracle > ORA-12154: TNS: 无法解析指定的连接标识符

Oracle
oracle sys_connect_by_path 函数 结果集连接
oracle join on 数据过滤问题
Oracle 当前用户下所有表的记录总数
oracle 树查询 语句
oracle 触发器 实现出入库
Oracle 函数大全
oracle 删除重复数据
ORACLE 最大连接数的问题
oracle 层次化查询(行政区划三级级联)
oracle 查询表名以及表的列名
Oracle 数据显示 横表转纵表
oracle 服务启动,关闭脚本(windows系统下)
ORCLE 表中列的修改
oracle 数据库连接分析
Oracle 实现类似SQL Server中自增字段的一个办法
Oracle 常用的SQL语句
Oracle 数组的学习 小知识也要积累,养成好的学习态度
Oracle 日期的一些简单使用
Oracle 数据库连接查询SQL语句
Oracle DBA常用语句

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-31   浏览: 167 ::
收藏到网摘: n/a

    前几天,同事装上oracle的客户端,在ASP.Net下面怎么连都连不到oracle数据库(操作系统是XP,报错找不到OIC.DLL,之前我也遇到过,重装了一下客户端就好了,我用的是2000 professional的系统)。后来我到Oracle官方网站上寻找解决方案,下载了Oracle Developer Tools for Visual Studio .NET 10.1.0.4.0 (ODT for VS.Net),把它装上之后,可以在.net中浏览oracle数据库,估计可以浏览oracle数据库了,应该可以操作oracle数据库,鼓吹通事把ODT for VS.Net装上之后,果然他的机器上的ASP.Net程序可以正常连接oracle了,就是这个问题,昨天装了整整一天的系统。

    今天上午他的问题刚刚解决,下午我这边就出了问题,连接oracle时报错,信息如下"ORA-12154: TNS: 无法解析指定的连接标识符", 到google上到处搜,看到一些英文的网站的答案是修改tnsname.ora就可以修复连接。检查了一下也没发现这个文件的问题。

    估计是安装ODT for VS.Net之后,OracleHome和OracleSID有重复或者无效, 到注册表中一看,果然是有问题,发现HKey_LocalMachine\Software\Oracle下面的Oracle_Home路径被改成了E:\program files, 我的oracle是装在E:\oracle目录的,于是把这个改了,再试,系统也重起了,依然无效,后来想干脆把ODT 给删了,于是到控制面板找Oracle Developer Tools, 怎么都找不到,到是找到了ODP for .Net,把这个给卸载了,以前装的Oracle Developer Tools目录(E:\Oracle\product\10.1.0\Client_1)依然没有被删除,于是手动删除这个目录,提示OCI.dll正在使用,无法删除,再尝试把这个目录给重命名了,居然命名成功。于是重启系统,再运行Asp.Net的客户端,成功连接Oracle数据库。

    总结一下,装了解决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 9i,其他版本未知),如果你的执行目录太长或者有括号等(未考察有些什么符号),那么即使你的服务名是对的,也会引起ORA-12154问题“TNS: 无法处理服务名”,当出现这个问题时,请也考虑这个原因。