文章目录
一、AWR快照保留机制及其修改方法二、生产环境建议三、监控建议
一、AWR快照保留机制及其修改方法
默认保留策略: • 标准保留期:8天 • 快照间隔:每小时1次(默认) • 存储位置:SYSAUX表空间
保留时间配置:
-- 查看当前设置
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天 • 最大保留期:理论上无上限(受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;
-- 创建基线
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;
/
空间不足处理:
-- 手动清理历史快照(不建议执行)
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';