oracle监听防止连接风暴,Oracle常见故障——Listener类HangCrash及连接风暴的判断

Oracle常见故障——Listener类HangCrash及连接风暴的判断

Oracle常见故障——Listener类:Hang、Crash及连接风暴的判断

目录

监听状态正常,应用反馈时断时连

Listener进程crash

ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务

11G SCAN LISTENER无法注册服务故障

Listener hang

TNS-12535 TNS-00505处理

应用测试连接不上数据库,连接直接报TNS-12547: TNS:lost contact处理

由Oracle的Listener引起的报错很多,很大一部分是由于配置不当导致的。通常,我们要么从tnsnames.ora找原因,要么从lisntener.ora找原因。基本上,我们从Oracle连接的时候报出的错误代码可以快速查到原因。

下面介绍的几类故障及处理方法,难度稍微要大一些

1监听状态正常,应用反馈时断时连

故障现象:

客户端新发起的短连接时断时连,如下所示:

1d99b9d15aa4718b545d575ebdd41dcf.png

故障原因:

因短连接持续性发起连接耗尽监听ip 1521端口资源,导致监听无法正常处理连接请求。

超过每秒50次连接则需要关注,可通过tail -20f listener.log 观察,如持续性快速刷屏则可能已经出现连接风暴.

2b8546bdf4ee1fc5143fda7606d0952b.png

故障解决/日志分析:

71d978ae966ea079d41b7159f5b88085.png

2Listener进程crash

故障环境:

操作系统为:SunOS 5.10

数据库版本:Oracle 10.2.0.4

故障现象:

Listener进程已经crash, 查看主机数据库监听日志listener_ngsetdb3/4.log如下:

7179a57c4bbe45c629ccba3f6324c8a8.png

系统日志:

830676c28dbc06378fad8f6e3793961e.png

故障分析:

Listener进程crash是由于IPMP出现故障所致,Listener随后在探测不到服务节点时,直接crash。Oracle MOS文章Solaris Cluster 3.x: IPMP group failure impact [ID 1006916.1]对此有详细描述:在Sun Cluster中,短暂的网络故障会导致IPMP组失败,并触发资源组切换。并且,它会在38秒后回切!

处理方法:

查看监听日志listener.log跟系统日志(/var/adm/ messages)。

手动重启两个节点的Listener,Oracle提供了一个解决方案:修改/etc/default/mpathd文件下的IPMP FAILURE_DETECTION_TIME变量值,即将失败检测时间从默认的10秒(10000)增加到20秒(20000)以上

0e51fb4be4fec03e498ab07192ff73f8.png

注:修改该参数需要重启mpathd服务。

3ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务

故障现象:

客户端无法通过监听连接数据库

故障原因:

1.实例未注册到listener中,可通过lsnrctl status 查看

2.oracle process达到上限无法建立新的连接。

故障解决:

手工注册数据库,alter system register;

检查数据库用户连接分布情况,并show process 查看连接限制

Select username,count(1) from v$session group by username order by 2 asc;

Ps :大部分情况由开发商程序bug引起。

411G SCAN LISTENER无法注册服务故障

故障现象:

scan listener 无法注册service服务

故障原因:

bug 13066936

故障解决:

81c1c91dd89cfa50297fbebdabfa3fa1.png

5Listener hang

故障环境:

任意环境

故障现象:

从其他应用主机tnsping发现延迟很大

查看监听状态报如下错:

04aa5a34719e5604ed5cbd662d6ac7e5.png

listener.log有如下报错:

38c9d691ba080837f28d343eb57372a9.png

故障分析:

Too many open files意味着Maximum Number Of Open Files Per Process 达到了上限。因此listener hang住的原因是该limit设置过小。

处理方法:

将oracle用户的soft limit提升为至少1024,然后重新oracle用户登录,检验ulimit合格后,重新启动数据库和监听。

具体解决办法如下:

在/etc/system增加以下行

set rlim_fd_max=65536

set rlim_fd_cur=4096

重新登录ORACLE并检验oracle用户的限制

su – oracle

ulimit -Ha

ulimit –Sa

重新启动数据库和监听

6TNS-12535 TNS-00505处理

故障环境:

任意环境

故障现象:

Db alert日志报如下错误:

b35896be6e35621c5c21c24a141a3b64.png

故障分析:

一个客户端连接整个步骤:

客户端发起一个connection连接监听

监听启动一个专属进程(服务器进程,也就是我们通常说的LOCA=NO进程)用于接收这个connection

在专属进程启动之后,监听会将这个connection传递给这个专属进程

专属进程通过这个connection来跟客户端握手

专属进程跟客户端信息交换需要建立一个session

session打开

当在以上的第3步到第4步时客户端关闭,所以当专属进程尝试跟客户端联系时发现连接已关闭时,就会报出我们看到的错误!!

错误一般是由于程序异常断开导致超时,11g R1如果出现如上的错误信息会写入到sqlnet.log,11g R2会写入到alert.log,

其实出现此错误是正常的现象。

处理方法:

如果不想这样的信息打印在alert日志中,

在sqlnet.ora设置

DIAG_ADR_ENABLED = OFF

在listener.ora设置

DIAG_ADR_ENABLED_ = OFF

重启监听

7应用测试连接不上数据库,连接直接报TNS-12547: TNS:lost contact处理

故障环境:

环境:HP-UX 11.31 ia64

数据库版本:11.2.0.4

故障现象:

应用测试连接不上数据库,连接直接报TNS-12547: TNS:lost contact。

但查看监听状态,CRS状态,数据库状态均正常。CRS日志、CSS日志及AGENT日志均无报错。

故障分析:

应用连接数据库直接报TNS-12547: TNS:lost contact

监听日志发现一直在报连接失败:

1cdffe8cf61187b197a1f66f9a15244d.png

问题导致的原因有在32位平台中当listener.log超过2G会报这个错。

ORACLE_HOME下的一些执行文件权限不对也会导致相同的错误,但我们这个是64位的,排除第一种,

所以去查询执行文件的权限是否正常。

处理方法:

1、 通过对比发现部分执行文件少了S权限,做了relink all,重新同步执行文件

2、 由于数据库使用的是ASM,磁盘属组为asmadmin,故对比问题节点及正常节点DB ORACLE_HOME下属组为asmadmin的文件,将问题节点文件权限修正即可解决问题。

本文来自云栖社区合作伙伴"DBAplus",原文发布时间:2015-12-23

Oracle常见故障——Listener类HangCrash及连接风暴的判断相关教程

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值