华为MetaERP 在 AWR 里区分 Buffer Cache 问题​ 和 PGA 问题,核心逻辑是:Buffer Cache 是“读不进来” → 等 I/O 把数据块装进内存​PGA 是“装不

发布时间:2026/9/8 0:28:14
华为MetaERP 在 AWR 里区分 Buffer Cache 问题​ 和 PGA 问题,核心逻辑是:Buffer Cache 是“读不进来” → 等 I/O 把数据块装进内存​PGA 是“装不 在 AWR 里区分Buffer Cache 问题​ 和PGA 问题核心逻辑是Buffer Cache 是“读不进来” → 等 I/O 把数据块装进内存​PGA 是“装不下” → 排序/Hash 溢到临时表空间两者等待事件完全不同不会混淆。下面给你一套“看等待事件就能秒判”的方法。一、先看 Wait Class 定性Wait Class对应内存区域含义User I/OBuffer Cache数据块不在内存要等磁盘读System I/OBuffer Cache / RedoDBWR/LGWR 后台写ConcurrencyShared Pool / Latch游标/锁竞争Temp/IO或直接看事件名PGA​排序/Hash 溢盘二、Buffer Cache 问题的特征等待事件核心事件等待事件含义db file sequential read单块读索引扫描/回表块不在 Buffer Cachedb file scattered read多块读全表扫块不在 Buffer Cachedirect path read大表直接读绕过 Buffer Cache11g 自动判定free buffer waitsBuffer Cache 严重不足DBWR 来不及腾空间latch: cache buffers chainsBuffer Cache 热块争用高并发访问同一块AWR 里的配套特征Buffer Hit %​ 低90%Physical reads/sec​ 高Top Segments​ 里MTL_MATERIAL_TRANSACTIONS索引/表排前列Buffer Cache Advisory加大后Est Phys Read Factor明显下降一句话判定等db file* Buffer Hit 低 物理读高 → Buffer Cache 装不下数据在磁盘上三、PGA 问题的特征等待事件核心事件等待事件含义direct path read tempPGA 不够排序结果溢到临时表空间​direct path write tempHash Join/排序写临时文件sorts (disk)高磁盘排序AWR 的 Instance Activity Stats 里PGA memory operation慢PGA 分配/回收等待AWR 里的配套特征In-Memory Sort %​ 低95%PGA Memory AdvisoryEstd Extra W/A MB Read/Written to Disk大PGA Overalloc Count 0Temp Tablespace​ 使用率飙升SQL ordered by Sorts/DiskINCTCW 或移动单分配 SQL 排前列一句话判定等direct path * temp 磁盘排序高 PGA Advisory 溢盘 → PGA 不够运算在临时表空间上四、对比表一眼区分维度Buffer Cache 问题PGA 问题等什么​db file sequential/scattered readdirect path read/write temp为什么等​数据块不在内存要读磁盘排序/Hash 放不下写临时文件命中率指标​Buffer Hit % 低In-Memory Sort % 低Advisory 看哪个​Buffer Cache AdvisoryPGA Memory Advisory溢出去哪​物理数据文件临时表空间INV 典型场景​MMT 全表扫报表、Workbench 无日期裁剪INCTCW 大批量过账、移动单分配大排序、15万序列号接口解决方向​加 db_cache_size / 分区 / SQL 加日期谓词加 pga_aggregate_target / 分批 / 减少排序行数五、实战AWR 里 30 秒定性Step 1打开 AWR → Top 10 Timed Foreground Events如果看到 db file sequential read 45% db file scattered read 20% → Buffer Cache 问题 如果看到 direct path read temp 50% direct path write temp 15% → PGA 问题 如果两者都有 看谁 % of DB Time 更高 → 谁是主瓶颈Step 2确认 AdvisoryBuffer Cache 问题 → 翻到Buffer Cache Advisory看 Size Factor1.0 行的Est Phys Read Factor如果加大到 1.5x 时因子掉一半 → 确认 Buffer Cache 不足PGA 问题 → 翻到PGA Memory Advisory看Estd Extra W/A MB Read/Written to Disk非 0 且大 → 确认 PGA 不足Step 3定位 SQLBuffer Cache →SQL ordered by Gets找扫MTL_*大表的 SQLPGA →SQL ordered by Sorts/Disk找排序大的 SQL六、INV 场景两个经典画面画面 1Material Workbench 全组织慢Top Events: db file sequential read 50% direct path read 20% Buffer Hit %: 82% Buffer Cache Advisory: 当前 4G → 6G 物理读降 40% → Buffer Cache 装不下 MMT加 Buffer Cache 加日期条件画面 2INCTCW 批量过账卡 temp 暴涨Top Events: direct path read temp 55% direct path write temp 20% In-Memory Sort %: 60% PGA Advisory: Overalloc1, Extra W/A8000MB → PGA 不够分批过账 加 pga_aggregate_target七、一句话总结等磁盘数据文件 Buffer Cache 不够读不进来​等临时文件 PGA 不够装不下溢出去了