删除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。

posted on 2012-08-28 10:25  onedime  阅读(6643)  评论(1编辑  收藏  举报