oracle缩小表空间文件大小,执行:alter database datafile 'E:\ORCDATA\ORCL\ORCL\HIS11.DBF' resize 10240M;报 ORA-03297: 文件包含在请求的 RESIZE 值以外使用的数据,说明数据分布在10240M以外的地方。
1、查看数据文件能缩小的最小值:
SELECT a.tablespace_name,
file_name,
c.VALUE / 1024 "Blk. size(Kb)",
CEIL ((NVL (hwm, 1) * c.VALUE) / 1024 / 1024) "smallest(Mb)",
CEIL (blocks * c.VALUE / 1024 / 1024) "currsize(Mb)",
CEIL (blocks * c.VALUE / 1024 / 1024) - CEIL ((NVL (hwm, 1) * c.VALUE) / 1024 / 1024) "savings(Mb)"
FROM dba_data_files a,
(SELECT file_id, MAX (block_id + blocks - 1) hwm
FROM dba_extents
GROUP BY file_id) b,
(SELECT VALUE
FROM v$parameter
WHERE NAME = 'db_block_size') c
WHERE a.file_id = b.file_id(+)
and a.status !='INVALID';
smallest(Mb)即为每个文件可缩小到的最小大小值,再次执行alter database datafile即可,这样就可以最大限度的缩小表空间的一个文件大小了。
参考原文链接:ORACLE缩小表空间的数据文件 - 爱码网