如果是在oracle10g之前,删除一个表空间中的数据文件后,其文件在数据库数据字典中会仍然存在,除非你删除表空间,否则文件信息不会清除。
但是从oracle10gr2开始,oracle允许我们彻底删除一个空文件,不留痕迹。
但是注意:如果你向system表空间错误的添加了一个文件,那么就让它在哪里好了,不要动。
对于普通表空间,则可以参考以下步骤处理。
数据库版本oracle10gr2:
sql> select * from v$version; banner —————————————————————- oracle database 10g enterprise edition release 10.2.0.1.0 – prod pl/sql release 10.2.0.1.0 – production core 10.2.0.1.0 production tns for linux: version 10.2.0.1.0 – production nlsrtl version 10.2.0.1.0 – production |
向users表空间增加一个数据文件:
sql> alter tablespace users add datafile ‘/opt/oracle/oradata/eygle/users02.dbf’ size 10m; tablespace altered. sql> select file#,name from v$datafile; file# name ———- ————————————————– 1 /opt/oracle/oradata/eygle/system01.dbf 2 /opt/oracle/oradata/eygle/undotbs01.dbf 3 /opt/oracle/oradata/eygle/sysaux01.dbf 4 /opt/oracle/oradata/eygle/users01.dbf 5 /opt/oracle/oradata/eygle/users02.dbf 5 rows selected. |
确认表空间文件信息:
sql> select file_name,file_id from dba_data_files where tablespace_name=’users’; file_name file_id ————————————————– ———- /opt/oracle/oradata/eygle/users02.dbf 5 /opt/oracle/oradata/eygle/users01.dbf 4 |
确认表空间未被存储占用:
sql> select segment_name,file_id,blocks from dba_extents where file_id=5; no rows selected |
删除表空间中的空数据文件:
sql> alter tablespace users drop datafile ‘/opt/oracle/oradata/eygle/users02.dbf’; tablespace altered. |
检查数据字典,这个空文件的信息已经被彻底清除了:
sql> select file_name,file_id from dba_data_files where tablespace_name=’users’; file_name file_id ————————————————– ———- /opt/oracle/oradata/eygle/users01.dbf 4 |