1、首先检查表空间占用空间情况
select total.tablespace_name,
round(total.MB, 2) as Total_MB,
round(total.MB - free.MB, 2) as Used_MB,
round((1 - free.MB/total.MB)*100,2) || '%' as Used_Pct from
(select tablespace_name, sum(bytes)/1024/1024 as MB from
dba_free_space group by tablespace_name) free,
(select tablespace_name, sum(bytes)/1024/1024 as MB from dba_data_files group by tablespace_name)
total where free.tablespace_name = total.tablespace_name;
对利用率低的生产表进行整理
1、 临时增加SORT_AREA_SIZE的大小
ALTER SESSION SET SORT_AREA_SIZE=209715200;
2、根据空间总量,空间使用率,预估目标总量
分阶段整理tablespaces的table,可以考虑第一阶段先处理空间总量的80%,第二阶段总量的60%,最后阶段处理到目标总量
整理表时,必须考虑表对应的INDEX,表移动,INDEX自动失效
2.1 对于TABLE表,自动生成执行脚本,并执行
select DISTINCT 'ALTER TABLE '||t.owner||'.'||t.segment_name||' MOVE nologging;',t.BLOCK_ID
from dba_extents t
where t.tablespace_name = 'MPSCUR' AND T.segment_type='TABLE' and t.BLOCK_ID >89097;
2.2 对于TABLE PARTITIONAL,处理方式有所区别
select DISTINCT 'ALTER TABLE '||t.owner||'.'|| t.segment_name||' MOVE PARTITION '||T.PARTITION_NAME||' nologging;'
from dba_extents t
where t.tablespace_name = 'MPSCUR' AND T.segment_type='TABLE PARTITION' and t.BLOCK_ID >89097;
2.3 对失效的INDEX重建
select DISTINCT 'alter index ' ||k.owner||'.'|| k.index_name || ' rebuild nologging PARALLEL 4;'
from dba_indexes k
where k.status='UNUSABLE';
2.4 对超过目标总量INDEX执行重建
select DISTINCT 'ALTER INDEX '||t.owner||'.'||t.segment_name||' rebuild nologging PARALLEL 4;'
from dba_extents t
where t.tablespace_name = 'MPSCUR' AND T.segment_type='INDEX' and t.BLOCK_ID >89097
3、调整BLOCK_ID值,继续参照2.1、2.2、2.3、2.4执行
4、调整tablespace空间大小
select total.tablespace_name,
round(total.MB, 2) as Total_MB,
round(total.MB - free.MB, 2) as Used_MB,
round((1 - free.MB/total.MB)*100,2) || '%' as Used_Pct from
(select tablespace_name, sum(bytes)/1024/1024 as MB from
dba_free_space group by tablespace_name) free,
(select tablespace_name, sum(bytes)/1024/1024 as MB from dba_data_files group by tablespace_name)
total where free.tablespace_name = total.tablespace_name;
对利用率低的生产表进行整理
1、 临时增加SORT_AREA_SIZE的大小
ALTER SESSION SET SORT_AREA_SIZE=209715200;
2、根据空间总量,空间使用率,预估目标总量
分阶段整理tablespaces的table,可以考虑第一阶段先处理空间总量的80%,第二阶段总量的60%,最后阶段处理到目标总量
整理表时,必须考虑表对应的INDEX,表移动,INDEX自动失效
2.1 对于TABLE表,自动生成执行脚本,并执行
select DISTINCT 'ALTER TABLE '||t.owner||'.'||t.segment_name||' MOVE nologging;',t.BLOCK_ID
from dba_extents t
where t.tablespace_name = 'MPSCUR' AND T.segment_type='TABLE' and t.BLOCK_ID >89097;
2.2 对于TABLE PARTITIONAL,处理方式有所区别
select DISTINCT 'ALTER TABLE '||t.owner||'.'|| t.segment_name||' MOVE PARTITION '||T.PARTITION_NAME||' nologging;'
from dba_extents t
where t.tablespace_name = 'MPSCUR' AND T.segment_type='TABLE PARTITION' and t.BLOCK_ID >89097;
2.3 对失效的INDEX重建
select DISTINCT 'alter index ' ||k.owner||'.'|| k.index_name || ' rebuild nologging PARALLEL 4;'
from dba_indexes k
where k.status='UNUSABLE';
2.4 对超过目标总量INDEX执行重建
select DISTINCT 'ALTER INDEX '||t.owner||'.'||t.segment_name||' rebuild nologging PARALLEL 4;'
from dba_extents t
where t.tablespace_name = 'MPSCUR' AND T.segment_type='INDEX' and t.BLOCK_ID >89097
3、调整BLOCK_ID值,继续参照2.1、2.2、2.3、2.4执行
4、调整tablespace空间大小
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28793776/viewspace-1562270/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/28793776/viewspace-1562270/