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