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)
阅读(1609) | 评论(0) | 转发(0) |