我在看checkpoint时,网上资料有如下一段:checkpoint 发生时,一方面通知dbwr进行下一批写操作,(dbwr 写入的时候,一次写的块数是有一个批量写的隐藏参数控制的。)另一方面,oracle 采用了一个心跳的概念,以3秒的频率将dbwr 写的进度反应到控制文件中,也就是把dbwr当前刚写完的dirty buffer对应的scn 写入数据文件头和控制文件,这就是检查点scn。
这个3秒和增量检查点不是一个概念,3秒只是在控制文件中,ckpt 进程去更新当前 dbwr写到哪里了,这个对于 ckpt 进程来说叫 heartbeat ,heartbeat是3秒一次,3秒可以看作不停的检查并记录检查点执行情况(DBWR的写进度)。
检查点发生之后数据库的数据文件、控制文件处于一致状态的含义是不需要进行 介质恢复,只表示数据文件头一致,但是并不表示数据文件内容一致,因为数据文件内容可能在没有发生检查点的其他情况下的dbwr写数据文件,这样数据文件内容就不一致,若掉电需要进行崩溃恢复。问下。
1  既然心跳每3秒一次,那么问下,commit的时候,检查点进程会做什么事情呢?如果commit时正处于3秒点呢,ckpt进程又会做些什么事情?2  心跳过后,ckpt进程是不是一开始更新redo日志scn号以及归档日志scn号,再去更新系统scn号,再去更新controle中的数据文件scn号,然后去更新数据文件里面文件头sch号呢?

解决方案 »

  1.   

      COMMIT所要完成的工作,是将LOG_BUFFER写入到REDO,只要数据写入到REDO,COMMIT工作即完成。
        
       这么说来,COMMIT跟CKPT没有啥关系。
     
      

  2.   

    http://book.51cto.com/art/200806/75621.htmOracle 8i所引入的增量检查点每隔三秒钟或发生日志切换时启动。它启动时只做一件事情:找出当前检查点队列上的第一个buffer header,并将该buffer header中所记录的LRBA(这个LRBA也就是checkpoint position)记录到控制文件中去。如果是由日志切换所引起的增量检查点,则还会将checkpoint position记录到每个数据文件头中。也就是说,如果这个时候发生实例崩溃,Oracle在下次启动时,就会到控制文件中找到这个checkpoint position作为日志文件的起点,然后从这个起点开始向后,依次取出每个重做条目进行处理。
      

  3.   

    >ckpt进程是不是一开始更新redo日志scn号以及归档日志scn号ckpt只负责将最近dirty buffer LRU的SCN更新到控制文件、数据文件,将dirty buffer写入到磁盘是由DBWR干的。 更新REDO是LGWR干的
      

  4.   

      顶,建议楼主再去看下 ckpt、DBWn、LGWR等的触发条件
      

  5.   


    当发生checkpoint时,会把SCN写到四个地方去。三个地方于control file内,一个在datafile header。
    Control file三个地方为
    1.System checkpoint SCN
    2.Datafile checkpoint SCN 
    3.Stop SCN 另外一个地方在datafile header内
    4.Start SCN 
    参考blog:RedoLog Checkpoint 和 SCN关系
    http://blog.csdn.net/tianlesoftware/archive/2010/01/25/5251916.aspxOracle 备份 与 恢复 概述:http://blog.csdn.net/tianlesoftware/archive/2010/01/25/5251916.aspxhttp://blog.csdn.net/tianlesoftware/archive/2010/01/25/5251916.aspx------------------------------------------------------------------------------ 
    Blog: http://blog.csdn.net/tianlesoftware 
    网上资源: http://tianlesoftware.download.csdn.net 
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx 
    DBA1 群:62697716(满); DBA2 群:62697977
      

  6.   

    http://www.dbabeta.com/2008/all_about_oracle_checkpoint.html这个帖,我读了,受益不少