发布网友 发布时间:2022-04-23 13:34
共3个回答
懂视网 时间:2022-05-05 21:07
一个人问了他的Windows客户端采用easy connect方式连接oracle服务器的时候,报错如下:ORA-12154:TNS:无法解析指定的连接标示符
今天在群里碰见了一个ORA-12154的问题,,在此记录一下解决过程
起因是群里面一个人问了他的Windows客户端采用easy connect方式连接Oracle服务器的时候,报错如下:
ORA-12154:TNS:无法解析指定的连接标示符
最初的想法是在服务器端的listener没有相关的service_name来接收请求,不过他后来给出的截图表明,确实有相关的service_name来接收这个请求。
而使用同样的easy connect语句,在另外一台服务器上,却是能够成功连接的。那么就说明是这台windows客户端的问题了
找了相关资料之后把问题锁定在了sqlnet.ora文件的一个参数上:
NAMES.DIRECTORY_PATH
查找文件找出这个文档的功能描述如下(具体可以参考:#sthref370):
Use the parameter NAMES.DIRECTORY_PATH to specify the order of the naming methods used for client name resolution lookups.
DEFAULT:
NAMES.DIRECTORY_PATH=(tnsnames, onames, hostname)
VALUES:
tnsnames local naming naming method
ldap directory naming naming method
ezconnect or hostname easy connect naming or host naming method
CDS CDS external naming method
nis Network information service(NIS) external naming method
从上文的说明当中,可以看到的是,该参数是指定客户端的命名方法的
针对如上问题,做了下面这个实验:
现在在使用tnsnames和Easy Connect都能正常连接客户端上将NAMES.DIRECTORY_PATH参数修改为如下值:
NAMES.DIRECTORY_PATH = (TNSNAMES)
然后我们在使用Easy Connect的连接方式进行连接,会发现:
D:>sqlplus mai/mai@192.168.0.123:1521/test
SQL*Plus: Release 10.2.0.3.0 - Production on 星期五 8月 2 17:42:12 2013
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
ERROR:
ORA-12154: TNS: 无法解析指定的连接标识符
请输入用户名:
好吧,就是这样。这个时候如果使用tnsnames进行连接的话,是依旧可以正常连接的
我们如果将参数修改为:
NAMES.DIRECTORY_PATH = (TNSNAMES,EZCONNECT)
Easy Connect连接方式可以正常连接
总结,在默认情况下,即使我们不配置NAMES.DIRECOTRY_PATH参数的话,我们依然可以用easy connect的连接方式连接Server端的,不过如果出现配置错误或者客户端类似的异常情况的话,这不失是一种解决方式
相关阅读:
SPFILE 错误导致数据库无法启动(ORA-01565)
ORA-01172、ORA-01151错误处理
ORA-00600 [2662]错误解决
ORA-01078 和 LRM-00109 报错解决方法
ORA-00471 处理方法笔记
ORA-00314,redolog 损坏,或丢失处理方法
ORA-00257 归档日志过大导致无法存储的解决办法
热心网友 时间:2022-05-05 18:15
关于asp.net中的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%\proct\10.2.0\db_1\NETWORK\ADMIN目录下的所有文件删了,然后重新连接,一般就能解决了。
说明一下:那个目录里的文件是在你建立连接的时候动态生成的,不要怕删了会有问题
4.进入PLSQL Developer的主界面,在登录界面选择取消即不登录进入主界面,然后选择菜单Tools(工具)-Preferences(首选项),在设置窗口中,选择Oracle-Connection(连接),对应设置窗口中,找到Oracle Home(Oracle主目录),选择你本地所安装客户端的版本,保存设置,然后重新启动PLSQL Developer,这时就可以正常登录了。
热心网友 时间:2022-05-05 19:33
你把你连ORACLE数据库的配置文件换成这种写法
<connectionStrings>
<add name="oracle" connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=服务器地址)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=服务器名称)));User ID=账号;Password=密码"/>
</connectionStrings>