Oracle AWR 报告深度分析

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 sizeRedo 大小
Logical reads逻辑读
Block changes块变更
Physical reads物理读
Physical writes物理写
Parses解析次数
User calls用户调用
ExecutionsSQL 执行

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