很多朋友经常会对完全恢复与Resetlogs产生误解,以为使用Resetlogs方式打开数据库就是不完全恢复,这种看法是不正确的。
只要拥有当前的日志文件,那么就能够对数据库执行完全恢复,而是否需要使用Resetlogs方式打开,则取决于是否使用的是备份的控制文件,如果使用的是备份的控制文件则需要使用Resetlogs方式打开数据库,如果拥有当前的控制文件或者通过重建控制文件来恢复,就不需要通过Restlogs方式打开数据库。
(1)、使用备份控制文件进行恢复(此时要用Resetlogs打开数据库)
RMAN> run
{
startup nomount;
restore controlfile from autobackup;
sql 'alter database mount';
restore database;
recover database;
sql 'alter database open resetlogs';
}
(2)、通过重建控制文件进行恢复(此时不需要用Resetlogs打开数据库)
RMAN>run
{
startup nomount;
restore controlfile from autobackup;
sql 'alter database mount';
restore database;
}
切换到sqlplus,关闭数据库,启动到nomount状态,重建控制文件
SQL>alter database backup controlfile to trace;
SQL> startup nomount force;
SQL>重建控制文件代码
SQL>recover database; --要保证有全备后的归档日志文件和联机日志
SQL>alter database open;