Oracle性能优化:什么是AWR报告?如何生成与解读AWR报告?

发布时间:2026/7/15 0:48:16

Oracle性能优化:什么是AWR报告?如何生成与解读AWR报告?
Oracle性能优化什么是AWR报告如何生成与解读AWR报告引言在Oracle数据库性能优化领域有一句话流传甚广“没有AWR报告的性能分析就像没有化验单的看病。”AWRAutomatic Workload Repository自动工作负载仓库是Oracle从10g版本开始引入的、内置于数据库的诊断工具它定期采集数据库的运行统计数据为性能问题定位提供了强大的数据基础。本文将系统地讲解AWR报告的原理、生成方法、报告结构以及核心指标的解读思路帮助你从一张AWR报告中快速揪出80%的性能问题。---一、什么是AWR1.1 AWR的定义AWRAutomatic Workload Repository是Oracle数据库的性能数据采集与存储中心。它自动定期默认每小时一次生成数据库的性能“快照”Snapshot并将快照数据持久化保存在SYSAUX表空间中保留周期默认为8天。每一个快照包含了该时刻前后一段时间内数据库的关键性能指标例如等待事件及耗时SQL语句的执行统计Top SQL系统级别的负载曲线Load Profile缓冲区、共享池、PGA等内存组件的使用情况I/O统计、闩锁Latch争用等1.2 AWR背后的MMON进程AWR的快照采集和自动维护由一个核心后台进程负责——MMONManageability Monitor。它的主要职责是每小时生成一个AWR快照定期清理过期的快照数据触发自动诊断任务如ADDMSGA中的内存统计ASH: 每秒采样MMON进程汇总生成AWR快照SYSAUX表空间AWR数据触发ADDM分析ADDM报告---二、AWR报告的核心价值一份完整的AWR报告几乎涵盖了性能分析需要的所有宏观信息| 分析维度 | AWR对应内容 ||----------|-------------|| 系统整体忙不忙 | Load Profile每秒事务数、逻辑读、物理读 || 时间都花在哪 | Top 5 Timed Events等待事件耗时占比 || 哪些SQL最耗资源 | SQL Statistics按Elapsed Time / CPU / Gets排序 || 内存配得合不合理 | Instance Efficiency Percentages Advisory || I/O存不存在瓶颈 | Wait Event中I/O类事件的占比和耗时 || 有没有锁或Latch争用 | Wait Events中的Concurrency类事件 |用一句话概括AWR报告是Oracle数据库在某一时间段内的“全面体检报告”。---三、如何生成AWR报告3.1 前提条件数据库版本 ≥ 10g用户需要拥有SELECT_CATALOG_ROLE角色或DBA权限STATISTICS_LEVEL参数必须设置为TYPICAL默认或ALL-- 检查统计级别 SHOW PARAMETER statistics_level; -- 如果值为BASIC需要改为TYPICAL ALTER SYSTEM SET statistics_level TYPICAL SCOPEBOTH;3.2 生成AWR报告的四种方式方式一使用SQL*Plus脚本最常用这是最经典、最通用的方式。# 登录数据库 sqlplus / as sysdba # 运行AWR报告脚本 ?/rdbms/admin/awrrpt.sql脚本会依次提问报告格式输入html或text推荐html图形化展示开始快照ID输入起始快照的ID结束快照ID输入终止快照的ID报告文件名默认为awrrpt_1_120_121.html可直接回车htmltext登录SQL*Plus执行 ?/rdbms/admin/awrrpt.sql选择报告类型图形化报告易读纯文本报告输入起始快照ID输入结束快照ID指定输出文件名报告生成完毕在本地目录查看方式二查询DBA_HIST_SNAPSHOT找快照ID如果不知道快照ID可以先查询快照列表SELECT snap_id, begin_interval_time, end_interval_time, snap_level FROM dba_hist_snapshot ORDER BY snap_id DESC;选择业务高峰期对应的两段快照ID即可。方式三通过Oracle Enterprise ManagerOEM生成在OEM的Web界面中Performance → AWR → AWR Report选择时间段直接导出HTML或文本。方式四生成特定时段的AWR报告如果需要非整点时间段的报告使用awrrpti.sql可以通过DBID和实例号来指定范围。?/rdbms/admin/awrrpti.sql3.3 其他AWR衍生报告| 脚本名称 | 用途 ||----------|------||awrrpt.sql| 单实例AWR报告 ||awrgrpt.sql| RAC全局AWR报告 ||awrddrpt.sql| 两个时段差异对比报告 ||awrsqrpt.sql| 单条SQL的AWR报告 ||awrrpti.sql| 指定实例的AWR报告 |---四、AWR报告核心章节解读拿到一份AWR报告后建议按照以下顺序快速定位问题4.1 Report Summary报告摘要关键指标DB Time数据库处理用户请求的总时间是衡量“数据库有多忙”的核心指标。Elapsed报告时段的总时长分钟。DB Time / Elapsed比值 1系统空闲≈ CPU核数系统较忙≫ CPU核数出现明显性能瓶颈等待严重4.2 Load Profile负载概要| 指标 | 含义 ||------|------|| Redo size per sec | 每秒产生的Redo量反映DML频繁度 || Logical reads per sec | 每秒逻辑读块数 || Physical reads per sec | 每秒物理读块数注意过高说明缓存不足或SQL低效 || Parses per sec | 每秒解析次数硬解析软解析 || Transactions per sec | 每秒事务数 |4.3 Top 5 Timed Events等待事件Top5这是全报告最重要的部分直接告诉我们数据库时间花在了哪里。Event Waits Time(s) Avg Wait(ms) % DB Time ---------------------------------------------------------------------- db file sequential read 120,000 8,500 70.8 45.2 db file scattered read 30,000 4,200 140.0 22.3 log file sync 80,000 2,500 31.3 13.3 CPU time 2,100 11.2 ...db file sequential read占比过高 → 索引扫描过多或磁盘I/O慢db file scattered read占比高 → 全表扫描过多log file sync等待多 → 提交过于频繁LGWR写入慢CPU time占主体 → 通常是大量逻辑读或计算开销4.4 SQL StatisticsSQL统计列出按Elapsed Time、CPU Time、Buffer Gets等排序的Top SQL。重点关注Elapsed Time per Exec每次执行耗时过高的往往是优化对象Buffer Gets per Exec每次逻辑读数量 10万通常效率较低Physical Reads物理读多的SQL可能缺少索引或统计信息不准4.5 Instance Efficiency Percentages实例效率Buffer Nowait %: 99.8 Buffer Hit %: 96.5 Library Hit %: 98.2 Latch Hit %: 99.9Buffer Hit %低于90% → 缓冲区偏小或SQL导致大量物理读Library Hit %低于95% → 共享池偏小或硬解析过多但需注意命中率高不代表没有性能问题仍需结合等待事件判断4.6 Advisory Section建议部分Oracle根据当前负载给出SGA各组件、PGA大小的优化建议可作为调整内存的参考依据。---五、从AWR报告到优化动作的映射| AWR现象 | 诊断方向 | 优化手段 ||---------|----------|----------||db file sequential read等待占比高 | 索引读I/O慢 | 检查索引效率优化执行计划考虑I/O性能 ||db file scattered read等待占比高 | 全表扫描过多 | 增加合适索引收集统计信息 ||log file sync占比高 | 提交频繁或日志写慢 | 批量提交使用更快的日志磁盘 ||enq: TX - row lock contention| 行锁争用 | 优化事务粒度缩短事务时间 || Buffer Hit%低 | 缓冲区太小 | 增大SGA或优化SQL减少物理读 || 大量latch: cache buffers chains等待 | 热点块争用 | 反向键索引、分区、HASH分区等 |---六、总结与建议AWR是Oracle最强大、最全面的性能诊断工具任何DBA都应该熟练掌握。生成AWR报告非常简单核心命令是?/rdbms/admin/awrrpt.sql。解读AWR报告的关键是以等待事件为导向结合负载概要、Top SQL和实例效率形成完整的根因分析链。建议在日常运维中定期保存AWR报告建立性能基线当出现突发性能问题时立刻生成问题时段的AWR并与基线对比。调优箴言能用AWR定位的问题就不要凭感觉猜能用数据说话的场合就不要靠经验拍脑袋。---

相关新闻

Oracle性能优化:如何提高Oracle数据库的缓冲区缓存命中率?

Oracle性能优化:如何提高Oracle数据库的缓冲区缓存命中率?

2026/7/15 0:48:16

引言在Oracle数据库的性能调优中,Buffer Cache(缓冲区缓存)命中率是一个最经典、最常被提及的指标。虽然现代Oracle调优理念已经从“唯命中率论”转向了“等待事件驱动”,但Buffer Cache命中率仍然是一个不可忽视的健康指标——它…

Oracle性能优化:解释Oracle的自动内存管理(AMM)的机制

Oracle性能优化:解释Oracle的自动内存管理(AMM)的机制

2026/7/15 0:48:16

引言内存管理一直是Oracle数据库调优中最具挑战性的任务之一。在早期版本中,DBA需要手动分配SGA的各个组件(Buffer Cache、Shared Pool、Large Pool、Java Pool等)以及PGA的大小,这不仅要求对数据库负载有深入理解,还需…

Oracle性能优化:什么是Oracle的并行查询?如何配置并行查询?

Oracle性能优化:什么是Oracle的并行查询?如何配置并行查询?

2026/7/15 0:48:16

引言在处理大规模数据时,传统的串行SQL执行方式往往成为性能瓶颈——单个服务器进程只能使用一个CPU核心,面对百万行甚至亿行级别的表扫描、索引创建、数据装载等操作时,响应时间可能长达数小时。Oracle的并行查询(Parallel Query…

iOS ijkplayer进阶:源码编译、RTSP/HTTPS协议支持与录制功能集成实战

iOS ijkplayer进阶:源码编译、RTSP/HTTPS协议支持与录制功能集成实战

2026/7/15 1:58:19

1. ijkplayer源码编译与环境准备第一次接触ijkplayer的开发者可能会被它的编译过程吓到,但其实只要掌握几个关键步骤,整个过程就像搭积木一样简单。我最近在开发一款安防监控App时,就经历了从零开始编译ijkplayer的全过程,这里把踩…

高效工具选择指南:从需求分析到落地实践

高效工具选择指南:从需求分析到落地实践

2026/7/15 1:58:19

这类标题经常出现在工具推荐或效率提升的场景里,但光看标题很难判断具体指的是哪个软件、解决什么问题。我一般会先拆解这类推荐背后的核心需求:它通常指向一个能显著提升工作效率、解决特定痛点或带来意外便利的工具。更值得关注的不是“伟大发现”这个…

【网络实战】思科综合实验:跨自治系统互联与动态路由协议融合

【网络实战】思科综合实验:跨自治系统互联与动态路由协议融合

2026/7/15 1:58:19

1. 实验环境搭建与需求分析这个实验模拟了一个典型的企业网络扩展场景,包含两个独立的自治系统(AS)。自治系统A采用RIPv2作为内部网关协议,自治系统B则运行OSPF协议。两个AS需要通过边界路由器实现互联,并最终让所有局…

新特性:Scroll 滚动特效 —— 实现「回弹」与「摩擦」物理效果

新特性:Scroll 滚动特效 —— 实现「回弹」与「摩擦」物理效果

2026/7/15 1:58:19

文章目录前言一、滚动物理模型:回弹与摩擦1.1 真实世界的类比1.2 系统默认值差异二、edgeEffect:三种边缘效果详解2.1 EdgeEffect 枚举2.2 Spring —— 越界拖拽 松手回弹2.3 Fade —— 边缘渐隐2.4 None —— 硬截止2.5 EdgeEffectOptions:…

基于SpringBoot的个人博客系统【从零到一实战部署指南】

基于SpringBoot的个人博客系统【从零到一实战部署指南】

2026/7/15 1:58:19

1. 为什么选择SpringBoot开发个人博客第一次接触SpringBoot是在2016年,当时就被它"约定优于配置"的理念深深吸引。相比传统的SSH框架,SpringBoot让Java Web开发变得前所未有的简单。就拿搭建个人博客来说,以前需要配置各种XML文件&…

pandas多维聚合实战:银行级生产环境聚合模式详解

pandas多维聚合实战:银行级生产环境聚合模式详解

2026/7/15 1:48:18

1. 项目概述:为什么多维聚合不是“加个groupby”就能搞定的事我在银行风控部门做过三年数据管道开发,后来跳槽到一家头部支付机构做BI平台架构。这期间最常被业务方拍着桌子问的一句话是:“上个月华东区餐饮类商户的交易金额中位数、手续费波…

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

2026/7/14 10:03:09

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator XUnity.AutoTranslator作为Unity游戏社区中最成熟的文本翻译解决方…

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

2026/7/13 20:43:19

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持 【免费下载链接】raspberrypi-kernel It provides openEuler kernel source for Raspberry Pi 项目地址: https://gitcode.com/openeuler/raspberrypi-kernel 前往项目官网免费下载&…

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

2026/7/15 0:26:43

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧 【免费下载链接】integration-test The repo contains test suits for system integration test 项目地址: https://gitcode.com/openeuler/integration-test 前往项目官网免费下载:…

【LINUX】驱动

【LINUX】驱动

2026/7/15 0:08:14

【LINUX驱动】【字符设备】【中断】【Platform】【网课 设备树】【GPIO】【PINCTRL】【INPUT】【IIC】【SPI】【网络驱动】【屏幕驱动】【一 设备树】【二 内核模块编译】【三 基本驱动框架】【四 Platform总线设备驱动框架】【五 驱动子系统】【六 综合】

【1982-2026】全国高精度建筑轮廓|村级精度|SHP矢量

【1982-2026】全国高精度建筑轮廓|村级精度|SHP矢量

2026/7/15 0:08:14

🔍 数据简介 本次分享1982-2026年全国村级精度建筑轮廓矢量数据,覆盖全国各省市区县,到村级别精细,为2026年最新实时采集成果,非网传仅60/77个城市的老旧数据。 数据含带高度/不带高度双版本,单体建筑边界精…

【1975-2026】全国水系水路数据|河流/水库/运河|SHP矢量

【1975-2026】全国水系水路数据|河流/水库/运河|SHP矢量

2026/7/15 0:08:14

🔍 数据简介 本次分享1975-2026年全国高精度水系水路矢量数据,覆盖全国全域,包含河流、水系、水库、运河、湿地、冰川、沟渠等全类别水文要素。 数据集包含双层矢量图层,字段分类清晰、要素齐全,支持2013-2026逐年完整…