1、选择某个表空间中超过N个blocks的segments,通过此语句可以看出那个表占用的空间大。
select segment_name,segment_type,blocks from dba_segments
where tablespace_name='TABLESPACENAME'
and blocks > N
order by blocks;
2、分析表,得知表的一些信息
analyze table TABLENAME estimate statistics;
执行完后再执行
select initial_extent,next_extent,min_extents,blocks,empty_blocks from dba_tables
where table_name='TEST' and owner='AA';
3、使用alter table ... deallocate unused 命令回收表的空间
例如: alter table AA.TEST deallocate unused keep 1k;
4、使用 alter tablespace TABLESPACENAME coalesce 命令回收表空间的空间。
5、可以使用dba_free_space视图查看表空间中的空闲空间信息。
方法二、alter table table_name move。用move方法后,与表相关的索引要rebuild
方法三、drop table 和delete都不能释放空间,truncate可以释放空间。