日期:2014-05-16  浏览次数:20445 次

【每日一摩斯】-Troubleshooting: High CPU Utilization (164768.1) - 系列3

LGWR & DBWR

这两个进程通常是和IO相关的,但是当存在操作系统问题,这两个进程可能"spin(等待)"直到IO操作完成。这种等待是一种CPU操作。异步IO操作的缓慢或失败也能证明它们是高CPU消耗的。

如果LGWR间歇地占用100%的CPU资源,那么异步输入输出AIO配置应该重新检查。作为一种临时性的方法,可以设置下面的参数防止LGWR出现等待的现象:

_lgwr_async_io=false

这个参数可以关闭LGWR的异步输入输出。

Note: 813473.1 LGWR Uses Async I/O Inspite Of Setting _lgwr_async_io=False

Note 7385253.8 Bug 7385253 - Slow Truncate / DBWR uses high CPU / CKPT blocks on RO enqueue

使用_lgwr_async_io=false关闭异步IO可能会提高数据库的性能,但也可能丢失COMMIT保证数据的风险。
根据@Maclean_liu的介绍,10.1.0.2到11.1.0.6之间,存在bug(Bug:8357698)导致_lgwr_async_io参数被设置后覆盖失效,11.2之后得到修复,但同时屏蔽了_lgwr_async_io参数被,LGWR是否启用async io完全取决于disk_asynch_io及filesystemio_options。