检查点机制
检查点是Oracle数据库内部的一个重要的驱动机制。Oracle按每三秒把数据库时间分为连续的间隔,每个三秒中间隔用一个十进制的数字序列唯一表示,这个数字序列就是scn,一个scn就是一个检查点间隔,唯一表示数据库内的一个三秒时间段。
在上一个scn间隔结束、新的三秒钟间隔开始时,检查点进程就会产生新的检查点信息scn,并在第一时间把新的scn在控制文件记录下来,之后,检查点进程就会一直等待,等三秒结束这一时间点到来,这个时间点称为完全检查点,在完全检查点时,检查点进程会触发数据库写进程,停止数据库写进程把当前的检查点队列中凡是标记为提交状态的数据块从缓存高速缓冲区读出并写入数据文件中,数据库写进程在这些之前会触发一次日志写,以确保写入数据文件的提交过的数据块所对应的重做条目都已持久化记录在联机重做日志文件。在数据库写进程把检查点队列记录的所有已提交的数据块全部成功写入数据文件后,每个数据文件头的scn字段值和控制文件保持了一致,这就是一致性数据库的标志。在oracle内部,检查点机制在实例启动后就持续不断地向前推进,oracle设计检查点机制的唯一目的就是为了执行实例的恢复。