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 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. 最佳实践
- 定期生成:日常监控
- 基线对比:异常发现
- Top 5 优先:瓶颈
- SQL 深入:根因
- Instance Efficiency:健康
- I/O 分布:均衡
- 结合 ASH:实时
- 结合 ADDM:建议
- 历史对比:趋势
- 文档化:积累
14. 参考资料
[1] Oracle Database Performance Tuning Guide 19c, “AWR” https://docs.oracle.com/en/database/oracle/oracle-database/19/tgdba/automatic-workload-repository.html