Checkpoint事件,是将高速缓存中的CKPT queue中的Dirty Buffer刷新到数据文件,并且更新控制文件和数据文件头。
checkpoint的目的就是为了将高速缓存与数据文件同步,减少数据库Crash时的恢复时间。
而触发Checkpoint又分为以下几种类型:
* Instance Recovery Checkpoint
* Media Recovery Checkpoint
* Thread Checkpoint
* Interval Checkpoint
* Tablespace Checkpoint
* Close Database Checkpoint
* Incremental Checkpoint
* Local Database Checkpoint
* Global Database Checkpoint (摘自steve)
其中只有* Incremental Checkpoint仅记录SCN到控制文件,其它的则都要记录到控文件和数据文件头。
同样触发Checkpoint的条件是很多:
*在日志切换的时候
*数据库用immediate ,transaction , normal 选项shutdown 数据库的时候
*满足初始话文件LOG_CHECKPOINT_INTERVAL、LOG_CHECKPOINT_TIMEOUT、
FAST_START_IO_TARGET 的设置的数值时
*用户触发
*每隔3秒
而Checkpoint 事件的过程是这样的:
CKPT获取发生检查点时对应的SCN,通知DBWn要写到这个SCN为止,CKPT将最近一次(可能是上次也可能是上上次)
DBWn完成写Dirty Buffer时对应的SCN写到控制文件和数据文件头 (增量检查点时不写数据文件头)。至此检查点事件完成。
剩下的工作就交给DBWn了。
checkpoint的目的就是为了将高速缓存与数据文件同步,减少数据库Crash时的恢复时间。
而触发Checkpoint又分为以下几种类型:
* Instance Recovery Checkpoint
* Media Recovery Checkpoint
* Thread Checkpoint
* Interval Checkpoint
* Tablespace Checkpoint
* Close Database Checkpoint
* Incremental Checkpoint
* Local Database Checkpoint
* Global Database Checkpoint (摘自steve)
其中只有* Incremental Checkpoint仅记录SCN到控制文件,其它的则都要记录到控文件和数据文件头。
同样触发Checkpoint的条件是很多:
*在日志切换的时候
*数据库用immediate ,transaction , normal 选项shutdown 数据库的时候
*满足初始话文件LOG_CHECKPOINT_INTERVAL、LOG_CHECKPOINT_TIMEOUT、
FAST_START_IO_TARGET 的设置的数值时
*用户触发
*每隔3秒
而Checkpoint 事件的过程是这样的:
CKPT获取发生检查点时对应的SCN,通知DBWn要写到这个SCN为止,CKPT将最近一次(可能是上次也可能是上上次)
DBWn完成写Dirty Buffer时对应的SCN写到控制文件和数据文件头 (增量检查点时不写数据文件头)。至此检查点事件完成。
剩下的工作就交给DBWn了。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7301064/viewspace-544977/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/7301064/viewspace-544977/