清理PERFSTAT快照表空间方法
1.查询整个记录时间段snap_id
select snap_id,dbid,to_char(snap_time,'yyyy/mm/dd hh24:mi:ss') snaptime,snap_level from stats$snapshot order by 1;
2.使用oracle自带脚本sppurge.sql清理快照,只需要输入起始到结束时间段的snap_id即可将这个时间段的快照删除。
以上步骤操作完成commit后发现PERFSTAT表空间容量并没有下降,为什么?那么我的理解只能是与高水位有关了。
解决高水位有几种方法:
1.move操作
2.exp导入/导出
由于我的库是9I的,在10G才有shrink,所以这里我选择用move操作来解决高水位的问题。
由于PERFSTAT表空间使用较高,无法在直接move,所以我先move到其它表空间,之后在迁移回来。
alter table PERFSTAT.STATS$SQLTEXT move tablespace SMMS_BASE_DAT;
之后在迁移回PERFSTAT表空间即可解决高水位问题,由于使用的是move操作索引会失效
select status,index_name from dba_indexes where owner='PERFSTAT'; 检查因为move操作失效的索引rebuild
alter index index_name rebuild;
|