之前以为备份保留策略恢复窗口指定为多少天,则指定多少天后备份则obsolete。所以,造成自己用report obsolete命令查看,觉得应该obsolete的备份,却没有出现。于是有下文。

什么是恢复窗口

先看看官方文档上的一段解释

A recovery window is a period of time that begins with the current time and extends backward in time to the point of recoverability. The point of recoverability is the earliest time for a hypothetical point-in-time recovery, that is, the earliest point to which you can recover following a media failure.

上面这段我们可以看出

恢复窗口,是一个时间段,即从当前时间向后延伸到过去的某一个可恢复时间点。

备份何时会obsolete

为了保证这个“恢复窗口”的可恢复性,即窗口内的任意一点能够被恢复,oracle会视所有相关的全备份,增量备份,以及归档日志为非obsolete。除此之外不相关的备份则为obsolete

如下图所示:

关于rman备份保留策略“恢复窗口”的一点理解

从图中可以看出恢复窗口为7天,那么从当前时间123号向后延伸到116号这个时间周期内,为保证该时间段内任意一点的可恢复性,则会认为114号的全备份,以及从14号开始的归档日志为非obsolete114号之前的所有全备份和归档日志都会为obsolete.

 

举例说明

如下图所示

恢复窗口的配置如下(recovery window=7)

关于rman备份保留策略“恢复窗口”的一点理解

 

数据库的当前时间如下(current time 417)

关于rman备份保留策略“恢复窗口”的一点理解

 

即恢复窗口应为417410号,为了保证这段时间内的任意一点的可恢复性,相关备份,归档,增量备份都为非obsolete

数据库当前的备份如下:

关于rman备份保留策略“恢复窗口”的一点理解

 

图中可以看出数据库的做了两次全备份,一次是316号,另一次是411号,为了保证417410号这段时间内的任意一点能够恢复,所以316号的这次全备及其后面的归档也是非obsolete的。因为对于410号任意时间点的恢复,还需要316号这个全备做为基点。

 

发起report obsolete命令后的结果

关于rman备份保留策略“恢复窗口”的一点理解

 

 

总结:结合上一篇博文http://jiujian.blog.51cto.com/444665/1165766和这篇博文,判断那些备份、归档,会obsolete已经了然于胸了吧