sysaux表空间有时容易被统计信息撑满,执行purge完后空间使用率还是很高。官方说:清除完成后不会立即回收空间。这是正常行为,因为 purge_stats 只是使用“从...删除”语句从 wri$_optstat* 表中删除数据。可用空间将用于向 optstat 表中进行新插入。
解决方法:
1. 全备数据库
2. 移动表(起到回收空间的目的)
-
sql> alter table wri$_optstat_tab_history move;
-
sql> alter table wri$_optstat_opr move;
-
sql> alter table wri$_optstat_ind_history move;
-
sql> alter table wri$_optstat_histhead_history move;
-
sql> alter table wri$_optstat_histgrm_history move;
-
sql> alter table wri$_optstat_aux_history move;
3. 重建索引(move 的后遗症)
-
确认索引
-
sql> select status from dba_indexes where index_name='i_wri$_optstat_ind_obj#_st';
-
sql> select status from dba_indexes where index_name='i_wri$_optstat_tab_st';
-
-
应该是 unusable状态,重建它们:
-
-
a.获取重建ddl
-
sql> set long 4000
-
sql> select dbms_metadata.get_ddl('index','i_wri$_optstat_ind_obj#_st','sys') from dual;
-
sql> select dbms_metadata.get_ddl('index','i_wri$_optstat_tab_st','sys') from dual;
-
-
b.根据输出结果,删除并重建索引.
-
-
c.重新检查状态,应该是valid:
-
sql> select status from dba_indexes where index_name='i_wri$_optstat_ind_obj#_st';
-
sql> select status from dba_indexes where index_name='i_wri$_optstat_tab_st';
-
4. 设置统计信息保留8天
-
exec dbms_stats.alter_stats_history_retention(8);
参考:
sysaux 表空间中 sm/optstat 使用的统计空间在清除后未回收(文档 id 454678.1)
阅读(1409) | 评论(0) | 转发(0) |