Oracle AWR Baseline 详解

Oracle AWR Baseline 详解

适用版本:Oracle Database 10g / 11g / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07


1. 概述

AWR Baseline 是性能基线,用于对比分析[1]:

详细见:Oracle AWR 报告深度分析


2. 类型

2.1 Static

- 固定快照范围
- 不变
- 推荐

2.2 Moving Window

- 动态窗口
- Adaptive Thresholds
- 自动

2.3 Template

- 模板
- 可重用
- 重复生成

3. 创建 Baseline

3.1 静态

BEGIN
  DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(
    start_snap_id => 100,
    end_snap_id => 110,
    baseline_name => 'peak_baseline',
    dbid => null,
    expiration => null
  );
END;
/

3.2 时间范围

BEGIN
  DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(
    start_time => TO_DATE('2026-07-21 09:00', 'YYYY-MM-DD HH24:MI'),
    end_time => TO_DATE('2026-07-21 11:00', 'YYYY-MM-DD HH24:MI'),
    baseline_name => 'peak_baseline'
  );
END;
/

3.3 Moving Window

BEGIN
  DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE_TEMPLATE(
    baseline_name => 'sysstat_moving',
    template_name => 'mwindow_template',
    baseline_type => 'MOVING_WINDOW',
    window_size => 30
  );
END;
/

4. 查看

4.1 视图

SELECT baseline_id, baseline_name, baseline_type, start_snap_id, end_snap_id
FROM dba_hist_baseline;

SELECT * FROM dba_hist_baseline_details;
SELECT * FROM dba_hist_baseline_template;

4.2 快照

SELECT snap_id, begin_interval_time, end_interval_time
FROM dba_hist_snapshot
ORDER BY snap_id DESC;

5. Adaptive Thresholds

5.1 启用

BEGIN
  DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE_TEMPLATE(
    baseline_name => 'adaptive_baseline',
    template_name => 'adaptive_template',
    baseline_type => 'MOVING_WINDOW',
    window_size => 30,
    instance_number => null,
    expiration => null
  );
END;
/

5.2 配置

BEGIN
  DBMS_SERVER_ALERT.SET_THRESHOLD(
    metrics_id => 2104,  -- 'Average Active Sessions'
    warning_operator => DBMS_SERVER_ALERT.OPERATOR_GT,
    warning_value => '50',
    critical_operator => DBMS_SERVER_ALERT.OPERATOR_GT,
    critical_value => '100',
    observation_period => 1,
    consecutive_occurrences => 1,
    instance_name => null,
    object_type => DBMS_SERVER_ALERT.OBJECT_TYPE_SYSTEM,
    object_name => null
  );
END;
/

6. 对比

6.1 AWR 报告对比

@?/rdbms/admin/awrddrpt.sql

6.2 SQL 选择

SELECT dbid, baseline_name, start_snap_id, end_snap_id 
FROM dba_hist_baseline;

7. 删除

BEGIN
  DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(
    baseline_name => 'peak_baseline',
    cascade => FALSE
  );
END;
/

8. 重命名

BEGIN
  DBMS_WORKLOAD_REPOSITORY.RENAME_BASELINE(
    old_baseline_name => 'peak_baseline',
    new_baseline_name => 'peak_hours_baseline'
  );
END;
/

9. 应用场景

9.1 性能对比

- 正常 vs 异常
- 峰值 vs 平峰
- 升级前 vs 升级后

9.2 告警

- Adaptive Thresholds
- 自动告警
- 基于基线

9.3 SLA

- 性能基线
- SLA 监控
- 容量规划

10. 最佳实践

  1. 峰值基线:业务高峰
  2. Moving Window:自动
  3. 对比:异常分析
  4. 告警:Adaptive
  5. 保留:长期
  6. 文档:标记
  7. 测试:验证
  8. 监控:基线
  9. 容量:规划
  10. 演练:定期

11. 参考资料

[1] Oracle Database Performance Tuning Guide 19c, “AWR Baselines” https://docs.oracle.com/en/database/oracle/oracle-database/19/tgdba/