Checkpoint-检查点

来源:互联网 发布:nginx 开启hsts 编辑:程序博客网 时间:2024/05/16 16:12
Checkpoint在一致性数据库关闭、实例恢复和数据库操作方面提供一种关键机制。有下面相关的含义:
  • 显示检查点位置的数据结构,是重做流中的SCN,用来实例恢复必须开始的地方;检查点的位置有数据库缓冲区中最老的脏缓冲区决定,检查点位置作为一个指针指向重做流,存储在控制文件和每个数据文件头部;
  • 在数据库缓冲区缓存将修改的数据库缓冲区写入磁盘;

检查点的目的

Oracle使用检查点完成下面目标:
  • 减少实例或介质故障恢复所需的时间;
  • 确保缓冲区缓存的脏缓冲区定时写到磁盘;
  • 确保所有已提交的数据在一致性关闭时写到磁盘;

Oracle数据库何时初始化检查点

检查点进程(CKPT)负责将检查点写到数据文件头部和控制文件中,检查点在各种条件下都会发生,比如,Oracle数据库使用下面的检查点类型:
  • 线程检查点(Thread checkpoints):在某个目标之前,数据库将在某个线程通过redo修改的所有缓冲区写到磁盘,数据库中所有线程检查点集是一个数据库检查点,线程检查点在以下情况下发生:一致的数据库关闭、ALTER system Checkpoint语句、在线日志切换和ALTER Database begin BACKUP语句;
  • 表空间和数据文件检查点(Tablespace and data file checkpoints):表空间检查点是数据文件检查点的集合,表空间中每个数据文件一个检查点。这些检查点发生在将表空间置为read-only状态或将其正常离线,收缩数据文件或执行ALTER tablespace begin BACKUP语句;
  • 增量检查点(Incremental checkpoint):增量检查点是一种线程检查点,部分目的是避免在联机重做日志切换时写入大量的数据块。DBWn至少每三秒检查一次以决定是否有工作要做。当DBWn写脏缓冲区时,它推进检查点的位置,引起CKPT将检查点位置写入到控制文件,但不写入数据文件头部。

其他类型的检查点包括实例和介质恢复检查点,还有schema对象drop或truncate时的检查点。

检查点进程

检查点进程(CKPT)使用检查点信息来更新控制文件和数据文件头部,并给DBWn发信号将块写入磁盘。检查点信息包括检查点位置、SCN,开始恢复的在线重做日志的位置等。


SCN

System Change Number,SCN的值是对数据库所做更改的逻辑时间点(point in time)。Oracle 为每个已提交的事务分配一个唯一的SCN。


参考:官方文档