easy connect 之 ORA-12154: TNS: 无法解析指定的连接标识符
用easy connect连接出现“tns无法解析指定的连接标示符”的错误,如下:
C:\Users\Administrator>sqlplus username/pwd@192.168.0.5:1521/orcl
SQL*Plus: Release 10.2.0.1.0 – Production on 星期一 5月 21 18:16:20 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
ERROR:
ORA-12154: TNS: 无法解析指定的连接标识符
请输入用户名:
用连接字符串连接一下,发现没有问题。
C:\Users\Administrator>sqlplus username/pwd@orcl_5
SQL*Plus: Release 10.2.0.1.0 – Production on 星期一 5月 21 20:29:42 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 – 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
tnsping一下,看看是不是ip地址或者端口写错了,经过观察,确实没有任何问题。
C:\Users\Administrator>tnsping orcl_5
TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 – Production on 21-5月 -2012 20:31:59
Copyright (c) 1997, 2005, Oracle. All rights reserved.
已使用的参数文件:
D:\oracle\product\10.2.0\client_1\network\admin\sqlnet.ora
已使用 TNSNAMES 适配器来解析别名
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.5)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcl)))
OK (40 毫秒)
C:\Users\Administrator>
转到服务器端,发现用easy connect连接也没有什么问题。
我们再回到错误中“ORA-12154: TNS: 无法解析指定的连接标识符”,我没用连接串,为什么报tns无法解析,我们再做个测试,随便写个连接串,如下:
C:\Users\Administrator>sqlplus username/pwd@sssssss
SQL*Plus: Release 10.2.0.1.0 – Production on 星期一 5月 21 21:15:13 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
ERROR:
ORA-12154: TNS: 无法解析指定的连接标识符
请输入用户名:
原来也是这个错误,也就是说,把“192.168.0.5:1521/orcl”这个当成个连接字符串了。
我们打开sqlnet.ora文件,里有如下两个配置项
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES)
重点是NAMES.DIRECTORY_PATH这个配置项,发现了问题。
NAMES.DIRECTORY_PATH:配置网络连接时所使用的连接方式,一般情况有tnsnames,hostname,onames,ezconnect,ldap等,出问题的客户端,用的是tnsnames,怪不得它把“192.168.0.5:1521/orcl”当成连接字符串来用。
解决办法:
1)sqlnet.ora文件添加连接方式,如下:
NAMES.DIRECTORY_PATH= (TNSNAMES,EZCONNECT)
2)干脆把这个参数干掉,即注释掉即可,如下:
#NAMES.DIRECTORY_PATH= (TNSNAMES)
至此问题解决。