自己对rman备份恢复的一点理解,欢迎讨论
长久以来困扰我的一个问题:
rman备份顺序:
a> 全备数据库;
b> 自动备份controlfile;
c> crosscheck archivelog all;
d> alter system archive log current;
e> backup archive log all delete all input;
f> 自动备份controlfile;
恢复时如果使用b>备份出来的controlfile,则数据库可以还原成功,但recover database失败;也就是说无法恢复到数据文件与控制文件的一致状态;
如果使用 f>备份出来的controlfile,则recover database后可以用resetlogs打开,也就是说recover后可以达成数据文件与控制文件中scn号的一致,只不过需要instance recovery
实际上必须做的:
在使用backup database对数据库进行全备后必须做一次成功的archivelog备份,才能保证不完全恢复的成功。
问题: 为什么?
想了好久未果。论坛上提出,也没有应答。
突然猜想的原因:
a>全备成功后,各个数据文件中的SCN号可能不一致,也可能一致,假定为集合X;
之后备份的控制文件中的SCN号比X中最大的还要大;
这样恢复时需要介质恢复,需要将重做日志文件中的记录应用到数据文件中;
如果没有归档可用,自然无法恢复到文件的一致状态;
如果有归档文件,则此文件归档前一定发生过一次checkpoint,此文件中记载了从事数据库全备开始到到该CHECKPOINT之间的所有变化,只要将这个归档的重做日志文件应用到数据文件中,即可实现数据文件的一致状态。由于控制文件备份时,数据库是OPEN的,因此,End SCN是NULL ,所以接下来需要的是instance recovery . 只要数据文件一致性得到满足,即可使用resetlogs选项来打开数据库。
不知道这样理解对不对?
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/15149581/viewspace-594984/
,如需转载,请注明出处,否则将追究法律责任。