清理Oracle AWR基表truncate wrh$

本文介绍如何通过手工truncate分区或表的方式清理SYSAUX表空间中WRH$_开头的AWR基表,以释放空间。包括创建新分区、truncate旧分区、定期清理和调整保留时长等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

SYSAUX表空间太大,通过DBA_SEGMENTS查看WRH$_开头的表占用很高,请问这些表如何清理,释放空间?

专家解答

这些WRH$_开头的表是AWR的基表,生成AWR报告需要,占用的空间取决于AWR保留的时间和细粒度(默认7天),少数情况下有无法自动清理的情况,这部分空间只能通过手工truncate分区或表的方式回收,步骤如下:

1、创建新的分区

如果WRH$_表无法自动创建分区,可以用如下SQL创建新的分区,用于保留最新的数据:

alter session set "_swrf_test_action" = 72;

--手工创建一个快照
exec dbms_workload.create_snapshot()

 

2、truncate旧的分区

生成truncate分区的SQL

select 'alter table '||object_name||' truncate partition '||subobject_name||' update global indexes;'
from dba_objects where object_name like 'WRH$%' and object_type = 'TABLE PARTITION' and created<sysdate-1
;

检查输出的SQL,并执行。

 

3、truncate未分区的表

通过如下SQL找出大表:

select owner,table_name,
dbms_xplan.format_number(num_rows) num_rows,object_type,partition_name,(select count(*) 
from dba_tab_partitions p where s.owner=p.table_owner and s.table_name=p.table_name) part 
from dba_tab_statistics s where owner in ('SYS','SYSTEM') and table_name like 'WRH$%' a
nd num_rows>1e6 order by s.num_rows;

根据排序直接truncate相关表:

truncate table WRH$_TABLESPACE_SPACE_USAGE update global indexes;
truncate table WRH$_EVENT_HISTOGRAM update global indexes;
truncate table WRH$_MUTEX_SLEEP update global indexes;
truncate table WRH$_ENQUEUE_STAT update global indexes;
truncate table WRH$_SYSMETRIC_SUMMARY update global indexes;
truncate table WRH$_BG_EVENT_SUMMARY update global indexes;
truncate table WRH$_SYSMETRIC_HISTORY update global indexes;
truncate table WRH$_SQL_BIND_METADATA update global indexes;
truncate table WRH$_SQL_PLAN update global indexes;

 

4、定期清理

默认会自动清理,也可以使用如下SQL定期手工清理

select dbid,min(snap_id) from WRH$_SQL_PLAN group by dbid;
exec DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(dbid,start_id,end_id);

 

5、减少保留的时长或细粒度

exec DBMS_WORKLOAD_REPOSITORY.MODIFY_BASELINE_WINDOW_SIZE(8);
exec DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(retention=>8*60*24);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值