背景信息
本番库磁盘空间已经非常紧张,近期做过一次本番库到历史库的数据迁移。有非常多的数据已经在本番库被卸载,但磁盘空间没有被释放,这将会影响一些风险。我们需要通过命令来将其进行收缩。
操作命令
SELECT
'alter database datafile '''
|| t1.file_name
|| ''' resize '
|| ceil((nvl(hwm, 1) * &&blksize) / 1024 / 1024)
|| 'M;' resize_cmd
FROM
dba_data_files t1,
(
SELECT
file_id,
MAX(block_id + blocks - 1) hwm
FROM
dba_extents
GROUP BY
file_id
) t2
WHERE
t1.file_id = t2.file_id (+)
AND
ceil(blocks * &&blksize / 1024 / 1024) - ceil((nvl(hwm, 1) * &&blksize) / 1024 / 1024) > 0;
BLKSIZE通常是8192.