通过分析扫描找到最后的完成检查点日志记录,并从这个记录的脏页表中读入。然后将恢复LSN设置为脏页表页面中最低的RecLSNs。如果没有脏页,它将RedoLSN设置为检查点日志记录的LSN。恢复扫描从RedoLSN的日志开始扫描。在这之前所有的日志记录已经应用于磁盘上的数据库页面。分析扫描首先将任务列表设置为未完成、撤销列表,将该表加入到检查点日志记录的处理列表上。分析扫描检查点还读取撤销任务列表的每项中最后检查点日志记录的LSN。论文网
分析扫描从检查点继续向前扫描。当它发现一个任务日志记录不在撤销任务列表中时, 它将在撤销任务列表中添加该任务。当它发现一个任务完成的日志记录时,它将该任务从未处理任务列表中删除。在分析扫描末尾所有撤销任务列表中的任务将在之后未完成扫描中回滚。分析扫描还跟踪记录撤销任务列表中每个任务最后的记录,用于撤消扫描。
当分析扫描发现页面上一个更新的日志记录时还会更新脏页表。如果页面没有在脏页表中,分析扫描将把其添加到脏页表,并设置该页面的Rec LSN为日志记录的LSN。
撤销扫描通过复演已经不反映在磁盘的页面上的每个动作来重复历史。撤销扫描会从RedoLSN开始向前扫描日志。无论何时它发现了更新的日志记录,将会进行如下操作:
1.如果页面没有在脏页表中或更新日志记录的LSN小于脏页表页面的RecLSN,那么撤销扫描将跳过日志记录。
2.否则撤销扫描将从磁盘获取页面,如果页面LSN小于日志记录的LSN,它将恢复日志记录。
注意,如果任一测试是负的,那么日志记录的影响已经出现在页面上,否则日志记录的影响在页面上就没有反映。由于ARIES允许非幂等性生理日志记录,如果它的影响已经反映在页面上就不应重做日志记录。如果第一个测试是负的,甚至不需要从磁盘获取页面检查其页面LSN。