Oracle AWR 报告深度分析

适用版本:Oracle Database 10g / 11g / 12c / 19c / 23ai
文档版本:v1.0 / 2026-07


1. 概述

AWR 报告深度分析要点[1]:

关键章节:

  • Load Profile
  • Top 5 Timed Events
  • SQL Statistics
  • Instance Efficiency
  • I/O Statistics

2. Load Profile

2.1 关键指标

指标 说明
DB Time(s) DB 工作时间
Redo size Redo 大小
Logical reads 逻辑读
Block changes 块变更
Physical reads 物理读
Physical writes 物理写
Parses 解析次数
User calls 用户调用
Executions SQL 执行

2.2 分析

  • DB Time / Elapsed = AAS(平均活跃会话)
  • AAS > CPU 数:瓶颈
  • Hard parses 高:绑定变量问题

3. Top 5 Timed Events

3.1 关键等待

db file sequential read   - 索引读
db file scattered read    - 全表扫描
log file sync             - 提交等待
enq: TX - row lock        - 行锁
gc cr block 2-way         - RAC

3.2 分类

  • User I/O
  • Application
  • Concurrency
  • Commit
  • Configuration

4. SQL Statistics

4.1 Top SQL by Elapsed Time

SELECT sql_id, elapsed_time, executions
FROM dba_hist_sqlstat WHERE snap_id BETWEEN ...;

4.2 Top SQL by Buffer Gets

  • 高逻辑读 SQL

4.3 Top SQL by Disk Reads

  • 高物理读 SQL

4.4 Top SQL by Parse Calls

  • 高解析 SQL(绑定变量问题)

5. Instance Efficiency

5.1 关键命中率

指标 健康值
Buffer Cache Hit > 95%
Library Cache Hit > 99%
Parse (Soft) > 99%
Execute/Parse > 90%
Redo NoWait > 99%
In-Memory Sort > 99%

5.2 异常分析

  • Buffer 低:增 SGA
  • Library 低:绑定变量
  • Hard Parse 多:绑定变量
  • Disk Sort 多:增 PGA

6. I/O Statistics

6.1 Tablespace I/O

表空间读写次数
平均响应时间

6.2 File I/O

数据文件 I/O
平均响应时间

6.3 健康指标

  • 平均响应时间 < 10ms
  • 均衡分布

7. Wait Classes

7.1 分类

User I/O       - 用户 I/O
System I/O     - 系统 I/O(DBWn, LGWR)
Application    - 应用(锁)
Concurrency    - 并发(latch)
Commit         - 提交
Configuration  - 配置
Network        - 网络
Idle           - 空闲

7.2 分析

  • User I/O 高:检查 SQL
  • Application 高:锁问题
  • Concurrency 高:latch/mutex

8. Baseline 对比

8.1 创建基线

EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(
  start_snap_id => 100, end_snap_id => 110,
  baseline_name => 'normal'
);

8.2 对比报告

@?/rdbms/admin/awrddrpt.sql  -- 对比报告

9. Top SQL 详细分析

9.1 执行计划

SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_AWR('&sql_id'));

9.2 SQL Monitor

SELECT DBMS_SQLTUNE.REPORT_SQL_MONITOR(sql_id => '&sql_id') FROM dual;

9.3 历史性能

SELECT 
  snap_id,
  elapsed_time_total,
  executions
FROM dba_hist_sqlstat
WHERE sql_id = '&sql_id'
ORDER BY snap_id;

10. ADDM 建议

-- 查看 ADDM
SELECT * FROM dba_advisor_findings WHERE task_name LIKE 'ADDM%';

详细见:Oracle 自动化诊断 ADDM/ASH/AWR。


11. 实战分析

11.1 案例:数据库慢

1. AWR Load Profile
   - DB Time >> Elapsed: 高负载

2. Top 5 Events
   - db file sequential read 60%: 索引读
   - log file sync 20%: 提交等待

3. Top SQL
   - SQL 高 disk reads: 全表扫描
   - 优化索引

4. Instance Efficiency
   - Library Cache 95%: 偏低
   - Hard Parse 10%: 绑定变量

5. 优化
   - 加索引
   - 绑定变量
   - 增大 SGA

11.2 案例:锁等待

1. Top 5 Events
   - enq: TX - row lock 80%

2. ASH
   - 找阻塞会话
   - 杀掉/优化

12. 常见坑与排错

12.1 AWR 数据不全

-- 1. 检查保留期
SELECT retention FROM dba_hist_wr_control;

-- 2. SYSAUX 空间

12.2 报告时段错

-- 确认问题时段
SELECT snap_id, begin_time, end_time 
FROM dba_hist_snapshot
WHERE begin_time > SYSDATE - 1
ORDER BY snap_id;

13. 最佳实践

  1. 定期生成:日常监控
  2. 基线对比:异常发现
  3. Top 5 优先:瓶颈
  4. SQL 深入:根因
  5. Instance Efficiency:健康
  6. I/O 分布:均衡
  7. 结合 ASH:实时
  8. 结合 ADDM:建议
  9. 历史对比:趋势
  10. 文档化:积累

14. 参考资料

[1] Oracle Database Performance Tuning Guide 19c, “AWR”
https://docs.oracle.com/en/database/oracle/oracle-database/19/tgdba/automatic-workload-repository.html