目的:收缩数据文件,节省磁盘空间

环境:oracle11g rac

方法:使用 resize 命令即可

1
alter database datafile '/oradata2/mesdb/SYSTRAVELIDX119.ora' resize 1024M;

重点:如何确认可以收缩的文件大小是根据 HWM 设置的,可以使用下列语句查询

查询数据文件使用率

1
select /*+ ordered use_hash(a,b,c) */ a.file_id,a.file_name,a.filesize, b.freesize, (a.filesize-b.freesize) usedsize,  c.hwmsize,  c.hwmsize - (a.filesize-b.freesize) unsedsize_belowhwm,  a.filesize - c.hwmsize canshrinksize  from  ( select file_id,file_name,round(bytes/1024/1024) filesize from dba_data_files ) a, ( select file_id,round(sum(dfs.bytes)/1024/1024) freesize from dba_free_space dfs group by file_id ) b, ( select file_id,round(max(block_id)*8/1024) HWMsize from dba_extents group by file_id) c where a.file_id = b.file_id   and a.file_id = c.file_id order by unsedsize_belowhwm desc