irpas技术客

ORA-12514及ORA-12504报错处理和原理分析_石榴花下_ora-12504

irpas 1048

报错1: 如果sqlplus oracle/oracle@orcl 进行数据库连接的时候,报错是: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

这个是因为客户端向监听请求的服务不在监听中存在。 排查: 1、tnsping orcl 查看客户端请求的服务 Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.56)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl1111)))

2、 查看监听器中监听的服务lsnrctl status

3、修改tnsnames.ora中的service_name为监听器中监听的服务名

报错2: 如果sqlplus oracle/oracle@orcl 进行数据库连接的时候 ORA-12504: TNS:listener was not given the SERVICE_NAME in CONNECT_DATA

翻译一下这个报错,含义是在tnsnames.ora中CONNECT_DATA字段里的service_name值没有给到listener,也就是listner没有收到服务请求。

排查: 1、tnsping一下orcl,解析结果中的确发现service_name没有值 Used HOSTNAME adapter to resolve the alias Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=))(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.0.131)(PORT=1521))) OK (0 msec)

2、考虑到解析orcl,一般是通过TNSNAMES、HOSTNAME、EZCONNECT 这几种方式来按顺序搜索来解析,检查发现配置文件中有TNSNAMES和HOSTNAME两个值,并且这个是按顺序来解析,从tnsping结果中看到是通过HOSTNAME来解析的

3、查看tnsnames.ora,发现存在orcl这个连接描述符,按理来说,应该是通过tnsnames.ora来解析, 跟踪进程处理过程

检查文件的权限 -rw-r-----. 1 oracle oinstall 327 Apr 9 22:11 tnsnames.ora 发现操作系统用test没有对tnsnames.ora的读权限

进行赋权: chmod o+r tnsnames.ora

再次测试: Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.56)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICAT ED) (SERVICE_NAME = orcl))) OK (0 msec)

4、连接成功


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #ora12504 #报错1如果sqlplus #TNSlistener #does #not #currently