Oracle AWR快照保留策略及其修改

文章目录

  • 一、AWR快照保留机制及其修改方法
  • 二、生产环境建议
  • 三、监控建议

一、AWR快照保留机制及其修改方法

  1. 默认保留策略
    • 标准保留期:8天
    • 快照间隔:每小时1次(默认)
    • 存储位置:SYSAUX表空间

  2. 保留时间配置

-- 查看当前设置
SELECT retention FROM dba_hist_wr_control;

-- 修改保留时间(单位:分钟)
BEGIN
  DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
    retention => 43200,  -- 保留时间(分钟,43200=30天 (30 * 24 * 60))
    interval  => 60      -- 快照间隔(分钟)
  );
END;
/

-- 查看修改后的当前设置
SELECT retention FROM dba_hist_wr_control;
  1. 关键限制
    最小保留期:1天
    最大保留期:理论上无上限(受SYSAUX空间限制)
    空间占用:每个快照约5-50MB(取决于DB活跃度)

  2. 自动清理机制
    • 通过MMON进程自动清理过期快照
    • 空间不足时会触发紧急清理(可能丢失未过期快照)

二、生产环境建议

  1. 常规OLTP系统
    • 保留7-15天(满足多数性能分析需求)
    • 间隔30-60分钟

  2. 关键业务系统
    • 保留30天+每日基线(DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE
    • 高峰期间隔缩至15分钟

基线创建方法:

-- 快照ID存在性检查(检查要创建基线的起始和结束快照ID是否存在)
SELECT SNAP_ID, SNAP_TIME FROM DBA_HIST_SNAPSHOT ORDER BY SNAP_ID DESC;

-- 基线唯一性检查,确保 baseline_name 不与现有基线重复
SELECT BASELINE_NAME FROM DBA_HIST_BASELINE;

-- 创建基线
BEGIN
  DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(
    start_snap_id => 270,         -- 起始快照ID(需替换为实际值)
    end_snap_id   => 280,         -- 结束快照ID(需替换为实际值)
    baseline_name => 'peak_baseline',  -- 基线名称(需用单引号)
    dbid          => NULL         -- 可选,默认当前数据库ID
  );
END;
/

-- 删除基线
BEGIN
  DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(
    baseline_name => 'peak_baseline',
    cascade       => FALSE  -- 仅删除基线,保留快照
  );
END;
/
  1. 空间不足处理
-- 手动清理历史快照(不建议执行)
EXEC dbms_workload_repository.drop_snapshot_range(
  low_snap_id  => 100,
  high_snap_id => 200);

三、监控建议

  1. 检查空间使用:
SELECT * FROM dba_hist_snapshot ORDER BY snap_id DESC;
  1. 空间预警阈值:
SELECT occupant_name, space_usage_kbytes 
FROM v$sysaux_occupants 
WHERE occupant_name='SM/AWR';

你可能感兴趣的:(Oracle,oracle,数据库)