Oracle GoldenGate系列:Extract进程的恢复原理(二)

2014-11-24 14:59:21 · 作者: · 浏览: 1
nded Recovery 检查点超过一个 Bounded Recovery 间隔,则该事务就会在当前的 Bounded Recovery 检查点被持久化。
在 BR 检查点 n 处:
● 有 5 个处于 open 状态的事务: T(27), T(45), T(801), T(950), T(1024)。所有其他的事务均已提交或回滚。这些事务都从其起始点开始延时间轴不断运行。
●运行的时间超过一个 Bounded Recovery 间隔的事务有:T(27) 和 T(45),在BR 检查点 n 处,这些事务都会被持久化(写入)磁盘。
●最早的非持久化对象是 T(801)。该事务不符合持久化到磁盘的条件,因为其运行的时间还没有超过一个 Bounded Recovery 间隔。作为最早的非持久化对象,T(801) 在日志中的起点位置存储在BR 检查点 n的检查点文件中。如果 Extract 进程在 BR 检查点 n 之后意外停止,则该进程将恢复到该日志位置,然后才能重新开始读取解析日志的内容。如果在BR 检查点 n之前的 BoundedRecovery 间隔中没有最早的非持久化的对象,则 Extract 进程就会从当前 Bounded Recovery 检查点的日志位置重新开始读取日志。
在 BR 检查点 n+1 处:
● T(45) 在前一个BoundedRecovery间隔内已经变脏(发生过更新) ,因此该事务将写入到一个新的持久化对象文件中。旧的持久化对象文件将在 BR 检查点 n+1完成后删除。
● 如果 Extract 进程在写 BR 检查点 n+1时或在 BR 检查点 n 和 BR 检查点 n+1 之间的任意Bounded Recovery 检查点间隔内失败,则 Extract 进程将从上一个有效的 BR 检查点 n 开始进行恢复。BR 检查点 n重新开始的位置就是最早的非持久化事务T(801). 的起点。因此,在最坏情况下,Extract 进程的恢复停止的时间点所需的时间不会超过两个 Bounded Recovery 间隔,在本例中,恢复的最长时间不会超过 8 小时。
在 BR 检查点n+3000 处:
系统已经运行了很长时间了。T(27) 和 T(45) 是仅存的持久化事务。T(801) 和 T(950) 已在 BR Checkpoint n+2999 之前的某个时间点提交并写入trail文件。现在仅存的非持久化 open 事务为 T(208412) 和T(208863) 。
● BR Checkpoint n+3000已写完。
● 在 BRCheckpoint n+3000 之后的 BR 间隔内,发生了电源故障。
● 新 Extract 进程恢复到BRCheckpoint n+3000。 (27) 和 T(45) 从包含BRCheckpoint n 的状态的持久化检查点文件还原出来。日志读取从 T(208412) 的起点开始恢复。
来源:http://blog.csdn.net/xiangsir/article/details/8785484