如果是在Oracle10g之前,删除一个表空间中的数据文件后,其文件在数据库数据字典中会仍然存在,除非你删除表空间, 否则文件信息不会清除。 但是从Oracle10gR2开始,Oracle允许我们彻底删除一个空文件,不留痕迹。
但是注意:如果你向SYSTEM表空间错误的添加了一个文件,那么就让它在哪里好了,不要动。 对于普通表空间,则可以参考以下步骤处理。
数据库版本Oracle11gR2:
SQL> select * from v$version;
BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production PL/SQL Release 11.2.0.1.0 - Production CORE 11.2.0.1.0 Production TNS for Linux: Version 11.2.0.1.0 - Production NLSRTL Version 11.2.0.1.0 - Production
新建表空间ts_test
sql> create tablespace ts_test datafile '/oracle/app/oracle/oradata/sztech1/ts_test01.dbf' size 10m;
再增加一个数据文件:
SQL> alter tablespace ts_test add datafile '/oracle/app/oracle/oradata/sztech1/ts_test02.dbf' size 5m;
Tablespace altered.
sql> select file_id,file_name from dba_data_files
FILE_NAME FILE_ID -------------------------------------------------- ---------- /oracle/app/oracle/oradata/sztech1/users01.dbf 4 /oracle/app/oracle/oradata/sztech1/undotbs01.dbf 3 /oracle/app/oracle/oradata/sztech1/sysaux01.dbf 2 /oracle/app/oracle/oradata/sztech1/system01.dbf 1 /oracle/app/oracle/oradata/sztech1/example01.dbf 5 /oracle/app/oracle/oradata/sztech1/ts_test01.dbf 6 /oracle/app/oracle/oradata/sztech1/ts_test02.dbf 7
7 rows selected.
确认数据文件未被存储占用:
SQL> select segment_name,file_id,blocks from dba_extents where file_id=7;
no rows selected
删除表空间中的空数据文件:
SQL> alter tablespace ts_test drop datafile '/oracle/app/oracle/oradata/sztech1/ts_test02.dbf';
Tablespace altered.
检查数据字典,这个空文件的信息已经被彻底清除了:
SQL> select file_name,file_id from dba_data_files where tablespace_name='TS_TEST';
FILE_NAME FILE_ID -------------------------------------------------- ---------- /oracle/app/oracle/oradata/sztech1/ts_test01.dbf 6
|