删除Oracle数据库表空间时,数据库文件删不掉怎么办?
使用以下语句删除Oracle数据库表空间时,有时会成功,数据库文件也会一起删除。
drop tablespace PARTS_INDEX including contents and datafiles;
但有时,显示Tablespace dropped,但数据库文件依然存在,重新创建数据库表空间时会出错。
create tablespace PARTS_INDEX
nologging
datafile 'D:\ORACLE\ORADATA\PARTS\PARTS_INDEX.DBF' size 200M autoextend on next 10M maxsize unlimited extent management local
ORA-01119: 创建数据库文件 'D:\ORACLE\ORADATA\PARTS\PARTS_INDEX.DBF' 时出错
ORA-27038: skgfrcre: 文件存在
OSD-04010: 指定了 <create> 选项, 但文件已经存在
此时,手动删除该文件,能够删除。
具体原因待查。
解决办法:
在创建表空间语句中使用reuse关键词,例如:
-- 创建索引表空间 drop tablespace PARTS_INDEX including contents and datafiles; create tablespace PARTS_INDEX nologging datafile 'D:\ORACLE\ORADATA\PARTS\PARTS_INDEX.DBF' size 200M reuse autoextend on next 10M maxsize unlimited extent management local;
reuse参数解释:
(1)如果file 已经存在,并且在创建时指定了file size,那么就重用原文件,并应用新的size,如果没有指定file size,则保留原有的大小。
(2)如果file 不存在,oracle 将忽略该参数。
测试环境:WinXP+Oracle9i。