如何通过AWR报告优化Oracle数据库排序操作并调整PGA大小?
- 内容介绍
- 文章标签
- 相关推荐
本文共计888个文字,预计阅读时间需要4分钟。
相关主题
awr 报告里看到大量 sorts (disk),说明排序正在频繁写临时表空间——这不是靠改 sql 就能解决的,得调 pga_aggregate_target。
怎么看 AWR 里排序是否成瓶颈
打开 AWR 报告,在「Instance Activity Stats」部分找这两行:
-
sorts (memory):纯内存完成的排序次数 -
sorts (disk):溢出到临时表空间的排序次数
如果 sorts (disk) / sorts (memory) > 5%,基本可以断定 PGA 不够用。别只看单次 SQL 的执行计划——AWR 统计的是整个采样周期的累积行为,更反映真实负载。
补充查法:SELECT * FROM v$pgastat WHERE name = 'cache hit percentage';,低于 95% 就该警惕了。
为什么不能直接调 sort_area_size
Oracle 10g 起默认启用自动 PGA 管理,workarea_size_policy 是 AUTO,此时手动设 sort_area_size 会被忽略。强行设成 MANUAL 反而会破坏 Oracle 对不同工作区(排序、哈希、位图合并)的动态分配逻辑。
本文共计888个文字,预计阅读时间需要4分钟。
相关主题
awr 报告里看到大量 sorts (disk),说明排序正在频繁写临时表空间——这不是靠改 sql 就能解决的,得调 pga_aggregate_target。
怎么看 AWR 里排序是否成瓶颈
打开 AWR 报告,在「Instance Activity Stats」部分找这两行:
-
sorts (memory):纯内存完成的排序次数 -
sorts (disk):溢出到临时表空间的排序次数
如果 sorts (disk) / sorts (memory) > 5%,基本可以断定 PGA 不够用。别只看单次 SQL 的执行计划——AWR 统计的是整个采样周期的累积行为,更反映真实负载。
补充查法:SELECT * FROM v$pgastat WHERE name = 'cache hit percentage';,低于 95% 就该警惕了。
为什么不能直接调 sort_area_size
Oracle 10g 起默认启用自动 PGA 管理,workarea_size_policy 是 AUTO,此时手动设 sort_area_size 会被忽略。强行设成 MANUAL 反而会破坏 Oracle 对不同工作区(排序、哈希、位图合并)的动态分配逻辑。

