今天又有朋友问到当向一个表空间错误的添加了一个数据文件如何来将这个文件删除?
如果是在Oracleg之前删除一个表空间中的数据文件后其文件在数据库数据字典中会仍然存在除非你删除表空间否则文件信息不会清除
但是从OraclegR开始Oracle允许我们彻底删除一个空文件不留痕迹
但是注意如果你向SYSTEM表空间错误的添加了一个文件那么就让它在哪里好了不要动
对于普通表空间则可以参考以下步骤处理
数据库版本OraclegR
SQL> select * from v$version;
BANNER
Oracle Database g Enterprise Edition Release Prod
PL/SQL Release Production
CORE Production
TNS for Linux: Version Production
NLSRTL Version Production
向USERS表空间增加一个数据文件
SQL> alter tablespace users add datafile /opt/oracle/oradata/eygle/usersdbf size M;
Tablespace altered
SQL> select file#name from v$datafile;
FILE# NAME
/opt/oracle/oradata/eygle/systemdbf
/opt/oracle/oradata/eygle/undotbsdbf
/opt/oracle/oradata/eygle/sysauxdbf
/opt/oracle/oradata/eygle/usersdbf
/opt/oracle/oradata/eygle/usersdbf
rows selected
确认表空间文件信息
SQL> select file_namefile_id from dba_data_files where tablespace_name=USERS;
FILE_NAME FILE_ID
/opt/oracle/oradata/eygle/usersdbf
/opt/oracle/oradata/eygle/usersdbf
确认表空间未被存储占用
SQL> select segment_namefile_idblocks from dba_extents where file_id=;
no rows selected
删除表空间中的空数据文件
SQL> alter tablespace users drop datafile /opt/oracle/oradata/eygle/usersdbf;
Tablespace altered
检查数据字典这个空文件的信息已经被彻底清除了
SQL> select file_namefile_id from dba_data_files where tablespace_name=USERS;
FILE_NAME FILE_ID
/opt/oracle/oradata/eygle/usersdbf