系统概况:AIX 6100-01-09-1015,物理内存32GB,SWAP 32GB,Oracle 11.2.0.1 RAC,存储由ASM管理,上层应用为Oracle Siebel。故障现象:用户反映性应用软件性能差,检查发现数据库服务器计算内存92%,SWAP区使用70%,rootvg磁盘hdisk0和hdisk1繁忙100%。分析:很显然是内存使用超过承受极限,导致系统资源没有用于正常的工作,而是用于大量换页操作,需要找出罪魁祸首。$ ps gv | egrep -v RSS | sort +6b -7 -n -r 20250712 - A 2063:39 293 27528700 6654340 xx 65743 4196 0.0 22.0 oracl 7471324 - A 411:48 31 80604 145596 xx 65710 66064 0.0 0.0 oracl 9240638 - A 415:01 32 80540 145552 xx 65710 66084 0.0 0.0 oracl 13566116 - A 915:03 3451 63680 116188 xx 162230 82364 0.0 0.0 ora_lm 6750224 - A 3828:07 72 108500 108912 xx 1244 1420 0.0 0.0 oracl 12451858 - A 908:29 1508 47308 108284 xx 162230 82364 0.0 0.0 ora_lm 13697212 - A 914:11 1654 39024 105820 xx 162230 82364 0.0 0.0 ora_lm 13435040 - A 2045:04 2833 40068 105672 xx 162230 82364 0.0 0.0 ora_di 31653892 - A 0:02 0 21588 103952 xx 162230 82364 0.0 0.0 oracle 14942430 - A 2:37 6894 46516 103876 xx 162230 82364 0.0 0.0 ora_ar 33095902 - A 0:02 0 21416 103780 xx 162230 82364 0.0 0.0 oracle 15139038 - A 2:34 8101 46512 103776 xx 162230 82364 0.0 0.0 ora_ar 15204572 - A 2:36 7792 46524 103628 xx 162230 82364 0.0 0.0 ora_ar注:上述命令列出进程信息,以进程占用内存量(第7列,单位为KB)从大到小排列。可以看出第一个进程20250712占用了6.5GB内存,进一步查询其信息:$ ps -ef | grep 20250712 | grep -v grep root 20250712 1 0 Dec 01 - 2063:41 oracle/app/grid/bin/orarootagent.bin
处理:
orarootagent.bin是可以杀的,被杀后会自动重启,不影响GI和数据库运行:$ kill -9 20250712kill后,计算内存70%,SWAP 8%,hdisk0和hdisk1不再忙,系统恢复正常。
根据文档ORAAGENT or ORAROOTAGENT High Resource (CPU, Memory etc) Usage (Doc ID 1062676.1),有很多Bug与此相关,特别是在运行很长时间没有重启GI时,oraagent.bin或orarootagent.bin会占用大量内存、CPU、线程资源,甚至会导致节点被踢出集群或挂起。
11.2.0.1是11gR2的初始发布版本,Bug比较多,之前这个数据库也有遇到其它一些Bug,升级到相对稳定的11.2.0.4并安装较新的PSU和重要的补丁是一个比较好的选择,但由于上层应用是Siebel,升级数据库会涉及比较多的环节,用户一直没有下定决心升级,因此对这个问题只能加强监控,一旦发现orarootagent.bin占用较多内存(如超过0.5GB),进行kill处理,以保持数据库正常运转。