一、恢复数据库:
恢复数据库:
run {
startup force mount;
restore database;
recover database;
sql 'alter database open';
}
恢复数据库(磁盘损坏)
run {
startup force mount;
set newname for datafile 1 to '';
set newname for datafile 2 to '';
set newname for datafile 3 to '';
...
restore database;
switch datafile all;
recover database;
sql 'alter database open';
}
二、恢复数据文件
恢复system表空间数据文件
run {
startup force mount;
restore datafile 1;
recover datafile 1;
sql 'alter database open';
}
恢复system表空间数据文件(磁盘损坏)
run {
startup force mount;
set newname for datafile 1 to '';
restore datafile 1;
switch datafile 1;
recover datafile 1;
sql 'alter database open';
}
数据文件丢失(非system表空间)
run {
startup force mount;
sql 'alter database datafile 4 offile';
sql 'alter database open';
restore datafile 4;
recover datafile 4;
sql 'alter database datafile 4 online';
}
数据文件丢失且磁盘损坏(非system表空间)
run {
startup force mount;
sql 'alter database datafile 4 offline';
sql 'alter database open';
set newname for datafile 4 to '';
restore datafile 4;
switch datafile 4;
recover datafile 4;
sql 'alter database datafile 4 online';
}
数据文件没有备份,但archivelog全部完好
run {
startup force mount;
sql 'alter database datafile 7 offline';
sql 'alter database open';
restore datafile 7;
recover datafile 7;
sql 'alter database datafile 7 online';
}
数据文件损坏
run {
startup force mount;
sql 'alter database datafile 7 offline';
sql 'alter database open';
set newname for datafile 7 to '';
restore datafile 7;
switch datafile 7;
recover datafile 7;
sql 'alter database datafile 7 online';
}
三、恢复表空间
表空间数据文件被删除
run {
sql 'alter tablespace users offline for recover';
restore tablespace users;
recover tablespace users;
sql 'alter tablespace users online';
}
表空间数据文件所在磁盘出现故障
run {
sql 'alter tablesapce users offline for recover';
set newname for datafile 4 to '';
restore tablespace users;
switch datafile all;
recover tablespace users;
sql 'alter tablespace users online';
}
四、数据块介质恢复
blockrecover device type disk datafile 5 block 21,48,..;
五、不完全恢复
--基于时间的恢复
run {
startup force mount;
set until time='2010-10-30 17:00:28';
restore database;
recover database;
sql 'alter database open resetlogs';
}
--基于日志序列号
run {
startup force mount;
set until sequence=6;
restore database;
recover database;
sql 'alter database open resetlogs';
}
--基于scn
run {
startup force mount;
set until scn=51141378;
restore database;
recover database;
sql 'alter database open resetlogs';
}
不完全恢复后需要及时做备份
run {
delete noprompt backup;
delete noprompt copy;
backup database format='';
sql 'alter system archive log current';
}
startup force mount;
set dbid=3267878421;
restore controlfile from autobackup maxseq 6;
基于备份控制文件的不完全恢复
run {
sql 'alter database mount';
set until time='2010-10-30 17:00:28';
restore database;
recover database;
sql 'alter database open resetlogs';
}