1、alter database datafile xxx offline drop; //该命令把数据文件至于离线recover状态,不会删除文件、字典中的信息也不会被删,需要恢复recover(非归档下,只要online log没被覆盖,要快,归档需要日志连续)
2、alter tablespace xxx drop datafile 'xxx' ; //该语句只能在数据文件处于online情况下使用,并且数据文件要是非空,它会删除磁盘上的文件与控制文件中的记录。
3、表空间脱机的四种选项normal(默认)、temporary(临时)、immediate(立即)、for recover
(1)Normal(正常):如果表空间中的任何数据文件不存在任何错误状态,通过正常方式便可使表空间脱机。当 Oracle 数据库使表空间脱机时,通过对表空间中的所有数据文件设置检查点,可以确保将所有数据写入磁盘。
(2)Temporary(临时):如果表空间中的一个或多个文件存在错误状态,也可以使表空间暂时脱机。当 Oracle 数据库使(尚未脱机的)数据文件脱机时,会对这些数据文件设置检查点。如果没有任何文件脱机,但是您使用了临时子句,使表空间重新联机时便不需要执行介质恢复。但是,如果因写错误而导致表空间的一个或多个文件脱机,而且设置了表空间临时脱机,那么表空间需要执行恢复后才能重新联机。
(3)Immediate(立即):表空间可以立即脱机,Oracle 数据库不需要对任何数据文件设置检查点。如果指定了“Immediate(立即)”,则必须先对表空间执行介质恢复 recover tablespace ,才能使表空间联机。如果数据库在 NOARCHIVELOG 模式下运行,则无法立即使表空间脱机.
下面的情况,需要先把所有数据文件状态recover的recover,使其状态offline,然后使其online,最后online SDE表空间SQL> select t.file#,t.name,t.status from v$tablespace d,v$datafile t where d.TS#=t.TS# and d.name='SDE';
FILE# NAME STATUS
---------- ---------------------------------------- -------
5 E:\SDE.DBF RECOVER
35 J:\SDE_DATA_PLACE\PY_SDE4 OFFLINE
34 E:\SDE_4 RECOVER
17 E:\SDE3 RECOVER
13 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SD OFFLINE
E2.DBF