二、OFFLINE和OFFLINE DROP的区别
与删除数据文件相似的还有如下的命令(其中的“'FILE_NAME'”也可以用文件号替代):
需要注意的是,该命令不会删除数据文件,只是将数据文件的状态更改为RECOVER。OFFLINE
FOR DROP命令相当于把一个数据文件置于离线状态,并且需要恢复,并非删除数据文件。数据
文件的相关信息还会存在数据字典和控制文件中。
对于归档模式而言,“OFFLINE FOR DROP”和“OFFLINE”没有什么区别,因为Oracle会忽略FOR
DROP选项。因为OFFLINE之后还需要进行RECOVER才可以ONLINE。
对于非归档模式而言,只能执行“OFFLINE FOR DROP”。若不加FOR DROP选项,则会报错
“ORA-01145: offline immediate disallowed unless media recovery enabled”。因为非归档模式没有归档文件
来进行RECOVER操作。如果OFFLINE之后,速度足够快,联机Redo日志文件里的数据还没有
被覆盖掉,那么在这种情况下,还是可以进行RECOVER操作的。
三、OS级别删除了数据文件后的恢复
若使用了“ALTER DATABASE DATAFILE N OFFLINE DROP;”命令,则并不会删除数据文件,这个时候
可以先ONLINE后再用“ALTER TABLESPACE XXX DROP DATAFILE N;”删除。
如果执行“ALTER DATABASE DATAFILE N OFFLINE DROP;”后并在OS级别删除了数据文件,那么首先
需要使用“ALTER DATABASE CREATE DATAFILE N AS '/tmp/ts_dd_lhr02.dbf'';”来添加一个数据文件,然
后再执行RECOVER并ONLINE后再用“ALTER TABLESPACE XXX DROP DATAFILE N;”命令删除。
如果产生的日志文件以及丢失,那么目标文件就不能再恢复了,这个时候只能删除表空间了,命
令为:“DROP TABLESPACE XXX INCLUDING CONTENTS AND DATAFILES;”。
示例如下:
SYS@ora10g> create tablespace ts_dd_lhr datafile '/tmp/ts_dd_lhr01.dbf' size 10M;
Tablespace created.
SYS@ora10g> alter tablespace ts_dd_lhr drop datafile '/tmp/ts_dd_lhr01.dbf';
评论10
最新资源