生产上有1张1.3T,包含5亿行记录的表,开发说可以删除2亿行。决定分批删除数据,然后使用Shrink 收缩表,从而达到释放表空间的目的
当然 还有其他办法去释放空间比如1.导出导入,2在线从定义,3.create as select 等等,这些本文不讨论,只采用shrink 的方式处理
select t.NUM_ROWS, t.BLOCKS,ROW_MOVEMENT
from dba_tables t
where t.TABLE_NAME = 'T1';
NUM_ROWS BLOCKS ROW_MOVEMENT
---------- ---------- ------------------------
527895313 173600557 DISABLED
select T.owner,
T.tablespace_name,
T.segment_name,
T.BYTES / 1024 / 1024/1024 AS g
from dba_segments t
where t.tablespace_name = 'TBS_POSDBONL_DATA'
AND T.segment_name = 'T1';
OWNER TABLESPACE_NAME