checkpoint的目的
减少数据库实例恢复的时间;让内存中的脏数据及时的写到磁盘上;在安全关闭数据库时,保证所有提交的数据被写到磁盘上。
ckpt进程本身只完成两件工作:1,执行检查点和更新控制文件和数据文件
2,将脏缓存块写入数据文件的任务交给DBWR进程完成
CKPT发送CHECKPOINT信号的触发条件:
1. log_checkpoint_timeout时间达到2.当前redo日志已经写够log_checkpoint_internavl操作系统块大小
3. redo log switch :日志文件满或alter system switch logfile
4. 手工检查点操作:alter system checkpoint
5. alter tablespace XXX begin backup,end backup时
6. alter tablespace , datafile offline,
7.关闭实例(SHUTDOWN ABORT除外)。
8.direct path read时(11g全表扫描)
增量检查点:
增量检查点并不会去更新数据文件头,而只是每3秒由CKPT进程去更新控制文件中的LRBA和SCN(日志切换检查点、完全检查点时写数据文件头及数据文件头)。1.增量检查点主要包含以下步骤:
①CKPT每3秒心跳一次记录检查点位置的工作(更新RBA至控制文件)
②CKPT定期触发DBWn去写checkpoint?queue中的脏数据
2.增量检查点的意义有以下两个:
①减少发生完全检查点时DBWn进程的工作负担②提高实例恢复的速度