pga已透支运行:over allocation count非零即表明突破软限;total pga allocated超1.2倍pga_aggregate_target、pga memory freed back to os极低、one-pass>5%、max_mb剧烈抖动或贴近pga_aggregate_limit、workarea_size_policy非auto或存在手动参数,均需针对性干预。

别急着调大 pga_aggregate_target,AWR 里有更直接的证据告诉你它到底够不够用。
看 v$pgastat 里的 over allocation count
这是最硬的信号:只要这个值非零,说明 Oracle 已经被迫突破 pga_aggregate_target 的软限去分配内存,PGA 管理机制已在“透支运行”。
执行:SELECT name, value FROM v$pgastat WHERE name IN ('total PGA allocated', 'over allocation count', 'PGA memory freed back to OS');
-
over allocation count> 0 → 已触发强制扩堆,自动管理在兜底,但不是常态 -
total PGA allocated接近或超过pga_aggregate_target× 1.2(Oracle 允许的默认弹性上限),说明当前设置已逼近临界 - 注意:
PGA memory freed back to OS如果极低(比如
查 AWR 报告中 Workarea executions – multipass 是否非零
这一项出现在 AWR 的「SQL Statistics → Memory Statistics」页。它和 pga_aggregate_target 是否该调大几乎无关——只要它大于 0,问题就出在 SQL 本身或数据分布上,不是参数不够。
-
multipass> 0 → 必须干预对应 SQL:检查执行计划里排序/哈希是否严重低估了数据量、是否存在倾斜、统计信息是否陈旧 -
one-pass> 5% → 已开始落盘,性能下降明显,但还不算紧急;可结合sorts (disk)和hash joins (disk)统计值交叉验证 -
optimalworkarea_size_policy=AUTO 是否真生效,而不是加内存
对比 PGA Memory MBytes 指标波动与业务行为
运行:SELECT metric_name, ROUND(average, 1) avg_mb, ROUND(maxval, 1) max_mb FROM v$sysmetric WHERE metric_name = 'PGA Memory MBytes' AND intsize_csec > 6000;
在 macOS 上通过 LaunchAgent 安装、更新、运行和移除 OpenClaw Gateway Monitor + Gateway Watchdog。适用于用户请求一键部署监控的场景。
重点看 max_mb 相比 avg_mb 是否剧烈抖动(例如 > 20%):
- 抖动大 + 业务高峰吻合 → 很可能是某几条短时高内存 SQL 导致,应查 ASH 而非调参
- 抖动小 +
max_mb持续贴近pga_aggregate_limit→ 注意:如果pga_aggregate_limit设得太死(如仅 3MB ×processes),即使pga_aggregate_target没满,也会因硬限触发acknowledge over PGA limit等待事件 - 查限制:
SHOW PARAMETER pga_aggregate_limit,它默认是2 * pga_aggregate_target,但可能被显式改小
确认 workarea_size_policy 是否真正启用
很多“PGA 不够”的问题,其实是因为手动参数残留让 pga_aggregate_target 形同虚设。
执行:SHOW PARAMETER workarea_size_policySHOW PARAMETER sort_area_sizeSHOW PARAMETER hash_area_size
- 如果
workarea_size_policy不是AUTO,自动管理根本没开 - 如果
sort_area_size或hash_area_size非零,说明存在手动模式配置,会绕过pga_aggregate_target计算 - 还要检查是否有 SQL 带
+ OPT_PARAM('_smm_max_size' ...)这类 hint,它们会覆盖全局设置
真正卡住你的,往往不是总量不够,而是某条 SQL 在错误的时间申请了一块它不该申请的内存——AWR 里那些 multipass、抖动的 PGA Memory MBytes、非零的 over allocation count,都在指向具体位置。参数只是杠杆,撬不动没找准的支点。










