rman备份后为什么要同时备份归档日志

今天在CU上看到有人问一个问题:rman备份后为什么要同时备份归档日志呢,既然rman是物理备份,所有数据已经都备份,再次备份归档日志何用?
    思考了一下,认为有必要记录一下为什么要备份归档日志:
    其实rman备份开始之前的归档是没有用的,可以删除,但是不能在rman备份之前就删除,因为rman有可能备份失败,可以在rman备份成功之后删除之。
    rman备份是一种物理的备份,它直接去读取数据块,因此rman是块级别的备份。从备份的那个时间点开始rman将锁定此刻的数据文件信息,也就是说只是备份数据文件到此刻的信息为之。
    但是rman并不锁定数据文件的使用,也就是说rman的备份,不是数据库一致性状态的备份,由于rman备份是块级别的,它只备份控制文件中已经存在的数据块,同时数据库还在运行之中,那么就有可能会出现某些已经提交的操作,但是dbwn还没有写入数据文件,或者已经被rman备份过的数据块,又重新被修改,等等,
    这些信息rman备份都不会记录,也是rman无法记录的。但是记录这些信息的是redo file,所以在rman完毕建议马上执行日志切换,然后备份归档日志,因为在rman恢复过程中,rman本身备份的数据是不一直的,要靠这些已经归档的redo file信息恢复和保持数据库的一直状态。

    当然备份的归档日志中,可能包含有rman开始之前的归档,这些是没用的,
    其实这些归档文件中真正有用的是从rman备份开始到rman备份结束时刻系统产生的归档日志。
    同时rman在恢复的时候,restore database完毕后,会依次利用归档日志和联机日志进行完全恢复。此时利用的这些归档就是从rman备份开始到rman备份结束产生的归档日志。
    因此备份归档日志是很必要的,当然联机日志也是必须的,这些日志保证了rman能够完全的恢复数据库。

你可能感兴趣的:(数据库,File,database)