----刪除前最好rman冷備份一次,controlfile要單獨備份 alter database backup controlfile to '/oradata/controlfile.bak'; 如果不備份控制文件也可以在備份的ramn恢復控制文件,下面是我做的實驗:
1、第一種恢復方法
SQL> select name from v$tablespace;
NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
USERS
TEMP
ECOLOGY
SQL> drop tablespace ecology including contents and datafiles;
SQL>shutdown immediate;
SQL>startup nomount;
RMAN>restore controlfile from '/oradata/controlfile.bak'; (控制文件需要在nomount狀態下轉儲)
RMAN>alter database mount;
RMAN>report schema;
List of Permanent Datafiles
===========================
File Size(MB) Tablespace RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1 450 SYSTEM *** /oradata/oaback/system01.dbf
2 25 UNDOTBS1 *** /oradata/oaback/undotbs01.dbf
3 300 SYSAUX *** /oradata/oaback/sysaux01.dbf
4 5 USERS *** /oradata/oaback/users01.dbf
5 0 ECOLOGY *** /oradata/oaback/ecology.dbf
List of Temporary Files
=======================
File Size(MB) Tablespace Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1 20 TEMP 32767 /oradata/oaback/temp01.dbf
(以上命令執行後可以看到刪除的表空間,控制文件轉儲成功,因爲表空間信息存儲在controlfile,如果執行此命令沒有看到刪除的表空間,那麼需要轉儲更早時間備份的controlfile,首先關閉數據庫,啓動到nomount,restore controlfile from '/oradata/controlfile.bak';在啓動到mount,執行report schema 能看到刪除的表空間則證明controlfile轉儲成功)
執行以下命令恢復刪除的表空間
RMAN> run{
set until time '2013-08-20 14:45:00';
allocate channel c1 type disk;
allocate channel c2 type disk;
restore database;
recover database;
alter database open resetlogs;
}
2、第二種恢復方法
先用rman: restore controlfile from '/oradata/comtrolfile.bak';
然後:recover database until time '2013-08-20 14:44:00' using backup controlfile;(這個時間點要自己找,或者大概估計一個)
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
/oradata/oaback/redo03.log
Log applied.
Media recovery complete.
SQL> alter database open resetlogs;
Database altered.
/oradata/oaback/redo03.log是當前日誌組的一個成員