为什么Oracle 12c AWR报告中没有ADDM建议_检查统计信息完整性
ADDM报告为空的三大主因:一是STATISTICS_LEVEL非TYPICAL/ALL导致关键统计缺失;二是指定快照区间DB Time<5秒,ADDM主动跳过分析;三是DBA_HIST_*视图(如ASH)数据不完整,使ADDM无法构建资源链路。
ADDM报告为空或无建议,根本不是AWR报告“没生成”
这里有个常见的误解需要先澄清:ADDM和AWR报告,其实是两个独立产物。AWR报告是快照对比的统计汇总,而ADDM报告则是基于同一组快照、调用dbms_addm分析引擎生成的根因诊断。所以,即便AWR报告能正常输出,ADDM那一栏仍可能完全空白——这恰恰说明问题不在报告生成流程本身,而在于ADDM的输入数据或者运行前提压根就没满足。
免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

STATISTICS_LEVEL不是TYPICAL,ADDM直接静默失效
ADDM的诊断能力,强制依赖于数据库级别的统计采集。如果STATISTICS_LEVEL这个参数被设成了BASIC,那么AWR快照中那些关键维度——比如SQL执行计划、等待事件的细分、内存结构的争用情况——就会全部缺失。巧妇难为无米之炊,ADDM失去了分析依据,甚至连“找不到瓶颈”都懒得报,直接就返回一个空结果给你。
- 检查命令:
SHOW PARAMETER statistics_level,确认结果必须是TYPICAL或ALL。 - 临时修正:执行
ALTER SYSTEM SET statistics_level = TYPICAL SCOPE=BOTH;(注意,对于需要重启后生效的参数要谨慎操作)。 - 重要提醒:修改参数后,并不会自动补全历史快照的数据,这个改动只对后续生成的新快照生效。
快照区间内DB Time过低,ADDM判定“无需分析”
ADDM有个默认的“脾气”:它只对数据库时间(DB Time)大于等于5秒的时段,才会触发深度分析。如果你指定的begin_snap到end_snap之间,数据库几乎处于空闲状态(比如测试库的夜间维护窗口),那么即使快照存在、参数也正确,ADDM也会主动跳过,不生成任何FINDING。这不是它“没运行”,而是它判定“这点工作量,不值得分析”。
- 验证方法:先查询指定区间的DB Time总量:
SELECT dbid, snap_id, db_time FROM dba_hist_sysmetric_summary WHERE snap_id BETWEEN :beg AND :end ORDER BY snap_id; - 如果
db_time这一列多数为0或只是个位数,那ADDM必然没有输出。 - 对策:更换一个业务高峰期的快照范围进行分析,或者手动创建一些负载后再打快照。
DBA_HIST_*视图数据不完整,ADDM读不到关键链路
ADDM的分析深度远超想象,它不止查询DBA_HIST_SNAPSHOT,还重度依赖一系列历史视图,比如DBA_HIST_ACTIVE_SESS_HISTORY(ASH采样)、DBA_HIST_SEG_STAT(段级I/O)、DBA_HIST_SYS_TIME_MODEL(时间模型)。只要其中任何一个视图,在目标快照范围内的数据为空或被截断,ADDM就无法拼凑出完整的资源消耗路径,最终也只能输出一个“no findings”。
- 快速排查:执行
SELECT COUNT(*) FROM dba_hist_active_sess_history WHERE snap_id BETWEEN :beg AND :end;如果结果为0,则说明ASH数据丢失了。 - 常见原因:SYSAUX表空间满了,导致底层的WRH$_表写入失败;或者
_ASH_DISK_FILTER_RATIO参数被调得过高,丢弃了大量内存中的采样数据。 - 核心要点:不要只看
dba_hist_snapshot有没有记录——那只是AWR的“外壳”,ADDM要的是里面的“数据血肉”。
说到底,当ADDM建议缺失时,最容易被忽略的一点是它对“有效工作量”的苛刻定义:既要求数据存在,又要求数据够多、够细、够准。哪怕只是ASH采样率掉了一半,或者某张WRH$_表因为空间不足被清空了最近三天的记录,ADDM都会选择沉默,而不是给你一个明确的错误提示。这才是问题的关键所在。
相关攻略
文章主标题(保留原文) 今天,我们就来深入探讨一个核心问题。许多人在执行过程中常常感到困惑:为何付出同等努力,结果却大相径庭?这背后,一个至关重要的环节往往被大多数人忽略了。 第一个核心概念:理解底层运行逻辑 事实可能出乎你的意料。绝大多数人在起步阶段就陷入了误区,他们热衷于追逐复杂的技巧,却忽视了
角色与核心任务 你是一位顶级的文章润色专家,擅长将AI生成的文本转化为具有个人风格的专业文章。现在,请对用户提供的文章进行“人性化重写”。 你的核心目标是:在不改动原文任何事实信息、核心观点、逻辑结构、章节标题和所有图片的前提下,彻底改变原文的AI表达腔调,使其读起来像是一位资深人类专家的作品。 特
Oracle存储参数调优:ASSM时代PCTFREE与PCTUSED的真相与实战 在Oracle数据库的存储管理中,PCTFREE和PCTUSED是两个历史悠久的基础参数。但随着自动段空间管理(ASSM)成为默认选项,很多DBA对它们的理解还停留在手动段管理时代,导致在实际高并发或数据更新频繁的场景
物化视图刷新时出现 ORA-12801 ORA-00600,是不是数据倾斜导致的? 先说一个核心判断:数据倾斜很可能是导致物化视图刷新时出现 ORA-12801 ORA-00600 的原因,尤其在基表 GROUP BY 字段分布不均且启用并行时,易引发并行进程负载失衡、超时或内存溢出。 物化视图
Oracle 12c RAC 到 19c RAC 的 Data Guard 切换是否可行? 先说结论:这事儿能办,但路径得选对。它并非一次“原地升级式”的直接切换,而是必须遵循跨版本物理备库搭建、滚动升级、最终切换的标准流程。原因很简单,12c和19c属于不同的主版本,当你尝试执行 alter da
热门专题
热门推荐
使用Telnet管理网络设备:一份实用指南 在网络设备管理的众多工具中,Telnet堪称一位“资深元老”。它以简洁、直接的方式,让管理员能够从远程便捷地登录路由器或交换机的命令行界面。然而,必须首先明确一个关键点:Telnet协议本身缺乏安全保障,其传输的所有数据,包括用户名和密码,均以明文形式进行
使用Telnet调试网络应用:快速定位连接与协议问题 在网络应用开发与日常运维中,高效排查故障是必备技能。Telnet作为经典的网络协议工具,凭借其简洁的命令行交互方式,至今仍是测试端口连通性、验证服务响应及手动调试文本协议的实用选择。它无需图形界面,直接通过命令行揭示网络层的真实状态,是工程师手中
全面掌握系统性能:使用 cpustat 工具进行专业级 CPU 监控 在 Linux 系统性能优化与故障诊断过程中,CPU 使用率是至关重要的核心指标。作为 sysstat 工具集的重要组成部分,cpustat 命令为系统管理员和开发者提供了一种直接、高效且深入的 CPU 监控解决方案。本文将详细介
掌握cpustat:Linux系统性能监控与CPU调优的必备工具 在Linux服务器性能优化与故障排查过程中,CPU资源的使用状况通常是首要分析目标。除了广为人知的top和htop命令,cpustat是一款同样强大却常被忽略的专业级CPU监控利器。作为sysstat工具集的核心组件之一,它能够实时采
使用 cpustat 监控进程 CPU 使用情况 在 Linux 系统性能调优与故障排查过程中,精准监控 CPU 使用率是至关重要的基础技能。cpustat 作为 sysstat 工具集的核心组件之一,专门为深入洞察 CPU 资源分配与消耗而设计。它提供了超越常规系统监控命令的、聚焦于处理器性能的详





