表收缩的2个必要条件:1:ASSM
2:设置enable row movement属性
查看表空间是不是自动管理
select * from dba_tablespaces;
步骤:1:创建表
create table tt tablespace users as select * from dba_objects ;
步骤:2:查看表占的数据块,查看全表扫描读取的数据块数
select blocks from dba_segments where segment_name='TT';
set autotrace traceonly;
select * from tt;
步骤:3:删除一部分数据
SQL> delete from tt where mod(object_id,2)=0;
步骤:4:查看表占的数据块,查看全表扫描读取的数据块数
select blocks from dba_segments where segment_name='TT';
select * from tt;
步骤:5:允许行移动
SQL> alter table tt enable row movement;
步骤:6:收缩表
SQL> alter table tt shrink space;
步骤:7:查看表占的数据块,查看全表扫描读取的数据块数
select blocks from dba_segments where segment_name='TT';
select * from tt;