ORA-12514及ORA-12504报错处理和原理分析

报错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、连接成功

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值