暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

AWR 报告为什么会“缺失”?一次关于 Oracle 性能诊断的深入排查

在日常数据库运维中,AWR(Automatic Workload Repository)报告 是我们分析系统性能瓶颈、定位问题的重要依据。它记录了数据库运行过程中的关键统计信息,为性能调优提供了坚实的数据支撑。然而,很多 DBA 都遇到过这样一个棘手的问题:AWR 报告生成缺失。

明明数据库一直在运行,到了分析阶段却发现某个时间段的报告空白,或者 awrrpt.sql 报告无法生成。这种“失踪的报告”,往往让人无从下手。今天,我们就来系统梳理下——为什么 AWR 会缺失,以及如何一步步排查解决。

一、AWR 的“自我生成”机制

Oracle 的 AWR 快照由 MMON(Manageability Monitor) 后台进程定期触发生成,默认每隔 1 小时创建一份快照,并将结果存放在 SYSAUX 表空间。
这些快照记录了 CPU 使用率、SQL 执行统计、等待事件、I/O 情况等信息,最终我们通过 awrrpt.sql 或 awrgrpt.sql 脚本生成报告。

当快照缺失时,本质上就是——MMON 没有成功执行任务 或 快照数据被清理/无法写入。

二、AWR 缺失的常见场景

1.	快照断层:比如 SNAP_ID 从 100 直接跳到 105,中间几份不见了。
2.	报告生成时报错:执行 awrrpt.sql 报错 ORA-13509 或 ORA-13516。
3.	多实例不一致:在 RAC 环境中,只看到部分实例快照。
4.	快照正常但报告为空:AWR 表被清理或统计信息异常。

这些看似不同的现象,背后往往指向三个核心问题:设置、空间、进程。

三、从源头排查:设置、空间、进程

1、检查 AWR 是否启用

执行:

SELECT status FROM dba_hist_wr_control;

若状态为 DISABLED,说明 AWR 功能被关闭。
可通过以下命令重新启用:

EXEC DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(interval => 60, retention => 10080);

这会设置快照间隔为 1 小时、保留 7 天。

2、检查快照是否存在

SELECT SNAP_ID, BEGIN_INTERVAL_TIME, END_INTERVAL_TIME
FROM dba_hist_snapshot
ORDER BY snap_id DESC;

如果发现中间跳号或缺失,说明快照没有生成。
这时可以手动创建一份快照验证:

EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();

若执行报错,则可能是 SYSAUX 表空间不足或 WRH$_ 系列表异常。

3、检查 SYSAUX 表空间

AWR 数据全部存放于 SYSAUX 表空间。
如果该表空间满了,AWR 快照将无法写入:

SELECT tablespace_name, bytes/1024/1024 MB, autoextensible
FROM dba_data_files
WHERE tablespace_name='SYSAUX';

必要时扩容或增加数据文件:

ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/ORCL/sysaux01.dbf' RESIZE 5G;

4、检查后台进程 MMON

MMON 是生成 AWR 的关键守护进程。
可查看是否正常运行:

SELECT pname, description
FROM v$bgprocess
WHERE pname IN ('MMON','MMNL');

如果 MMON 崩溃或被异常终止,AWR 将中断。
通常重启实例即可恢复;也可通过告警日志 (alert_.log) 进一步确认原因。

四、RAC 与多租户环境的特别注意

在 RAC 环境 中,每个实例独立生成 AWR 快照,最终在汇总报告中合并。
如果某个节点宕机或实例挂起,就可能出现“部分实例缺失”。
此时需使用 awrgrpt.sql 脚本生成“全局报告”。

在 CDB/PDB 架构 中,则必须在 CDB$ROOT 层执行相关命令,否则子库 PDB 无法自动创建快照。

五、防止 AWR “失踪”的经验总结

问题现象 主要原因 建议措施
快照断层 MMON 未运行或实例重启 定期检查进程状态
AWR 报告报错 SYSAUX 空间不足 预留至少 10% 可用空间
报告为空 WR 控制被禁用 启用 WR 控制并重新生成快照
RAC 数据不全 某实例未生成快照 使用 awrgrpt.sql 生成全局报告
快照频繁清理 RETENTION 设置过短 延长保留时间(如 10080 分钟)

问题现象 主要原因 建议措施
快照断层 MMON 未运行或实例重启 定期检查进程状态
AWR 报告报错 SYSAUX 空间不足 预留至少 10% 可用空间
报告为空 WR 控制被禁用 启用 WR 控制并重新生成快照
RAC 数据不全 某实例未生成快照 使用 awrgrpt.sql 生成全局报告
快照频繁清理 RETENTION 设置过短 延长保留时间(如 10080 分钟)

六、结语:AWR 不只是“报告”,更是系统健康的晴雨表

AWR 报告的缺失,不仅仅是一个“无法生成报告”的问题,它往往反映了数据库运行机制的异常——可能是资源紧张、后台进程异常,甚至是监控体系不完善。
一个健康的 Oracle 系统,应该让 AWR 成为一面“镜子”:持续、稳定地记录性能波动,及时帮助我们发现潜在问题。

对于运维人员而言,不要等到性能问题出现时才想起 AWR。
定期检查快照生成情况、SYSAUX 空间、MMON 运行状态,建立一套完整的 AWR 监控策略,才能让这份“数据库体检报告”持续为你服务。

作者:Digital Observer(施嘉伟)
Oracle ACE Pro
PostgreSQL ACE Partner
Oracle OCM、KCM、PGCM、DB2 、MySQL OCP、PCTP、PCSD、OCI、PolarDB技术专家、达梦师资认证,从业11年+
ITPUB认证专家、崖山YVP、PolarDB开源社区技术顾问、HaloDB技术顾问、TiDB社区技术布道师、青学会MOP技术社区专家顾问、国内某高校企业实践指导教师
公众号/墨天轮/金仓社区/IF Club:Digital Observer;CSDN/PGfans:施嘉伟;ITPUB:sjw1933

hhh7.jpg

最后修改时间:2025-09-30 16:49:17
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论