不一定。AWR报告全屏“No data exists for this section of the report”可能因CONTROL_MANAGEMENT_PACK_ACCESS=NONE(11.1–11.2经典问题)、快照调度被禁用(如modify_snapshot_settings(interval=>0)),或STATISTICS_LEVEL=BASIC导致采样字段为空,但BASIC下快照元数据仍存在,且会连带禁用ASH、ADDM等多项关键诊断功能。
AWR报告全屏“No data exists for this section of the report”一定是STATISTICS_LEVEL设成了BASIC?
不一定。即使statistics_level是typical(默认值),awr报告仍可能无数据——关键要看control_management_pack_access是否被设为none。这是11.1.0.6–11.2.0.3版本的经典坑:快照照常生成,但所有性能指标(sql执行统计、等待事件、段i/o等)全为空,dba_hist_*表里只有时间戳和实例元数据,实际采样字段全为null或0。
验证方法:
SELECT name, value FROM v$parameter WHERE name IN ('statistics_level', 'control_management_pack_access');若后者返回NONE,就不是参数没生效,而是许可证控制直接掐断了指标采集。
查完STATISTICS_LEVEL=TYPICAL,为什么DBA_HIST_SNAPSHOT里还是没新数据?
快照没生成,不等于参数错了,更可能是DBMS_WORKLOAD_REPOSITORY的调度被手动停过。常见误操作是执行过exec dbms_workload_repository.modify_snapshot_settings(interval=>0),它会让snap_interval变成+000000000 00:00:00.0,且无需重启立即生效。
确认方式分两步:
- 查当前控制参数:
SELECT snap_interval, retention FROM dba_hist_wr_control——必须看到snap_interval为全零 - 等一个原定周期(如60分钟),再跑
SELECT MAX(snap_id) FROM dba_hist_snapshot,对比前后值是否变化
DBA_HIST_SNAPSHOT对普通用户不可见,需有SELECT_CATALOG_ROLE权限。
把STATISTICS_LEVEL改成BASIC真能“彻底关掉AWR”?
不能,而且副作用极强。设为BASIC后:
-
AWR快照仍会生成(含SNAP_ID、时间、实例号),但所有采样字段(DBA_HIST_SQLSTAT、DBA_HIST_SYSTEM_EVENT等)全为空或零 -
V$ACTIVE_SESSION_HISTORY、V$SYS_TIME_MODEL、V$SEGMENT_STATISTICS等视图大量字段失效 -
MEMORY_TARGET/SGA_TARGET自动内存管理退化为手动,可能触发ORA-00832 - 第三方监控工具(OEM、Zabbix插件)因依赖ASH而断连
@?/rdbms/admin/awrrpt.sql运行时直接报ERROR: No snapshot data found,连历史报告都生成不了。
想真正停AWR又不影响其他诊断能力,该调哪个函数?
只用这一个:exec dbms_workload_repository.modify_snapshot_settings(interval=>0)。它只禁用自动快照生成,保留ASH、ADDM、SQL Monitoring、实时执行计划等全部诊断功能,也不影响V$动态性能视图的更新。
恢复方法同样简单:exec dbms_workload_repository.modify_snapshot_settings(interval=>60, retention=>86400)(60分钟间隔,保留24小时)。注意:该操作不清理已有快照,历史数据仍占SYSAUX空间;如需删除,得单独调用DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE。
最易被忽略的一点:哪怕快照停了,V$SYSSTAT、V$EVENTMETRIC这些基础计数器仍在持续更新,底层统计开销约1%–3% CPU,别误以为“完全零成本”。











