首页 » ORACLE [C]系列, ORACLE 9i-23c » Troubleshooting wait event ‘free buffer waits’

Troubleshooting wait event ‘free buffer waits’

Server processes 扫描 LRU 列表以获取free buffers (例如,在从磁盘读取块时,或为 CR 克隆缓冲区等时)。在将其扫描到阈值级别后,如果Server processes找不到free buffers,它会请求 DBWR 将 LRU 列表中的脏缓冲区写入磁盘,或a pinned buffer is freed。当 DBWR 写入脏缓冲区/释放固定缓冲区时,会话等待 ‘free buffer waits’。

AWR/statspack 报告 top timed event 显示在此等待事件上花费的数据库时间的很大一部分。

DB Name DB Id Unique Name Role Edition Release RAC CDB
ANBOB 2491810907 gjb PRIMARY EE 19.0.0.0.0 YES YES

Top 10 Foreground Events by Total Wait Time

Event Waits Total Wait Time (sec) Avg Wait % DB time Wait Class
free buffer waits 19,454,020 474.9K 24.41ms 33.7 Configuration
resmgr:cpu quantum 399,131 319.7K 800.94ms 22.7 Scheduler
DB CPU 287.4K 20.4
IPC send completion sync 95,832 127.2K 1327.56ms 9.0 Other
library cache lock 136,905 63.8K 466.24ms 4.5 Concurrency
library cache load lock 2,268 60.4K 26.62 s 4.3 Concurrency
buffer busy waits 23,668 49.5K 2090.85ms 3.5 Concurrency
latch: cache buffers chains 1,412,222 45.5K 32.25ms 3.2 Concurrency
latch: cache buffers lru chain 1,100,627 30.2K 27.44ms 2.1 Other
enq: HV – contention 7,878 26.8K 3406.05ms 1.9 Concurrency

Host CPU

CPUs Cores Sockets Load Average Begin Load Average End %User %System %WIO %Idle
224 112 4 196.21 129.87 17.3 65.0 0.4 17.3

 

分析思路
有 3 种主要情况会发生’free buffer waits’的高等待。

1, CPU BUSY

CPU使用率过高可以放大等待事件,其中后台进程没有获得足够的 CPU 来更快地进行。像上面的AWR更像是这种情况。

2,I/O SLOW或 DBWn busy

DBWR 清除脏块的速度不够快。检查慢 IO(数据文件写入性能差)。一些文件系统的写入性能很差(写入时间过长),并且正在影响 DBwriter 在缓冲区高速缓存中保持足够干净缓冲区的能力。

检查是否启用异步I/O, 或考虑增加DBWn 进程个数.调整检查点,以便我们可以足够快地刷新脏缓冲区。调优可以IO的SQL

3, buffer cache太小:
如果缓冲区缓存太小并且充满热块,那么会话将缺乏空闲缓冲区(干净、冷块),并且需要花费太多时间寻找空闲缓冲区和/或发布 DBWR 来写入脏块并生成他们免费。增加参数或 DB_CACHE_SIZE 并监视更改的效果。调优IO的SQL

 

需要收提供OSW数据。重点检查CPU、IO, 像以上案例中SYS %使用率有些高, 这是一个疑点。

打赏

对不起,这篇文章暂时关闭评论。