近期,小张接到客户反馈,其Oracle数据库的SYSAUX表空间使用率超过95%,触发告警。SYSAUX表空间作为系统辅助表空间,存储了AWR快照、优化器统计信息等重要数据,一旦空间不足,可能影响数据库性能与稳定性。本文将分享从排查到清理的完整过程。
一、问题排查步骤
1、确认查询表空间sysaux的使用率的情况,可参考小张之前的文章
【Oracle】表空间管理实用SQL查询--DBA必备_oracle 查询表空间脚本-CSDN博客
2、定位占用空间的对象
SELECT occupant_name,
space_usage_kbytes / 1024 AS space_used_mb,
schema_name,
move_procedure
FROM v$sysaux_occupants
ORDER BY space_usage_kbytes DESC;
结果显示,AWR快照和OPTSTAT统计信息是主要占用对象。
3、查看具体对象大小
确认具体表和分区的大小:
select OWNER,
segment_name,
segment_type,
PARTITION_NAME,
bytes / 1024 / 1024 / 1024 Size_GB
from dba_segments
where tablespace_name = 'SYSAUX'
order by Size_GB desc

发现WRH$_ACTIVE_SESSION_HISTORY和WRH$_EVENT_HISTOGRAM等AWR相关表占用大量空间。
WRH$_ACTIVE_SESSION_HISTORY:与AWR相关,存放活动会话历史
WRH$_EVENT_HISTOGRAM:记录等待事件直方图
二、解决方案:清理AWR历史数据
确认占用较大空间的对象,处理起来也比较简单。
1、清理特定分区数据
ALTER TABLE WRH$_ACTIVE_SESSION_HISTORY TRUNCATE PARTITION WRH$_ACTIVE_4236113748_0
2、验证清理结果
重新检查SYSAUX表空间使用率,确认空间已释放:

清理后,使用率从95%以上显著下降。
3、可选:清理其他历史表
根据实际需求,可继续清理其他AWR相关表(如WRH$_EVENT_HISTOGRAM)或调整AWR保留策略。
三、总结
-
根本原因:SYSAUX表空间主要被AWR历史数据(如
WRH$_*系列表)占用,即使已执行AWR清理,部分分区数据仍未释放。 -
解决关键:通过
TRUNCATE PARTITION直接清理大容量分区,快速释放空间。 -
预防建议:
-
定期监控SYSAUX表空间使用情况。
-
配置AWR快照保留策略,避免历史数据过多积累。
-
使用
DBMS_WORKLOAD_REPOSITORY包管理AWR设置。
-
通过本方法,可高效解决SYSAUX空间不足问题,保障oracle数据库稳定运行。
1693

被折叠的 条评论
为什么被折叠?



