Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3693297
  • 博文数量: 715
  • 博客积分: 1860
  • 博客等级: 上尉
  • 技术积分: 7745
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-07 08:51
个人简介

偶尔有空上来看看

文章分类

全部博文(715)

文章存档

2023年(75)

2022年(134)

2021年(238)

2020年(115)

2019年(11)

2018年(9)

2017年(9)

2016年(17)

2015年(7)

2014年(4)

2013年(1)

2012年(11)

2011年(27)

2010年(35)

2009年(11)

2008年(11)

分类: Oracle

2021-08-26 22:00:10


sysaux表空间有时容易被统计信息撑满,执行purge完后空间使用率还是很高。官方说:清除完成后不会立即回收空间。这是正常行为,因为 purge_stats 只是使用“从...删除”语句从 wri$_optstat* 表中删除数据。可用空间将用于向 OPTSTAT 表中进行新插入。

解决方法:
1. 全备数据库
2. 移动表(起到回收空间的目的)
  1. SQL> alter table WRI$_OPTSTAT_TAB_HISTORY move;
  2. SQL> alter table WRI$_OPTSTAT_OPR move;
  3. SQL> alter table WRI$_OPTSTAT_IND_HISTORY move;
  4. SQL> alter table WRI$_OPTSTAT_HISTHEAD_HISTORY move;
  5. SQL> alter table WRI$_OPTSTAT_HISTGRM_HISTORY move;
  6. SQL> alter table WRI$_OPTSTAT_AUX_HISTORY move;
3. 重建索引(move 的后遗症)

  1. 确认索引
  2. SQL> select status from dba_indexes where index_name='I_WRI$_OPTSTAT_IND_OBJ#_ST';
  3. SQL> select status from dba_indexes where index_name='I_WRI$_OPTSTAT_TAB_ST';

  4. 应该是 unusable状态,重建它们:

  5. a.获取重建DDL
  6.  SQL> set long 4000
  7.  SQL> select dbms_metadata.get_ddl('INDEX','I_WRI$_OPTSTAT_IND_OBJ#_ST','SYS') from dual;
  8.  SQL> select dbms_metadata.get_ddl('INDEX','I_WRI$_OPTSTAT_TAB_ST','SYS') from dual;
  9.    
  10. b.根据输出结果,删除并重建索引.
  11.    
  12. c.重新检查状态,应该是valid:
  13. SQL> select status from dba_indexes where index_name='I_WRI$_OPTSTAT_IND_OBJ#_ST';
  14. SQL> select status from dba_indexes where index_name='I_WRI$_OPTSTAT_TAB_ST';


4. 设置统计信息保留8天

  1. exec dbms_stats.alter_stats_history_retention(8);

参考:
SYSAUX 表空间中 SM/OPTSTAT 使用的统计空间在清除后未回收(文档 ID 454678.1)


阅读(1624) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~