Oracle AWR快照保留策略及其修改
文章目录
- 一、AWR快照保留机制及其修改方法
- 二、生产环境建议
- 三、监控建议
一、AWR快照保留机制及其修改方法
-
默认保留策略:
• 标准保留期:8天
• 快照间隔:每小时1次(默认)
• 存储位置:SYSAUX表空间 -
保留时间配置:
-- 查看当前设置
SELECT retention FROM dba_hist_wr_control;-- 修改保留时间(单位:分钟)
BEGINDBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(retention => 43200, -- 保留时间(分钟,43200=30天 (30 * 24 * 60))interval => 60 -- 快照间隔(分钟));
END;
/-- 查看修改后的当前设置
SELECT retention FROM dba_hist_wr_control;
-
关键限制:
• 最小保留期:1天
• 最大保留期:理论上无上限(受SYSAUX空间限制)
• 空间占用:每个快照约5-50MB(取决于DB活跃度) -
自动清理机制:
• 通过MMON进程自动清理过期快照
• 空间不足时会触发紧急清理(可能丢失未过期快照)
二、生产环境建议
-
常规OLTP系统:
• 保留7-15天(满足多数性能分析需求)
• 间隔30-60分钟 -
关键业务系统:
• 保留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;-- 创建基线
BEGINDBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(start_snap_id => 270, -- 起始快照ID(需替换为实际值)end_snap_id => 280, -- 结束快照ID(需替换为实际值)baseline_name => 'peak_baseline', -- 基线名称(需用单引号)dbid => NULL -- 可选,默认当前数据库ID);
END;
/-- 删除基线
BEGINDBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(baseline_name => 'peak_baseline',cascade => FALSE -- 仅删除基线,保留快照);
END;
/
- 空间不足处理:
-- 手动清理历史快照(不建议执行)
EXEC dbms_workload_repository.drop_snapshot_range(low_snap_id => 100,high_snap_id => 200);
三、监控建议
- 检查空间使用:
SELECT * FROM dba_hist_snapshot ORDER BY snap_id DESC;
- 空间预警阈值:
SELECT occupant_name, space_usage_kbytes
FROM v$sysaux_occupants
WHERE occupant_name='SM/AWR';