彻底删除ORALCE数据文件
在创建表空间时通常会指定相应的数据文件,但是如果删除表空间时即便是加上INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS; oralce的数据依然没用同时被删除,呵呵,看看我的解决方法,我的方法也许不是最好的,如果哪位能有好的解决办法欢迎讨论。
为了作测试方便,我是在WinXP上装的Oralce 10g 10.2.0.1.0.
二话不说,先看DEMO
Step 1:创建一个mydb_tbs表空间
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 Connected as SYS SQL> create tablespace mydb_tbs datafile 'J:\oradata\orcl\mydb_tbs_001.dbf' size 50m; Tablespace created SQL>
看一下结果:
J:\oradata\orcl 的目录2011-03-0822:33 <DIR> .2011-03-0822:33 <DIR> ..2011-03-0822:24 7,061,504 CONTROL01.CTL2011-03-0822:24 7,061,504 CONTROL02.CTL2011-03-0822:24 7,061,504 CONTROL03.CTL2011-03-0822:24 104,865,792 EXAMPLE01.DBF2011-03-0822:33 52,436,992 MYDB_TBS_001.DBF2011-03-0822:24 52,429,312 REDO01.LOG2011-03-0822:24 52,429,312 REDO02.LOG2011-03-0822:24 52,429,312 REDO03.LOG2011-03-0822:24 251,666,432 SYSAUX01.DBF2011-03-0822:24 503,324,672 SYSTEM01.DBF2011-03-0822:02 20,979,712 TEMP01.DBF2011-03-0822:24 36,708,352 UNDOTBS01.DBF2011-03-0822:24 5,251,072 USERS01.DBF 13 个文件1,153,705,472 字节 2 个目录8,413,822,976 可用字节
可以看到MYDB_TBS_001.DBF 已经存在了
再查一下dba_data_file
SQL> select FILE_NAME from dba_data_files; FILE_NAME--------------------------------------------------------------------------------J:\ORADATA\ORCL\USERS01.DBFJ:\ORADATA\ORCL\SYSAUX01.DBFJ:\ORADATA\ORCL\UNDOTBS01.DBFJ:\ORADATA\ORCL\SYSTEM01.DBFJ:\ORADATA\ORCL\EXAMPLE01.DBFJ:\ORADATA\ORCL\MYDB_TBS_001.DBF
Step 2:删除mydb_tbs表空间
SQL>drop tablespace mydb_tbs including contents and datafiles cascade constraints; Tablespace dropped
看到了,提示表空间已经被删除,
drop tablespace命令的需要加下面3个参数;
INCLUDING CONTENTS:指删除表空间中的数据段
INCLUDING CONTENTS AND DATAFILES:指删除数据段和数据文件
CASCADE CONSTRAINTS:删除所有与该空间相关的完整性约束条件
Step 3:在OS中删除对应的数据文件
当删除这个数据文件时,会有下面的提示:
http://dl.iteye.com/upload/attachment/431923/03b56b3f-c638-318e-946f-88573c911855.jpg
可见该文件依然被ORACLE使用着,但是看看下面的查询
SQL> select file_name from dba_data_files; FILE_NAME--------------------------------------------------------------------------------J:\ORADATA\ORCL\USERS01.DBFJ:\ORADATA\ORCL\SYSAUX01.DBFJ:\ORADATA\ORCL\UNDOTBS01.DBFJ:\ORADATA\ORCL\SYSTEM01.DBFJ:\ORADATA\ORCL\EXAMPLE01.DBF SQL>
确实没有J:\ORADATA\ORCL\MYDB_TBS_001.DBF,这种情况看起来似乎很奇怪,我查了很多资料也没讲如何把表空间和数据文件一起删除,看来上面的删除的结果也只是解除了表空间和数据文件的逻辑关系,没办法只好用最后一招了---重启
Step5:重启oralce数据库
C:\>sqlplus /nologSQL*Plus: Release 10.2.0.1.0 - Production on 星期二 3月 8 22:24:05 2011Copyright (c) 1982, 2005, Oracle.All rights reserved.SQL> conn /as sysdba已连接。SQL> shutdown immediate数据库已经关闭。已经卸载数据库。ORACLE 例程已经关闭。SQL> startupORACLE 例程已经启动。Total System Global Area293601280 bytesFixed Size 1248600 bytesVariable Size 100663976 bytesDatabase Buffers 184549376 bytesRedo Buffers 7139328 bytes数据库装载完毕。数据库已经打开。SQL>
经过重启数据库之后,J:\ORADATA\ORCL\MYDB_TBS_001.DBF可以顺利删除。
页:
[1]