1、问题概述
故障简述:AWR 快照停止生成 操作系统:linux as 5.4 数据库:oracle 10.2.0.5 (RAC 2节点)
2、 故障现象
运行AWRRPT.SQL,发现8月11日后无snapshot信息,查询快照信息。
网友有提及此类故障,连接:http://blog.itpub.net/27064837/viewspace-750329/
3、问题定位
3.1 alert 中无任何告警信息
3.2 查询v$locked_object 发现 $WHR_SQL_PLAN 和$WHR_SQL_BIND_METADATA 被锁
3.3 2节点均出现M00进程trace log
*** KEWRAFC: Flush slave failed, AWR Enqueue Timeout *** 2015-08-11 23:00:52.036
*** KEWRAFC: Flush slave failed, AWR Enqueue Timeout *** 2015-08-11 23:01:52.109
*** KEWRAFC: Flush slave failed, AWR Enqueue Timeout *** 2015-08-11 23:02:52.141
*** KEWRAFC: Flush slave failed, AWR Enqueue Timeout *** 2015-08-11 23:03:49.183
*** KEWRAFC:Flush slave failed, AWR Enqueue Timeout *** 2015-08-11 23:04:49.256
*** KEWRAFC: Flush slave failed, AWR Enqueue Timeout *** 2015-08-11 23:05:49.289
3.4 2节点2问题时间段出现异步IO报错
Redo thread mounted by this instance: 2 Oracle process number: 68 Unix process pid: 2193, image: oracle@oadb2 (J001)
*** ACTION NAME:(GATHER_STATS_JOB) 2015-08-11 22:00:09.340 *** MODULE NAME:(DBMS_SCHEDULER) 2015-08-11 22:00:09.340 *** SERVICE NAME:(SYS$USERS) 2015-08-11 22:00:09.340 *** SESSION ID:(367.64849) 2015-08-11 22:00:09.340
WARNING:io_submit failed due to kernel limitations MAXAIO for process=0 pending aio=0 WARNING:asynch I/O kernel limits is set at AIO-MAX-NR=65536 AIO-NR=65476 WARNING:1 Oracle process running out of OS kernelI/O resources aiolimit=0
ksfdgo()+1488<-ksfdaio1()+9848<-kfkUfsIO()+594<-kfkDoIO()+631<-kfkIOPriv()+616<-kfdIOPriv()+95<-kfioSubmitIO()+503<-kfioRequestPriv()+166<-kfioRequest()+689<-ksfd_osmvio()+4275<-ksfd_osmvio()+4275<-ksfd_vio()+820<-ksfdvread()+668<-kcfrbd()+1773<-kcbz_table_scan_read()+3074 <-kcbzib()+20302<-kcbgtcr()+22190<-ktrgtc()+344<-kdiixs1()+4912<-qerixtFetch()+7335<-qergsFetch()+11294<-opifch2()+2944<-opiefn0()+402<-opipls()+3090<-opiodr()+1184<-rpidrus()+196<-skgmstack()+158<-rpidru()+116<-rpiswu2()+409<-rpidrv()+1516<-psddr0()+439<-psdnal()+386 <-pevm_EXIM()+250<-pfrinstr_EXIM()+53<-pfrrun_no_tool()+65<-pfrrun()+898<-plsql_run()+839<-peidxr_run()+246<-peidxexe()+89<-kkxdexe()+296<-kkxmpexe()+227<-kgmexwi()+565<-kgmexec()+1314<-evapls()+909<-evaopn2()+458<-kkxmexcs()+139<-opiexe()+16415<-kpoal8()+2295 <-opiodr()+1184<-kpoodr()+587<-upirtrc()+2101<-kpurcsc()+125<-kpuexecv8()+1705<-kpuexec()+2643<-OCIStmtExecute()+41<-jslvec_execcb1()+5623<-jslvswu()+258<-jslve_execute0()+3287<-jslve_execute()+712<-rpiswu2()+409<-kkjex1e()+8681<-kkjsexe()+720<-kkjrdp()+1415 <-opirip()+1151<-opidrv()+583<-sou2o()+114<-opimai_real()+317<-main()+116<-__libc_start_main()+244<-_start()+41
3.5 官方问题定位此为
10.2.0
.5 的
bug, ID 号为
9949948
Oralce metalink给出的解决办法为:
1) 增加系统参数 AIO-MAX-NR
2) 禁用异步IO (Disable async IO set DISK_ASYNCH_IO=FLASE )
3) 升级数据库到10.2.0 .5.2
4、最终解决处理过程: 根据oracle metalink的解决建议:
a) 修改操作系统内核参数 修改前: cat /proc/sys/fs/proc/sys/fs/aio-max-nr 65536 vi /etc/sysctl.conf 添加: fs.aio-max-nr = 1048576 执行命令使修改生效:sysctl -p
b) 启动AWR 并监控
c) 后期监控结果