Extract 进程恢复原理
BR
适用于 Extract 进程(仅适用于 Oracle数据库)
使用 BR 参数可以控制 GoldenGate 的 Bounded Recovery (BR) 功能。Bounded Recovery 功能仅支持 Oracle 数据库。Bounded Recovery 是通用 Extract 检查点工具的组件之一,可以保证当Extract 进程出于任何原因(计划停机或意外停机)停止后,无论在进程停止时的时间点上存在多少个未提交的事务还是这些事务持续的时间多么久,Extract 进程都能进行高效地恢复。
Bounded Recovery 为 Extract 进程恢复到停止的时间点然后恢复正常处理所花的时间设定了一个时间上限。
注意 在将此参数修改为默认设置以外的其他设置时,请联系 Oracle Support 获取指导。大多数生产环境无需修改此参数。
Extract 进程如何恢复未提交的事务
当 Extract 进程在 redo log 中遇到某个事务的起点(在 Oracle 中通常为第一个可执行的 sql 语句)时,便会将从该事务中捕获到的所有数据缓存到内存中。即使开始该事务不包含任何数据,
Extract 进程也必须将事务缓存到内存中,因为该事务中后面的操作可能包含要捕获的数据。
当Extract 进程在 redolog 中遇到事务的 commit 记录,便会将缓存在内存中的整个事务写入trail 文件,并将其从内存中清除。当 Extract 进程遇到事务的 rollback 记录时,便会丢弃缓存中缓存的整个事务。在 Extract 进程处理 commit 或 rollback 记录之前,都会视事务为
Open状态(未提交或回滚的),并持续不断地收集该事务的信息。
如果 Extract 在遇到事务的 commit 或 rollback 记录之前停止,则在 Extract 进程重启后,必须对所有缓存在内存中的信息进行恢复。此操作适用于 Extract 进程停止时所有处于 open 状态的事务。
Extract 按照如下方式执行此恢复过程:
● 如果在 Extract 进程停止时,不存在处于 open 状态的事务,则恢复操作从当前的
Extract 读取检查点开始,这是正常的恢复过程。
如果 redo log 中存在起始点非常接近于 Extract 进程停止时间点的 open事务,则 Extract进程会重新读入 redolog,从其中最早的 open 事务的起始点开始恢复。此过程需要 Extract 进程对该进程停止前已经写入 trail 或 discarded 文件的事务执行额外的工作,这一重复的工作只需要处理相对较少的数据,属于可接受的成本范围内。这种恢复也可视为正常恢复。
● 如果存在一个或多个 Extract 进程视为长时间运行的 open 事务,
则 Extract 进程便会通过 BoundedRecovery 进行恢复。