ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 检查点和oracle数据库的恢复(二)checkpoint

检查点和oracle数据库的恢复(二)checkpoint

原创 Linux操作系统 作者:oralau 时间:2009-04-14 17:47:34 0 删除 编辑

conventional checkpoint

将dirty list中的脏数据全量写入数据文件中。先提示dbwr写脏数据,等待dbwr写完脏数据,然后执行文件头和控制文件的写操作。

哪些操作引发conventional checkpoint:

  •               alter system checkpoint

  •               shutdown(除了abort)

  •               日志切换(包括运行alter system switch logfile命令)

日志切换触发的是normal checkpoint,而不是大家所说的增量checkpoint,只不过log switch checkpoint的优先级非常低,当一个log switch checkpoint发生的时候它并不会立即的通知DBWn进程去写数据文件,但是当有其它原因导致checkpoint或者是写入数据文件的RBA超过log switch checkpoint的checkpoint RBA的时候,这次的log switch checkpoint将会被标记成完成状态,同时更新控制文件和数据文件头。switch logfile会触发ckpt进程工作,但是switch logfile并不等待checkpoint完成。

 

incremental checkpoint:

完整的incremental checkpoint

数据库将脏数据按照checkpoint queue中Low RBA的顺序增量渐进写出,并且ckpt进程进行轻量级更新,并不会改写控制文件中数据文件的检查点(stop scn)和数据文件头部的检查点(begin scn). 

 

哪些操作引发Incremental checkpoint:

 

  • 间隔时间:可指定每隔多长时间发生一次Incremental checkpoint
  • 最小日志的90%:为了不发生日志等待(检查点不会滞后整个日志文件),两个相邻检查点之间的跨度不超过最小日志的90%。
log_checkpoint_interval 设定两次checkpoint之间重做日志块(重做日志块和系统数据块是一样的)数,当重做日志块数量达到设定值的时候将触发checkpoint。 log_checkpoint_timeout 设定两次checkpoint之间的间隔时间,当超时值达到时增量checkpoint将被触发。Oracle建议不用这个参数来控制,因为事务(transaction)大小不是按时间等量分布的。将此值设置成0时将禁用此项设置。 fast_start_io_target 因为log_checkpoint_interval主要看的时候重做日志块的数量,并不能反应buffer cache中脏数据块的修改,因此Oracle又引入了这个参数来实现当脏数据块达到一定数量的时候触发checkpoint,不过此参数实际上控制的是恢复时所需IO的数量。 fast_start_mttr_target
  • 此参数是在9i中引入用来代替前面的三个参数的,它定义了数据块崩溃后所需要的实例恢复的时间,Oracle在实际上内在的解释成两个参数:fast_start_io_target和log_checkpoint_interval.如果这两个参数没有显式的指定,计算值将生效.。
  • fast_start_mttr_target可以设定的最大值是3600,即一个小时。它的最小值没有设限,但是并不是说可以设置一个任意小的值,这个值会受最小dirty buffer(最小为1000)的限制,同时还会受初始化时间以及文件打开时间的限制。
  • 在设置此参数的时候要综合考虑系统的IO,容量以及CPU等信息,要在系统性能和故障恢复时间之间做好平衡。
  • 将此参数设置成0时将禁用 fast-start checkpointing,这样能见效系统负载但同时会增加系统的恢复时间。
  • 如果fast_start_io_target or log_checkpoint_interval被指定,他们会自动覆盖由fast_start_mttr_target参数计算出来的值。

 

 

增量检查点的设置和相关的数据字典

 

通过查看V$INSTANCE_RECOVERY动态性能视图可以查看一些MTTR相关的信息。

SELECT TARGET_MTTR,ESTIMATED_MTTR,CKPT_BLOCK_WRITES,CKPT_BLOCK_WRITES FROM V$INSTANCE_RECOVERY;

TARGET_MTTR 用户设置的参数FAST_START_MTTR_TARGET的值. ESTIMATED_MTTR 根据目前脏块数目和日志块数目,评估的现在进行恢复所需要的时间. CKPT_BLOCK_WRITES 检查点写完的块数目. CKPT_BLOCK_WRITES 额外的因为检查点引起的数据库写入操作 (因为不必要的检查点的产生,设置一个非常小的系统恢复时间将会对性能产生负面影响,为了帮助管理员监测这个参数设置较小时对数据库的影响,这个视图显示了这个列)

 

部分的incremental checkpoint

 

数据库将相应表空间或者对象的脏数据按照file queue(文件队列)或者object queue(对象队列)中Low RBA的顺序增量渐进写出,并且ckpt进程进行轻量级更新,并不会改写控制文件中相应表空间或者对象的数据文件的检查点(stop scn)和相应表空间或者对象的数据文件头部的检查点(begin scn),只是记录了控制文件检查点的scn(controlfile checkpoint scn)并且根据检查点写出增进的RBA。

  •  read only
  •  offline
  •  begin backup
  •  对数据库对象的某些操作

 

要注意的是

 

检查点在下一次触发时写上一次完成的检查点。

 

 

 

引入增量检查点后,数据库可已将以前的全

量写出变更为渐进写出,从而极大的降低了对数据库性能的影响

 

checkpoint2.GIF

checkpoint3.GIF

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/20844861/viewspace-589034/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-02-17

  • 博文量
    38
  • 访问量
    36540