先做统计信息,然后用这个脚本搞它:
select TABLE_NAME,HWM,AVG_USED_BLOCKS,
GREATEST(ROUND(100 * (NVL(HWM - AVG_USED_BLOCKS,0)/GREATEST(NVL(HWM,1),1) ), 2), 0) WASTE_PER,sysdate analyze_dt
from
(SELECT A.BLOCKS - B.EMPTY_BLOCKS - 1 HWM,table_name,
DECODE( ROUND((B.AVG_ROW_LEN * NUM_ROWS * (1 + (PCT_FREE/100)))/8192, 0),
0, 1,
ROUND((B.AVG_ROW_LEN * NUM_ROWS * (1 + (PCT_FREE/100)))/8192, 0)
) + 2 AVG_USED_BLOCKS
FROM USER_SEGMENTS A,
USER_TABLES B
WHERE SEGMENT_NAME = TABLE_NAME
and TABLE_NAME in ('XXX')
and SEGMENT_TYPE = 'TABLE'
);