如何解决ORA-12154:TNS:无法解析指定的连接标识符
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何解决ORA-12154:TNS:无法解析指定的连接标识符相关的知识,希望对你有一定的参考价值。
相信使用过Oracle数据库的人一定碰到过“ORA-12154: TNS: 无法解析指定的连接标识符”错误,我在此做一个小小的总结。在程序中连接Oracle数据库的方式与其他常用数据库,如:mysql,Sql Server不同,这些数据库可以通过直接指定IP的方式连接,但是Oracle则需要通过Oracle客户端配置网络服务名的方式来连接。否则就会出现“ORA-12154: TNS: 无法解析指定的连接标识符”。配置Oracle客户端详细步骤如下:
安装好Oracle客户端之后,在开始菜单中依次找到“Oracle - OraClient10g_home1—>配置和移植工具—>Net Manager”并打开(Win7,Win8用户如果没有取得Administrator账号登陆需要以管理员方式运行),依次展开“Oracle Net配置—>本地—>服务命名”点击左侧“加号”配置新的网络服务
最后,点击“下一步”完成即可,如果不知道或者忘记Oracle服务名可以通过查看服务获得,比如我这里配置的主机名是我本机,在我的电脑服务中找到oracle相关的服务
通过上面的服务名称,可以看出我安装的服务名就是“ORCL”,或者在服务端通过SQL Plus使用sys账号登陆,输入命令
show parameter service_name查看。
OracleDBConsoleORCL是Oracle网页端管理工具的服务,访问地址一般为“http://127.0.0.1:1158/em/console/logon/logon”,如果不习惯用这个来管理数据库可以不用启动。
OracleJobSchedulerORCL是管理Oracle中计划任务的,一般不用启动。
OracleOraDb10g_home1iSQL*Plus是SQL Plus的服务,如果不习惯在命令行下面操作数据库,可以不用启动。
OracleServiceORCL,OracleOraDb10g_home1TNSListener都需要开启,前者是主服务,后者是监听服务。
当在Oracle客户端中配置好Net Manager中配置好服务后就可以通过我们配置的网络服务名访问Oracle数据库了,此配置实质想D:\\Oracle\\product\\10.2.0\\client_1\\NETWORK\\ADMIN\\tnsnames.ora中增加了一行配置(由于我的Oracle是安装在D盘Oracle目录中,具体路径根据安装时选择的路径而定)。
# 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)
)
)
如果在同一台电脑上面同时安装了Oracle客户端和服务端,那么在服务端的安装目录中也会存在同样的配置文件D:\\Oracle\\product\\10.2.0\\db_1\\NETWORK\\ADMIN\\tnsnames.ora,在这种情况下如果我们配置好了客户端Net Manager然后连接Oracle数据库,可能会出现“ORA-12154: TNS: 无法解析指定的连接标识符”这时,你就应该怀疑,我到底访问的是哪个路径下的配置文件呢?此时可以使用tnsping命令
如果你是在客户端Net Manager中配置的网络服务,但是此时解析出来的使用参数文件却是D:\\Oracle\\product\\10.2.0\\db_1\\NETWORK\\ADMIN\\sqlnet.ora,那么我想你应该明白了。这种情况有两种解决办法:
第一:在服务端的Net Manager也配置相同的网络服务,或者直接拷贝D:\\Oracle\\product\\10.2.0\\client_1\\NETWORK\\ADMIN\\tnsnames.ora中的配置到D:\\Oracle\\product\\10.2.0\\db_1\\NETWORK\\ADMIN\\tnsnames.ora,每次配置了新的网络服务你都需要这么做,如果不想这么麻烦那就使用第二种解决办法。
第二:修改系统环境变量Path值,将D:\\Oracle\\product\\10.2.0\\client_1\\bin;路径移至D:\\Oracle\\product\\10.2.0\\db_1\\bin;前面即可一劳永逸。
注意:造成以上这种情况出现的原因是:在一台电脑上同时安装了oracle客户端和数据库服务,并且是先安装客户端,再安装数据库服务造成的,如果先安装数据库服务,再安装客户端就不会出现这种情况了。
根据以上方式配置完oracle后,相信在程序中就可以正常连接oracle数据库了。
当我安装好PLSQL Developer软件后登陆时任然出现了“ORA-12154: TNS: 无法解析指定的连接标识符”,如果是Win7,Win8用户甚至可以会出现弹出一个白框的情况,这时需要以管理员身份运行PLSQL Developer,并且确保你的PLSQL Developer是读取的oracle客户端配置,直接取消登陆,在PLSQL Developer工具栏中找到“Tools—>Preferences”,在Oracle的Connection节点中找到Oracle Home选择OraClient10g_home1,保存后关闭PLSQL Developer就可以正常登陆了。
需要注意的是,在安装PLSQL Developer时不能安装在带有括号的目录中,如64bit系统的Program Files (x86)目录,就会出现无论你怎么设置,它依然不停的弹出“ORA-12154: TNS: 无法解析指定的连接标识符”。同样的问题也会出现在其他Oracle数据库管理软件中,比如Toad for Oracle
“ORA-12154: TNS: 无法解析指定的连接标识符”是使用Oracle数据库的新手遇到的比较常见的问题之一,只要我们了解了它的工作方式,冷静排查,相信很容易就能够找到问题的解决办法的。 参考技术A 主要原因:
1.监听服务没有起起来。windows平台个一如下操作:开始---程序---管理工具---服务,打开服务面板,启动oraclehome92TNSlistener服务。
2.database instance没有起起来。windows平台如下操作:开始---程序---管理工具---服务,打开服务面板,启动oracleserviceXXXX,XXXX就是你的database SID.
3.注册表问题。regedit,然后进入HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\HOME0将该环境变量ORACLE_SID设置为XXXX,XXXX就是你的database SID.或者右几我的电脑,属性--高级--环境变量---系统变量--新建
,变量名=oracle_sid,变量值=XXXX,XXXX就是你的database SID.或者进入sqlplus前,在command line下输set oracle_sid=XXXX,XXXX就是你的database SID.
4. 本机DNS解析不对。
诊断工具:
1. tnsping命令:如果能够ping通,则说明客户端能解析listener的机器名,而且lister也已经启动,但是并不能说明数据库已经打开,而且tsnping的过程与真正客户端连接的过程也不一致。但是如果不能用tnsping通,则肯定连接不到数据库。
2.lsnrctl命令.
Oracle导dmp出现文件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\\dpdump
2、创建用户
create user testdb65 identified by “testdb65” default tablespace users temporary
tablespace temp;
用户授权
grant connect,dba to testdb65;
3、创建表空间
CREATE TABLESPACE NNC_DATA01 DATAFILE ‘D:\\tablespace\\nnc_data01.dbf’ SIZE 500M
AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K ;
CREATE TABLESPACE NNC_INDEX01 DATAFILE ‘D:\\tablespace\\nnc_index01.dbf’ SIZE 100M
AUTOEXTEND ON
NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K ;
4、导入 bgyhr2是来源库
impdp testdb65/testdb65@orcl schemas=testdb65 dumpfile=TESTDB65.dmp
impdp ncjob65/ncjob65@orcl schemas=testdb65 dumpfile=TESTDB65.dmp
导出 scott 是要导出的库
expdp lfwtrain/a@orcl schemas=当前用户 dumpfile=expdptest.dmp
补充:下面给出Plsql Developer客户端连接远程Oracle出现TNS无法解析的解决方案
详情见我的博客:http://blog.csdn.net/u014427391/article/details/56479085
以上是关于如何解决ORA-12154:TNS:无法解析指定的连接标识符的主要内容,如果未能解决你的问题,请参考以下文章
Oracle导dmp出现文件ORA-12154: TNS: 无法解析指定的连接标识符解决方案
Vs2015 进行调试的时候,显示“ORA-12154: TNS: 无法解析指定的连接标识符”