【Oracle】SYSAUX表空间爆满?快速定位与清理AWR历史数据

      近期,小张接到客户反馈,其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_HISTORYWRH$_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数据库稳定运行。

从10g开始,Oracle引进了SYSAUX表空间作为SYSTEM的辅助表空间,用来存放EM相关的内容,以及表统计信息、AWR快照、审计信息等数据。默认情况下,随着时间推移,SYSAUX表空间会越来越大,达到分配的最大配额时,使用该表空间数据库功能可能会失败或异常[^1]。以下是一些清理Oracle SYSAUX表空间的方法: ### 清理AWR快照 AWR(Automatic Workload Repository)快照会占用SYSAUX表空间。可以通过减少快照保留时间或减少快照生成频率来释放空间。 ```sql -- 查看当前AWR快照保留时间 SELECT retention FROM dba_hist_wr_control; -- 修改AWR快照保留时间为7天(单位:分钟) EXEC DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(retention => 7*24*60); -- 查看当前AWR快照生成间隔 SELECT interval FROM dba_hist_wr_control; -- 修改AWR快照生成间隔为2小时(单位:分钟) EXEC DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(interval => 120); ``` ### 清理审计信息 如果启用了审计功能,审计信息也会占用SYSAUX表空间。可以根据需要清理旧的审计信息。 ```sql -- 删除90天前的审计记录 DELETE FROM dba_audit_trail WHERE timestamp < SYSDATE - 90; COMMIT; ``` ### 清理EM相关数据 EM(Enterprise Manager)相关的数据也存储在SYSAUX表空间中。可以清理EM历史数据。 ```sql -- 清理EM历史数据 EXEC SYSMAN.MGMT_REMOVE_HISTORY(older_than => 30); ``` ### 收缩表空间 在完成上述清理操作后,可以尝试收缩SYSAUX表空间。 ```sql -- 检查SYSAUX表空间的数据文件 SELECT file_name FROM dba_data_files WHERE tablespace_name = 'SYSAUX'; -- 收缩SYSAUX表空间的数据文件 ALTER DATABASE DATAFILE '/path/to/sysaux01.dbf' RESIZE 1024M; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值