一图理解检查点机制:
可以把检查点机制理解为数据库的一个事件,当检查点事件发生时,Oracle会通知DBWR进程,把修改过的数据,也就是Checkpoint之前的脏数据写入磁盘。
图中标记了3个日志组,假定在A时间点,数据库完成并记录了最后一次检查点,在B时刻数据库发生故障。
那么在下次数据库启动时,A时间点之前的操作不再需要进行处理,因为已自动写入磁盘。需要处理的就是时间点A至B之间操作,即:A~B时间内提交的操作实际并没有写入磁盘,所以需要重做(REDO),而检查点之后没有提交的操作就需要撤销(UNDO),这样才能保证内存的数据与磁盘的数据是一致的。
所以:
检查点之后提交的事务需要重做(REDO),检查点之后没提交的事务需要撤销(UNDO),而检查点之前提交的事务,无需处理。