项目组同事在进行海量数据的POC实验,结果发现数据文件增长过快,超过了规划范围。笔者在数据清空之后,要进行文件缩小操作,释放掉占用的空间。
1、故障现象
首先,我们将数据文件大小约为4G,是自动拓展后的结果。
SQL> select file_name, bytes/1024/1024/1024 from dba_data_files where tablespace_name='NBSMIGIND';
FILE_NAMEBYTES/1024/1024/1024
-------------------------------------------------------------------------------- --------------------
/nbstdata04/oradata/NBSTEST/nbsdata/nbsmigind01.dbf3.91015625
该文件是表空间nbsmigind下的唯一数据文件,其中的对象段空间只有约500M左右。
SQL> select count(*),sum(bytes)/1024/1024 from dba_segments where tablespace_name='NBSMIGIND';
COUNT(*) SUM(BYTES)/1024/1024
---------- --------------------
62525
那么,现在希望将数据文件缩小到2G左右。我们这种场景通常会使用resize命令完成。
SQL> alter database datafile '/nbstdata04/oradata/NBSTEST/nbsdata/nbsmigind01.dbf' resize 2000m;