一、开篇AWR是DBA的“听诊器”某天业务部门反馈数据库响应变慢DBA登录后面对数百个性能指标一时不知从何入手。font color#D32F2F这时AWR报告就是最有力的诊断工具——它就像数据库的“体检报告”记录了特定时间段内的所有关键性能指标包括Top等待事件、负载画像、SQL统计、缓存命中率等。/fontfont color#1976D2AWRAutomatic Workload Repository是Oracle自动采集的性能数据仓库默认每60分钟生成一次快照保留8天。通过分析两个快照之间的性能差异可以快速定位性能瓶颈。/font本篇文章从AWR报告的生成方法、报告结构、核心指标解读到实战分析全面覆盖AWR报告的使用技巧帮助你快速掌握这一DBA必备的诊断技能。二、AWR报告生成方法1. font color#1976D2生成AWR报告的三种方式/font方式一使用awrrpt.sql脚本最常用$ORACLE_HOME/rdbms/admin/awrrpt.sql -- 按提示输入 -- 1. 报告类型HTML或TEXT -- 2. 开始快照ID -- 3. 结束快照ID -- 4. 报告名称方式二直接调用DBMS_WORKLOAD_REPOSITORY包SELECT output FROM TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_TEXT( l_dbid 1234567890, l_inst_num 1, l_bid 100, l_eid 101 ));方式三使用Oracle Enterprise ManagerOEM登录OEM → 性能 → AWR → 生成报告2. font color#F57C00查看可用的AWR快照/fontSELECT snap_id, TO_CHAR(begin_interval_time, YYYY-MM-DD HH24:MI:SS) AS begin_time, TO_CHAR(end_interval_time, YYYY-MM-DD HH24:MI:SS) AS end_time, startup_time FROM dba_hist_snapshots WHERE begin_interval_time SYSDATE - 7 ORDER BY snap_id;3. font color#388E3CAWR快照管理/font-- 查看快照保留策略 SELECT retention/1440 AS retention_days, snap_interval/60 AS snap_interval_minutes FROM dba_hist_wr_control; -- 修改快照间隔30分钟和保留时间14天 BEGIN DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS( retention 20160, -- 14天分钟 interval 30 -- 30分钟 ); END; / -- 手动创建快照 EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT;三、AWR报告结构全景图AWR报告结构报告头报告概要 Summary主要部分 Main附录 Appendix数据库标识信息快照时间范围主机配置-CPU/内存Load Profile 负载画像Instance Efficiency 命中率Top 5 Timed Events 等待事件SQL Statistics SQL统计Wait Events 等待事件详情Segment Statistics 段统计I/O Statistics I/O统计Advisor Statistics 建议统计Buffer Pool StatisticsPGA StatisticsUndo StatisticsLatch Statistics报告结构解读font color#1976D2蓝色Load Profile/font 系统负载画像每秒/每事务的资源消耗。font color#388E3C绿色Instance Efficiency/font 缓存命中率判断内存配置是否合理。font color#D32F2F红色Top 5 Timed Events/font 最关键的等待事件性能瓶颈的第一入口。四、AWR报告头部分析1. font color#1976D2数据库标识信息/fontDB Name DB Id Instance Inst# Release RAC Host ------------ ---------- --------- ----- --------- --- ------------ ORCL 1234567890 orcl 1 19.0.0.0 NO prod-server Snap Id Snap Time Sessions Cursors/Session ------------ ---------------- -------- --------------- Begin Snap: 100 10:00:00 85 3.2 End Snap: 101 11:00:00 120 4.1 Elapsed: 60.02 mins DB Time: 240.50 mins2. font color#D32F2FDB Time最重要的健康指标/font精确描述DB Time是数据库处理所有用户请求的总时间包括CPU时间和等待时间。font color#D32F2FDB Time / Elapsed Time 平均活跃会话数如果超过CPU核心数说明存在排队。/fontDB Time 240.50 mins Elapsed 60.02 mins 平均活跃会话数 240.50 / 60.02 ≈ 4.0 如果CPU核心数 8 → 4 8系统健康 如果CPU核心数 2 → 4 2存在严重CPU排队五、Report Summary核心解读1. font color#D32F2FTop 5 Timed Events性能瓶颈第一入口/font报告示例Top 5 Timed Events by Total Wait Time ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Event Waits Time(s) Avg Wait(ms) %DB Time Wait Class ------------------------------ -------- -------- ------------- --------- ---------- db file sequential read 1,234,567 8,500 6.9 58.5 User I/O CPU time 3,200 22.0 log file sync 456,789 1,200 2.6 8.3 Commit db file scattered read 23,456 800 34.1 5.5 User I/O enq: TX - row lock contention 1,234 500 405.2 3.4 Application关键等待事件解读| 等待事件 | Wait Class | 常见原因 | 优化方向 ||----------|-----------|----------|----------||db file sequential read| User I/O | 索引读取 | 优化SQL、添加合适索引 ||db file scattered read| User I/O | font color#D32F2F全表扫描/font | 优化SQL、添加索引 ||log file sync| Commit | 提交时磁盘I/O慢 | 减少提交频率、使用SSD ||enq: TX - contention| Application | 行级锁等待 | 优化事务逻辑 ||latch: cache buffers chains| Concurrency | 热块争用 | 分区、反向键索引 ||library cache: mutex X| Concurrency | 硬解析过多 | font color#388E3C使用绑定变量/font ||free buffer waits| Configuration | Buffer Cache不足 | 增大DB_CACHE_SIZE |2. font color#1976D2Load Profile系统负载画像/font报告示例Load Profile ~~~~~~~~~~~~ Per Second Per Transaction ----------- ---------------- DB Time(s): 4.0 0.012 CPU Time(s): 2.1 0.006 Redo size (bytes): 5,234,567 15,678 Logical reads (blocks): 125,678 376 Physical reads (blocks): 3,456 10 Physical writes (blocks): 1,234 4 Parses (SQL): 234 0.7 Hard parses (SQL): 150 0.45 ← 异常 Executes (SQL): 567 1.7 Transactions: 334关键指标解读| 指标 | 正常范围 | 需关注 | 严重问题 ||------|----------|--------|----------||Hard parses/s| 10 | 10~50 | font color#D32F2F 50/font ||Physical reads/s| 取决于存储 | 持续高于峰值 | font color#F57C00磁盘瓶颈/font ||Redo size/s| 取决于业务 | 50MB/s | font color#F57C00日志压力大/font ||Logical reads/s| 取决于业务 | 100000 | font color#F57C00SQL效率低/font |3. font color#388E3CInstance Efficiency缓存命中率/font报告示例Instance Efficiency Percentages ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Buffer Nowait %: 99.99 Redo NoWait %: 99.95 Buffer Hit %: 97.50 In-memory Sort %: 98.20 Library Hit %: 95.30 Soft Parse %: 94.80 Execute to Parse %: 85.60 Latch Hit %: 99.90命中率诊断标准| 指标 | 理想值 | 如果偏低的原因 ||------|--------|---------------||Buffer Hit %| font color#388E3C 95%/font | Buffer Cache不足或SQL效率低 ||Library Hit %| font color#388E3C 99%/font | font color#D32F2F硬解析过多或共享池不足/font ||In-memory Sort %| font color#388E3C 99%/font | PGA不足磁盘排序过多 ||Soft Parse %| font color#388E3C 99%/font | font color#D32F2F未使用绑定变量/font |六、AWR报告SQL Statistics分析1. font color#D32F2FTop SQL by Elapsed Time/font报告示例SQL ordered by Elapsed Time ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Elapsed Time (s) Executions Elapsed per Exec(s) %Total %CPU %IO SQL Id ---------------- ---------- -------------------- ------- ----- ----- ------------- 8,500 1,000 8.50 35.2 22.0 78.0 a1b2c3d4 3,200 500 6.40 13.3 45.0 55.0 e5f6g7h82. font color#F57C00Top SQL by Buffer Gets/fontSQL ordered by Gets ~~~~~~~~~~~~~~~~~~~~ Buffer Gets Executions Gets per Exec %Total CPU Time(s) SQL Id --------------- ---------- -------------- ------ ----------- -------- 50,000,000 1,000 50,000 45.5 4,500 a1b2c3d4font color#D32F2F每次执行5万次逻辑读——SQL效率极低需要优化执行计划。/font3. font color#388E3C获取完整SQL文本/fontSELECT sql_text FROM dba_hist_sqltext WHERE sql_id a1b2c3d4;七、AWR报告实战分析font color#1976D2案例一CPU飙升问题诊断/fontAWR报告关键发现DB Time: 480 mins / Elapsed: 60 mins 8.0 (平均活跃会话) CPU Time: 400 mins (占DB Time的83%) Top Event: library cache: mutex X (35% DB Time) Load Profile: Hard parses 150/s ← 异常 Library Hit %: 82% ← 严重偏低诊断结论font color#D32F2F硬解析过多导致CPU飙升。/font解决方案应用代码修改为使用绑定变量。增大共享池。紧急情况可设置cursor_sharingFORCE。font color#F57C00案例二I/O性能问题诊断/fontAWR报告关键发现Top Event: db file sequential read (45% DB Time) db file scattered read (15% DB Time) Physical reads: 50000/s ← 异常 Buffer Hit %: 85% ← 偏低诊断结论font color#F57C00大量物理I/OBuffer Cache不足或SQL效率低。/font解决方案优化Top SQL添加索引、改写SQL。增大Buffer Cache。使用Keep池缓存热点表。八、总结记住这个“体检报告”类比就够了font color#1976D2【AWR报告是数据库的体检报告】/fontDB Timefont color#D32F2F体温——超过CPU核心数就是发烧。/fontTop 5等待事件font color#F57C00五大症状——咳嗽I/O等待、发烧CPU高、胸闷锁等待。/fontLoad Profilefont color#1976D2生活习惯调查——每天抽几包烟Hard Parse频率、运动量多少Physical Read频率。/fontInstance Efficiencyfont color#388E3C器官功能指标——肝功能Buffer Hit、肾功能Library Hit。/fontTop SQLfont color#D32F2F病灶定位——哪个器官出了问题。/fontfont color#1976D2AWR报告是DBA最常用的性能诊断工具。掌握AWR报告的生成方法和核心指标解读就能在数据库出现问题时快速定位根因。记住先看DB Time判断整体健康再看Top 5等待事件找到问题方向最后通过Top SQL和执行计划精确诊断。/font你在日常运维中最常使用的AWR报告指标是什么是如何通过AWR报告定位性能问题的欢迎评论区分享你的经验。