使用以下語句刪除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。
