必须手动创建基线,否则AWR无法自动识别“退化”——它只存数据,不定义什么是正常;基线需明确指定起止快照ID、命名唯一,并确保statistics_level为TYPICAL/ALL且快照区间负载稳定。

必须手动创建基线,否则AWR无法自动识别“退化”——它只存数据,不定义什么是正常。
为什么基线不能靠默认设置自动生效
AWR快照默认每小时生成一次,但“性能退化”是相对概念:你需要明确告诉Oracle“哪段时间算健康”,它才能比出后续是否变差。不建基线,awrddrpt对比报告里只会显示两个快照区间原始数据,没有“偏离基线XX%”这类诊断结论。
- ADDM或
awrddrpt中的“Regression Detected”提示,前提是已存在基线且当前快照超出阈值 -
DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE必须指定start_snap_id和end_snap_id,不能只写时间范围——AWR不支持模糊时间匹配 - 基线名不能重复,否则报错
ORA-13509: duplicate baseline name;建议带环境+日期,比如'PROD_20261020_POST_DEPLOY'
创建基线前必须确认的三件事
基线质量直接决定后续对比是否可信。很多“对比没异常”其实是基线本身就不代表稳定态。
- 检查
statistics_level是否为TYPICAL或ALL——若为BASIC,快照里缺关键指标(如SQL执行统计),基线无效 - 确认目标快照区间内无计划外负载:比如避开每日批处理窗口、避免包含数据库重启后的首个快照(
startup_time在dba_hist_snapshot中可查) - 用
SELECT * FROM dba_hist_sysmetric_summary WHERE snap_id IN (100,101) AND metric_name = 'Database CPU Time Ratio'验证CPU占比平稳(波动
基线创建后怎么真正用起来
建完不等于能用。常见做法是建了就扔,等出问题才想起查,结果发现基线早已过期或被清理。
- 基线默认永不过期,但SYSAUX表空间满时可能被自动清理——定期运行
SELECT baseline_name, expiration, creation_date FROM dba_hist_baseline核对状态 - 对比报告必须用
@?/rdbms/admin/awrddrpt(不是awrrpt),并选择“Baseline vs Target Period”模式 - 若想让ADDM自动触发基线偏离告警,需配合
DBMS_ADDM.SET_PARAMETER('BASELINE_NAME', 'xxx')显式绑定,否则ADDM只用默认7天滚动窗口
基线不是设一次就高枕无忧的开关,它本质是一组快照ID的命名引用。最容易被忽略的是:当业务逻辑变更、数据量突增或统计信息被手动刷新后,旧基线就失去参照价值——你得同步更新,而不是硬套。











