频繁的dml操作导致数据库表空间有很大的空间浪费。
下面语句可以查出表空间的高水位,很好的释放表空间
set line 200set pages 5000col a.file_id for 999col a.file_name for a30col CMD for a80SELECTa.file_id,a.file_namefile_name,CEIL( ( NVL( hwm,1 ) * blksize ) / 1024 / 1024 ) smallest,CEIL( blocks * blksize / 1024 / 1024 ) currsize,CEIL( blocks * blksize / 1024 / 1024 ) -CEIL( ( NVL( hwm,1) * blksize ) / 1024 / 1024 ) savings,'alter database datafile ''' || file_name || ''' resize ' ||CEIL( ( NVL( hwm,1) * blksize ) / 1024 / 1024 ) || 'm;' cmdFROMDBA_DATA_FILES a,(SELECT file_id, MAX( block_id + blocks - 1 ) hwmFROM DBA_EXTENTSGROUP BY file_id) b,(SELECT TO_NUMBER( value ) blksizeFROM V$PARAMETERWHERE name = 'db_block_size')WHEREa.file_id = b.file_id(+)AND--表空间名称tablespace_name='&TABLESPACE_NAME'ANDCEIL( blocks * blksize / 1024 / 1024 ) - CEIL( ( NVL( hwm, 1 ) * blksize ) / 1024 / 1024 ) > 0ORDER BY 5 desc;
