ORA-12154 TNS无法解析指定的连接标识符
- 格式:doc
- 大小:37.00 KB
- 文档页数:3
Oracle ODBC错误码1、引言在使用Oracle数据库连接时,有时会遇到ODBC错误码。
这些错误码通常是由于连接不稳定、数据库配置问题或者客户端软件不兼容等原因引起的。
理解这些错误码以及如何解决它们对于维护Oracle数据库连接至关重要。
本文将为您介绍一些常见的Oracle ODBC错误码,并提供相应的解决方法。
2、错误码及解决方法2.1 错误码:ORA-12154ORA-12154错误通常表示TNS无法解析给定的数据库连接标识符。
这可能是由于TNS别名未正确配置或者网络连接问题所致。
解决方法:- 检查TNS别名是否正确配置,确保连接标识符对应的数据库信息是正确的。
- 检查网络连接是否正常,可以使用ping命令或者tnsping命令测试网络连接。
2.2 错误码:ORA-12541ORA-12541错误表示TNS未能建立与目标数据库的连接。
这可能是由于目标数据库未启动或者网络连接被阻止所致。
解决方法:- 确保目标数据库已经启动,可以通过在服务器上运行lsnrctl status 命令来检查监听器状态。
- 检查防火墙设置,确保网络连接未被阻止。
2.3 错误码:ORA-01017ORA-01017错误表示用户认证失败。
这可能是由于用户名或者密码错误所致。
解决方法:- 确保输入的用户名和密码是正确的,尤其是区分大小写。
- 如果是远程连接,可以尝试使用sqlplus命令本地连接数据库验证用户名和密码。
2.4 错误码:ORA-03114ORA-03114错误表示与服务器的通信失败。
这可能是由于网络连接丢失或者服务器意外关闭所致。
解决方法:- 检查网络连接是否稳定,可以通过ping命令测试网络延迟和丢包情况。
- 检查服务器日志,确认是否有意外关闭的记录。
3、常见问题及解决方法3.1 ODBC驱动版本不兼容有时候,ODBC驱动的版本与目标数据库的版本不兼容,会导致连接失败。
解决方法:- 升级或者降级ODBC驱动的版本,确保与目标数据库版本匹配。
Oracle 连接错误故障排除产品:Tableau Desktop, Tableau Server版本:All上次修改日期:24 Aug 2015Oracle 驱动程序需要具有唯一格式的特定连接语句。
然而,可能并不总是需要TNSNames.ora 文件。
例如,如果仅安装了 Tableau 提供的 Oracle 文件,且不具有独立的 Oracle 客户端。
Oracle 错误消息涉及 TNSNames.ora 文件。
通常,纠正“高级 Oracle 连接”对话框中的路由或命名语法,或者使用 .WORLD 数据库全名,即可解决大部分 Oracle 连接问题。
如果连接错误需要进一步进行故障排除,请参阅下面列出的 4 种常见连接错误。
•ORA-03113:通信信道上的文件结尾•ORA-12154:TNS:无法解决指定的连接标识符 HOST 值不正确或者全局名称不正确或未知的问题•ORA-12514:TNS 侦听器当前无法识别连接描述符中请求的服务SERVICE 值不正确•ORA-12541:TNS:无侦听器PORT 值不正确•ORA-00932:数据类型不一致ORA-03113:通信信道上的文件结尾ORA-03113 是任何干扰 Oracle 会话的问题的全捕获类型错误。
造成该错误的原因可能有很多。
请参阅下表,了解故障排除指南。
•请参阅特定于此错误的 Oracle 文档:我的 Oracle 支持。
o请参阅 Oracle 的 B 常见错误故障排除页面。
•Oracle 建议您检查网络问题并审查 SQL*Net 设置。
•如果连接到 Oracle 9.2.0.5,则在很多情况下,造成此错误的主要原因是 Oracle 错误 3010227。
请要求 Oracle 数据库管理员应用 Oracle修补程序 9.2.0.6 或适合您服务器的另一个修补程序。
•将 Oracle 初始化参数“STAR_TRANSFORMATION_ENABLED”设置为FALSE。
ORA-12514:TNS:监听程序当前⽆法识别连接描述符中请求的服务_监听程序不⽀持服务今天⼤黄蜂同学重启虚拟机之后再链接数据库就报了这个错,先查看了⼀下监听的状态C:> lsnrctl status... ...服务摘要..服务 "CLRExtProc" 包含 1 个实例。
实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...命令执⾏成功监听中的服务并没有数据库实例orcl,检查了⼀下listener.ora⽂件,配置并没有问题,怀疑是数据库启动时出了问题,导致监听并没有找到数据库服务,为了连上数据库,在listener.ora⽂件中强制添加orcl的监听SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(SID_NAME = CLRExtProc)(ORACLE_HOME = D:\app\Administrator\product\11.2.0\dbhome_1)(PROGRAM = extproc)(ENVS = "EXTPROC_DLLS=ONLY:D:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll"))# 以下是添加部分(SID_DESC =(GLOBAL_DBNAME = ORCL)(ORACLE_HOME = D:\app\Administrator\product\11.2.0\dbhome_1)(SID_NAME = ORCL)))然后重启监听,让监听可以识别orcl服务C:> lsnrctl stop... ...C:> lsnrctl start... ...服务 "ORCL" 包含 1 个实例。
实例 "ORCL", 状态 UNKNOWN, 包含此服务的 1 个处理程序...命令执⾏成功然后连接Oracle数据库,尝试重启数据库C:> sqlplus sys/sys@127.0.0.1/orcl as sysdba... ...SQL> shutdown immediate;ORA-01034 - Oracle not availableORA-27101 - shared memory realm does not exist⽹上⼤部分说是ORACL_HOME或ORACLE_SID问题,可惜并不适⽤,后找到⼀篇说查看⽇志,⽇志路径位于ORACLE_HOME\database\ORADIM.LOG,⽇志中找到数据库启动时的报错信息如下:Tue Jun 21 15:10:17 2016D:\app\Administrator\product\11.2.0\dbhome_1\bin\oradim.exe -startup -sid orcl -usrpwd * -log oradim.log -nocheck 0Tue Jun 21 15:10:33 2016ORA-00847: MEMORY_TARGET/MEMORY_MAX_TARGET and LOCK_SGA cannot be set together继续查询报错信息ORA-00847,看起来是数据库系统参数设置的问题,先把pfile导出看⼀下SQL> create pfile from spfile;创建了之后宝宝傻眼了,不在ORACLE_HOME/dbs⾥啊!后来经查才知原来Windows下pfile的默认⽣成路径和linux下不⼀样,位于$ORACLE_BASE\admin\db_name\pfile然后打开pfile注释掉MEMORY_TARGET参数的设置...# memory_target=898629632...然后从pfile启动数据库,根据pfile⽣成spfileSQL> startup pfile='D:\app\Administrator\admin\orcl\pfile\init.ora.115201614250';SQL> create spfile from pfile='D:\app\Administrator\admin\orcl\pfile\init.ora.115201614250';然后便可以重启数据库了,最后将listener.ora还原,重启服务器,再查看监听状态就可以看到orcl服务正常了C:> lsnrctl status... ...服务摘要..服务 "CLRExtProc" 包含 1 个实例。
今天整个一天我都在oracle中晃悠,修复PLSQL无法登陆的问题,到现在终于解决了。
感觉走了很多弯路,希望在这里能给大家一些帮助。
指导一下大家解决:忘记密码、用户被锁住,登陆时出现的ORA-12154 TNS无法解析指定的连接标识符、ORA-12514 TNS:监听进程不能解析描述符和ORA-12541 无监听程序。
这三类错误是经常见的,命名都十分相似。
下面我们来一一解决。
首先我要申明,这里提供多种解决方式,因为每个人电脑环境都不一样,造成这种错误的原因也各不相同,所以大家多尝试肯定会解决你的问题。
第一个问题:忘记密码怎么办?用户锁住了怎么办?1进入cmd2 sqlplus / as sysdba3alter user sys identified by 新密码;(例如:alter user scott identified by tiger) 这句话的意思是将scott用户的密码设置成by后面的字符串tiger。
当然你也可以新建一个用户,步骤如下1 进入cmd2sqlplus / as sysdba或者sqlplus sys/密码as sysdba3 create user 用户名identified by 密码;4grant connect,resource to 用户名;5 conn 用户名/密码说明:如果第5步可以连接成功说明,用户建立成功,就可以用这个用户登录了。
提示:这里的输入口令,你只要输入就可以,它不会显示出来的,输入完密码之后按下Enter就可以了,出现连接到:就说明成功连接数据库。
那么我们用刚刚修改了密码的scott登录时候出现了,用户锁住了,我们可以用sys登录,然后使用Alter user scott account unlock;出现用户已更改,说明解锁成功,可以使用scott用户登陆了。
这样对于密码的问题,我们就已经解决了。
---ORA-12154 TNS无法解析指定的连接标识符。
Oracle导dmp出现⽂件ORA-12154:TNS:⽆法解析指定的连接标识符问题的解决⽅案其实TNS⽆法解析是Oracle操作⾥经常遇到的问题,原因有⼆:(1)Oracle服务器没有装好(⼀般不建议重装,因为Oracle卸载不完全是没法重装的)(2)TNS没有配置现在本⽂给出解决⽅案:现在先测试⼀下tns是否可以ping,成功的界⾯⼤致如下(1)在oracle安装路径的tns配置⽂件⾥添加如下代码# tnsnames.ora Network Configuration File: d:\Oracle\product\10.2.0\client_1\NETWORK\ADMIN\tnsnames.ora# Generated by Oracle configuration tools.ORCL =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = ORCL)))其中orcl是我的数据库名称,这个需要根据需要配置(2)配置TNS环境变量环境变量类似于:D:\oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN补充:下⾯给出Oracle数据库还原的步骤⽰例1、将TESTDB.bmp放置在dpdump⽬录,如下路径:E:\app\Administrator\admin\orcl\dpdump2、创建⽤户create user testdb65 identified by “testdb65” default tablespace users temporarytablespace temp;⽤户授权grant connect,dba to testdb65;3、创建表空间CREATE TABLESPACE NNC_DATA01 DATAFILE ‘D:\tablespace\nnc_data01.dbf' SIZE 500MAUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K ;CREATE TABLESPACE NNC_INDEX01 DATAFILE ‘D:\tablespace\nnc_index01.dbf' SIZE 100MAUTOEXTEND ONNEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K ;4、导⼊ bgyhr2是来源库impdp testdb65/testdb65@orcl schemas=testdb65 dumpfile=TESTDB65.dmpimpdp ncjob65/ncjob65@orcl schemas=testdb65 dumpfile=TESTDB65.dmp导出 scott 是要导出的库expdp lfwtrain/a@orcl schemas=当前⽤户 dumpfile=expdptest.dmp以上所述是⼩编给⼤家介绍的Oracle导dmp出现⽂件ORA-12154: TNS: ⽆法解析指定的连接标识符问题的解决⽅案,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。
oracle 查找执行的alert语句在Oracle数据库中,可以通过查找执行的alert语句来获取数据库的警报信息。
警报是Oracle数据库中的一种通知机制,用于指示数据库中发生的异常或错误情况。
通过查找并分析执行的alert语句,可以帮助管理员及时发现和解决数据库中的问题。
下面列举了10个符合要求的Oracle数据库执行的alert语句。
1. ORA-00600: 内部错误代码,意味着数据库发生了一个未知的内部错误。
这是一个严重的错误,通常需要联系Oracle支持。
2. ORA-00942: 表或视图不存在,意味着查询中引用的表或视图不存在。
可能是由于表或视图不存在或没有使用正确的命名空间。
3. ORA-01555: 快照太旧,表示数据库无法满足查询的一致性要求,可能是由于长时间运行的查询或不正确的UNDO设置引起的。
4. ORA-01722: 无效数字,表示查询中的某个值无法转换为有效的数字格式。
可能是由于数据类型不匹配或数据格式错误引起的。
5. ORA-04031: 无法分配共享内存,意味着数据库无法为某个操作分配足够的共享内存。
这可能是由于内存不足或配置不正确引起的。
6. ORA-12154: TNS:无法解析指定的连接标识符,表示数据库无法解析连接字符串中指定的连接标识符。
可能是由于网络配置不正确或数据库不可用引起的。
7. ORA-12537: TNS:连接关闭,表示数据库在处理连接请求时关闭了连接。
可能是由于网络故障或数据库配置不正确引起的。
8. ORA-28000: 账户被锁定,表示数据库用户的账户被锁定,无法登录数据库。
可能是由于密码错误次数过多或由管理员手动锁定引起的。
9. ORA-01034: ORACLE未启动,表示数据库未启动或无法连接到正在运行的实例。
可能是由于数据库服务未启动或配置不正确引起的。
10. ORA-01578: ORACLE数据块损坏,表示数据库中的一个或多个数据块已损坏,无法读取或写入数据。
解决突然间Oracle上报Ora-12514TNS:监听程序当前⽆法识别链接描述符中请求的服务。
1、OracleServiceORACLE: 若该服务未启动,将会导致Oracle错误- Ora-12514:TNS:监听程序当前⽆法识别链接描述符中请求的服务。
2、OracleOraDb10g_home1TNSListener:该服务对应 %Oracle_Hoem\bin\TNSLSNR.EXE若该服务未启动,,将会导致Oracle错误- Ora-12514:TNS:⽆监听程序。
3、OracleServiceORACLE:若该服务未启动,将会导致Oracle错误- Ora-12514:TNS:监听程序当前⽆法识别链接描述符中请求的服务。
但是,启动了该服务也有可能导致该错误。
解决⽅法如下:打开:%Oracle_Home%/network/admin/listener.ora⽂件在SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(SID_NAME = PLSExtProc)(ORACLE_HOME = D:\Oracle\Oracle10g)(PROGRAM = extproc))后⾯添加:(SID_DESC =(GLOBAL_DBNAME = ORACLE)(ORACLE_HOME = D:\Oracle\Oracle10g)(SID_NAME = ORACLE))/******ORACLE 指当前数据库中需要开启哪个SID**************/最后变成:SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(SID_NAME = PLSExtProc)(ORACLE_HOME = D:\Oracle\Oracle10g)(PROGRAM = extproc)) (SID_DESC =(GLOBAL_DBNAME = ORACLE)(ORACLE_HOME = D:\Oracle\Oracle10g)(SID_NAME = ORACLE)))以上内容来源于,仅作学习使⽤。
ORA-12154:TNS:⽆法解析指定的连接标识符问题:ORA-12154:TNS:⽆法解析指定的连接标识符截图如下:我的解决步骤如下:1)查看监听状态lsnrctl status ,如果没有启动的话,使⽤lsnrctl start启动C:\Users\Administrator>lsnrctl statusLSNRCTL for64-bit Windows: Version 11.2.0.1.0 - Production on 11-8⽉ -2017118:08Copyright (c) 1991, 2010, Oracle. All rights reserved.正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.2.30)(PORT=1521))LISTENER 的 STATUS------------------------别名 LISTENER版本 TNSLSNR for64-bit Windows: Version 11.2.0.1.0 - Proction启动⽇期11-8⽉ -201711:45:20正常运⾏时间0天0⼩时2分48秒跟踪级别 off安全性 ON: Local OS AuthenticationSNMP OFF监听程序参数⽂件 E:\app\Administrator\product\11.2.0\dbhome_64\networadmin\listener.ora监听程序⽇志⽂件 e:\app\administrator\diag\tnslsnr\WIN-69CON556EF4\liener\alert\log.xml监听端点概要...(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.2.30)(PORT=1521)))服务摘要..服务"CLRExtProc"包含1个实例。
Oracle常见错误及解决办法Ø简介本⽂主要记录 Oracle 常见错误及解决办法,包括以下内容:1.ORA-00054: 资源正忙, 但指定以 NOWAIT ⽅式获取资源, 或者超时失效2.ORA-01034: ORACLE not available3.ORA-01261: Parameter db_recovery_file_dest destination string cannot be translated(启动数据库报错)4.ORA-12154: TNS: ⽆法解析指定的连接标识符5.ORA-12514: TNS:listener does not currently know of service requested in connect descriptor6.ORA-12541: TNS:no listener7.ORA-12560: TNS: 协议适配器错误8.ORA-27125: unable to create shared memory segment(启动数据库报错)9.ORA-28040: 没有匹配的验证协议((11g dblink 连接 12c 时)1.ORA-00054: 资源正忙, 但指定以 NOWAIT ⽅式获取资源, 或者超时失效n错误原因由于其他 Session 已经对⽬标表做了操作,并且已经有排他锁在表上了,所以新的 Session ⽆法再对表进⾏DDL操作。
n解决办法以 system ⽤户登录:1)查询被锁的会话IDselect session_id from v$locked_object;2)查询 sid, serial# 字段SELECT sid, serial#, username, osuser FROM v$session where sid = 9;3)将锁定的会话关闭ALTER SYSTEM KILL SESSION '9,99';2.ORA-01034: ORACLE not available1)检查当前数据库实例是否启动3.ORA-01261: Parameter db_recovery_file_dest destination string cannot be translated(启动数据库报错)n错误描述SQL> startupORA-01261: Parameter db_recovery_file_dest destination string cannot be translatedORA-01262: Stat failed on a file destination directoryLinux-x86_64 Error: 2: No such file or directoryn解决办法(没有效果)不知道是什么原因,导致 $ORACLE_BASE/fast_recovery_area 少了这个⽬录,⽽导致了这个错误。
Oracle连接出现ora-12154⽆法解析指定的连接标识符配置好rac后,两个节点⽤tnsping都可以ping通,但⽤sqlplus连接都出现以下错误,不知道哪⾥出了问题[oracle@rac2 admin]$ lsnrctl statusLSNRCTL for Linux: Version 9.2.0.4.0 - Production on 04-MAR-2008 08:32:26Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved.Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rac2)(PORT=1521)))STATUS of the LISTENER------------------------Alias LISTENERVersion TNSLSNR for Linux: Version 9.2.0.4.0 - ProductionStart Date 04-MAR-2008 08:29:03Uptime 0 days 0 hr. 3 min. 22 secTrace Level offSecurity OFFSNMP OFFListener Parameter File /home/oracle/9.2.0.4/network/admin/listener.oraListener Log File /home/oracle/9.2.0.4/network/log/listener.logListening Endpoints Summary...(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rac2)(PORT=1521)))Services Summary...Service "PLSExtProc" has 1 instance(s).Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...Service "esal" has 2 instance(s).Instance "rac1", status READY, has 1 handler(s) for this service...Instance "rac2", status READY, has 1 handler(s) for this service...The command completed successfully[oracle@rac2 admin]$ lsnrctl serviceLSNRCTL for Linux: Version 9.2.0.4.0 - Production on 04-MAR-2008 08:32:32Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved.Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rac2)(PORT=1521)))Services Summary...Service "PLSExtProc" has 1 instance(s).Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...Handler(s):"DEDICATED" established:0 refused:0LOCAL SERVERService "esal" has 2 instance(s).Instance "rac1", status READY, has 1 handler(s) for this service...Handler(s):"DEDICATED" established:0 refused:0 state:readyREMOTE SERVER(address=(protocol=tcp)(host=rac1)(port=1521))Instance "rac2", status READY, has 1 handler(s) for this service...Handler(s):"DEDICATED" established:0 refused:0 state:readyLOCAL SERVERThe command completed successfully[oracle@rac2 admin]$ sqlplus cy/zh@esalSQL*Plus: Release 9.2.0.4.0 - Production on Tue Mar 4 08:32:45 2008Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.ERROR:ORA-12154: TNS:could not resolve service nameEnter user-name:ERROR:ORA-01017: invalid username/password; logon deniedEnter user-name: cy/zh@rac1ERROR:ORA-12154: TNS:could not resolve service nameSP2-0157: unable to CONNECT to ORACLE after 3 attempts, exiting SQL*Plus[oracle@rac2 admin]$ sqlplus cy/zh@rac2SQL*Plus: Release 9.2.0.4.0 - Production on Tue Mar 4 08:32:59 2008Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.ERROR:ORA-12154: TNS:could not resolve service nameEnter user-name:按照如下过程,⼀般都能解决:在虚拟机内开cmd,⽤lsnrctl status查看监听器监听的服务如看到监听服务“orcl”,那在本机的tns配置中(SERVICE_NAME = orcl)必须写orcl;如果想要⾃定义,则在虚拟机内的listener 配置中就要加⼊⾃定义服务名,记得要重启监听服务:lsnrctl reload最后形成的配置⽂件如下虚拟机listener:SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = test) ⾃定义服务名(ORACLE_HOME = E:oracleproduct10.2.0db_1) db_home(SID_NAME = test))(SID_DESC =(PROGRAM = extproc)(SID_NAME = PLSExtProc)(ORACLE_HOME = E:oracleproduct10.2.0db_1) ##这个服务保证你可以使⽤外部过程,如C程序))本机tns:ORCL_XNJ =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 182.12.15.232)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = test) 与⾃定义服务名对应))再次连接,问题解决!记住,⼀定从最简单的原因找起,不要⼀上去就看到⽹上的什么改process数、注册表之类的,要想想本机能连为什么通过⽹络就不⾏,还是定位问题。
ORA-12154: TNS: 无法解析指定的连接标识符(原创)
(2010-06-25 17:04:27)
转载▼
分类:Oracle开发、架构、管理与调优
标签:
ora-12154
oracle
相信作为ORACLE数据库的开发人员没有少碰到“ORA-12154: TNS: 无法解析指定的连接标识符”,今天我也又碰到了类似的情况,将我的解决方法进行小结,希望能对碰到同样问题的友人们提供帮助。
问题场景描述:
服务器端版本:oracle 10.2.0.10
客户端版本:oracle 10.2.0.10
客户端开发工具:PL/SQL Developer
通过客户端来连接服务器,其主要文件就是通过客户端的tnsnames.ora来配置,在原文件的基础上增加:
SID别名 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = SERVER_IP)(PORT = 1521))
)
(CONNECT_DATA =
(SID = SID_NAME)
)
)
例:
dev_db =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.168.10.5)(PORT = 1521))
)
(CONNECT_DATA =
(SID = ora10)
)
)
通过PL/SQL Developer连接dev_db时,报“ORA-12154: TNS: 无法解析指定的连接标识符”。
(这个问题以前也碰到过,但解决方法不太一样,因具体的问题不太一样。
)
我将自己知道的一些解决方法说一下:
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,这时就可以正常登录了。
如果您还碰有ORA-12154:错误代码的其他原因和有其他的解决方法,请跟贴评论
我会加以完善这篇文章的!谢谢!
装了解决Oracle Developer Tools之后,出现“ORA-12154: TNS: 无法解析指定的连接标识符”报错的解决方法如下:
1.检查注册表,HKey_LocalMachine\Software\Oracle下面的Oracle_Home,若不对,修改成正确的;
2.卸载ODP for .Net (或者卸载ODT for .Net, ODT中包含ODP, ODT 是的一个集成插件,用于连接和浏览oracle数据库,并且提供对oracle数据库的拖拽操作,类似对于SQL Server的资源管理器);
3.如果ODT for .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: 无法处理服务名”,当出现这个问题时,请也考虑这个原因。