一. Bug问题表现
CPU使用率100%,vmstat 显示有大量等待运行的进程,有大量的上下文切换。 sqlplus 和 lsnrctl 命令无效。 数据基本是hang住了。 啥都不能用。
该bug 存在与Oracle 10.2.0.1.
1.1 Top 显示
top - 04:46:06 up198 days, 22:05, 5 users, load average: 16.20, 16.63, 21.22
tasks: 112 total, 19 running, 93 sleeping, 0 stopped, 0 zombie
cpu(s): 26.3%us, 73.0%sy, 0.0%ni, 0.6%id, 0.0%wa, 0.0%hi, 0.1%si, 0.0%st
mem: 4026344k total, 3255488kused, 770856k free, 279252k buffers
swap: 4192924k total, 369088kused, 3823836k free, 2835992k cached
结合网上google的结果,该bug 对cpu 表现是。用户使用30%左右,系统使用70%。
系统启动198天,会触发这个bug。 解决这个问题一是升级数据库,二是定期重启操作系统。
1.2 vmstat 命令
[root@localhost ~]# vmstat 2
procs -----------memory---------- ---swap-------io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
36 0 369092 503308 2481042815564 1 1 31 5 0 0 1 1 97 1 0
36 0 369092 503308 2481042815600 0 0 0 10 1047 237 26 74 0 0 0
38 0 369092 503308 2481042815600 0 0 0 0 1045 232 25 75 0 0 0
...
--这里r 表示等待运行的进行,一般小于cpu的个数。 这里超过36. 超过CPU 很多倍,而且in 值过高。 in 表示context switch。
1.3 sqlplus 和 lsnrctl 命令不可用
使用这2个命令时,没有反应,挂住。包括sqlplus -prelim /nolog.
二. Bug 4612267 说明
MOS 上的2篇相关文章:
Bug 4612267 - OCI client spins when machineuptime >= 249 days [ID 4612267.8]
SQL*Plus 10.2.0.1 Hangs, When System UptimeIs Long Period of Time [ID 338461.1]
说明如下:
Affects:
Product (Component)
Oracle Server
Range of versions believed to be affected
Versions < 11
Versions confirmed as being affected
10.1.0.5
10.2.0.1
Platforms affected
Generic (all / most platforms affected)
Fixed:
This issue is fixed in
10.2.0.2
11.1.0.6 (Base Release
Description
OCIclients may spin once the machine has been up for longer than 249 days (24.9days on some machines). The spin will show repeated calls to times() fromsltrgatime64().
--根据官网的说法,是OS 系统超过249天,就会触发这个bug。 有时候是24.9 * N 天。 从我google的结果看,基本都是在198和199这两天触发这个bug。