oracle监听自动重启问题记录

AI 摘要 / TL;DR

oracle监听自动重启问题记录 问题背景 有一段时间,某数据库在整点期间总是会发出几条连接失败的告警,如下 | | | | | 2019 08 14 10:00:22, 29.211.?.?/??db can not connect, Warning from 5.223 mon\ pri\ conn.sh! | 分

来源: https://www.ucloud.cn/yun/130031.html 作者: IT那活儿 发布日期: 发布于2023-01-11 13:20

oracle监听自动重启问题记录

问题背景

有一段时间,某数据库在整点期间总是会发出几条连接失败的告警,如下

2019-08-14 10:00:22, 29.211.?.?/??db can not connect, Warning from 5.223-mon_pri_conn.sh!

分析过程

1.分析监听日志发现监听存在重启行为

14-AUG-2019 10:00:16 * (CONNECT_DATA=(SERVICE_NAME=dbinst1)(CID=(PROGRAM=sqlplus)(HOST=localhost.bss_rh6_dqjkj01_35.176)(USER=ftpuser))) * (ADDRESS=(PROTOCOL=tcp)(HOST=29.211.35.176)(PORT=19573)) * establish * dbinst1 * 0 2019-08-14T10:00:17.907210+08:00 14-AUG-2019 10:00:17 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=__jdbc__)(USER=))(SERVICE_NAME=dbinst1)) * (ADDRESS=(PROTOCOL=tcp)(HOST=29.211.177.93)(PORT=63570)) * establish * dbinst1 * 12518 TNS-12518: TNS:listener could not hand off client connection  <-----10:00:17****监听开始异常  TNS-12540: TNS:internal limit restriction exceeded 14-AUG-2019 10:00:17 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=__jdbc__)(USER=))(SERVICE_NAME=dbinst1)) * (ADDRESS=(PROTOCOL=tcp)(HOST=29.211.31.19)(PORT=43753)) * establish * dbinst1 * 12518 TNS-12518: TNS:listener could not hand off client connection  TNS-12540: TNS:internal limit restriction exceeded 14-AUG-2019 10:00:17 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=__jdbc__)(USER=))(SERVICE_NAME=dbinst1)) * (ADDRESS=(PROTOCOL=tcp)(HOST=29.211.35.160)(PORT=15812)) * establish * dbinst1 * 12518 TNS-12518: TNS:listener could not hand off client connection  TNS-12540: TNS:internal limit restriction exceeded .... 14-AUG-2019 10:00:20 * 12582 TNS-12582: TNS:invalid operation  TNS-12615: TNS:preempt error Error listening on: (ADDRESS=(PROTOCOL=ipc)(PARTIAL=yes)(QUEUESIZE=1)) 14-AUG-2019 10:00:21 * establish * 1159 TNS-01159: Internal connection limit has been reached; listener has shut down <---10:00:21监听自动重启 TNS-12540: TNS:internal limit restriction exceeded No longer listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=29.211.16.112)(PORT=1521))) No longer listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER))) No longer listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=29.211.16.131)(PORT=1521))) 2019-08-14T10:00:46.748331+08:00 System parameter file is /u01/app/12.2.0/grid/network/admin/listener.ora ---异常前每秒短连接      11 14-AUG-2019 09:59:55       1 14-AUG-2019 09:59:56       1 14-AUG-2019 09:59:57       1 14-AUG-2019 09:59:59      18 14-AUG-2019 10:00:00      16 14-AUG-2019 10:00:01      13 14-AUG-2019 10:00:02       4 14-AUG-2019 10:00:03       6 14-AUG-2019 10:00:04      10 14-AUG-2019 10:00:05 **<-----**监听重启前存在大量的短连接行为      53 14-AUG-2019 10:00:06      35 14-AUG-2019 10:00:07      47 14-AUG-2019 10:00:08      65 14-AUG-2019 10:00:09      105 14-AUG-2019 10:00:10      61 14-AUG-2019 10:00:11      31 14-AUG-2019 10:00:12      38 14-AUG-2019 10:00:13       5 14-AUG-2019 10:00:15       3 14-AUG-2019 10:00:16 **---**异常整个期间数据库等待事件正常,无明显高消耗

2.排查问题期间的os负载情况

OSWBB_ARCHIVE_DEST /u01/osw/oswbb/archive zzz ***Wed Aug 14 10:00:10 CST 2019 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st 31  6      0 446655712  33212 1998720    0    0     1     3    0    0  1  1 98  0  0 21 22    0 446779968  35236 2008236    0    0 16300    96 259964 240440 11  3 83  3  0 25 27   0 446795360  37040 2020368    0    0 29096    48 235608 212541 11  3 82  4  0 zzz ***Wed Aug 14 10:00:24 CST 2019 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st 6 18      0 443893696  72420 2204804    0    0     1     3    0    0  1  1 98  0  0 13 12     0 444055840  74432 2228936    0    0 22880    16 90258 85804  5  2 88  6  0 6 17    0 444172864  76036 2250128    0    0 19980   100 70041 61176  4  3 86  7  0 zzz ***Wed Aug 14 10:00:36 CST 2019 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st 6 20     0 444360928  83052 2341764    0    0     1     3    0    0  1  1 98  0  0 6 24     0 444552928  83740 2098432    0    0  4436  1212 67242 61741  4  3 85  8  0 125 220      0 444898240  84812 2102292    0    0  3892  1544 174504 140362 12 13 55 19  0 1.10****秒的时候 r21 b22, 该机器为ssd存储,平常cpu-b不到5,这里值已经有点异常 2.36秒的时候出现r 125 b220**,可能为监听重启积压导致,且异常时间点在监听重启后,不能确认是该问题导致故障****。**
top - 10:00:36 up 288 days, 14:24,  2 users, load average: 215.59, 68.64, 29.25 Tasks: 8823 total,  15 running, 8808 sleeping,   0 stopped,   0 zombie Cpu(s):8.4%us,  2.2%sy,  0.0%ni, 88.6%id,  0.6%wa,  0.0%hi,  0.3%si,  0.0%st Mem:  1058551988k total, 611291252k used, 447260736k free,    87332k buffers Swap: 20971516k total,        0k used, 20971516k free,  2151908k cached 1.近一分钟load达到215**,且较5分钟、15分钟load值出现直线上升。** 2.通常在linux****平台 load avg为系统整体load, 包含 **cpu load, io load等等.**简单理解为 R+D状态的process,不代表cpu使用率,但load高一定存在某一方面的高负载情况.
重点排查一下异常期间的****ps 数据,排除S(sleep)状态进程,可以看到大量的IO相关D进程 [oracle@dbserver1 tmp]$ cat /tmp/ps1024.txt  

问题原因

1.通过与应用侧沟通了解到在整点期间app营业厅会推出抢购活动导致短连接明显的上升

2.主机管理员反馈由于本地盘RAID出现故障盘导致响应异常,以至于大量短连接挂死在ORACLE_HOME的lib库读取上,达到监听队列上限值后引发监听重启.

改进措施

1.推进应用程序短连接进行连接池化整改。

2.更换本地盘为SSD存储提升ORACLE_HOME的读写性能。

注:本次故障版本为oracle12.2,在oracle12c之后的版本中,数据库会持续写出大量的垃圾trace信息不仅影响IO性能且影响文件系统正常使用率,建议多带带指定diag目录以及使用SSD存储安装ORACLE_HOME 。

END