彻底检查点工做过程日志
一个checkpoint操做能够分红三个不一样的阶段:orm
第一阶段,checkpoint进程开始一个checkpoint事件,并记录下checkpoint RBA,这个一般是当前的RBA。进程
第二阶段,checkpoint进程通知DBWn进程将全部checkpoint RBA以前的buffer cache里面的脏块写入磁盘。事件
肯定脏块都被写入磁盘之后进入到第三阶段,checkpoint进程将checkpoint信息(SCN)写入/更新数据文件和控制文件中。it
更新SCN的操做由CKPT进程完成,在Oracle 8.0以后CKPT进程默认是被启用的,若是CKPT进程没有启用的话那相应的操做将由LGWR进程完成。数据
何时发生normal checkpoint生活
下面这些操做将会触发checkpoint事件:文件
日志切换,经过ALTER SYSTEM SWITCH LOGFILE。时间
DBA发出checkpoint命令,经过ALTER SYSTEM checkpoint。poi
对数据文件进行热备时,针对该数据文件的checkpoint也会进行,ALTER TABLESPACE TS_NAME BEGIN BACKUP/END BACKUP。
当运行ALTER TABLESPACE/DATAFILE READ ONLY的时候。
SHUTDOWN命令发出时。
特别注意:
日志切换会致使checkpoint事件发生,可是checkpoint发生却不会致使日志切换。
日志切换触发的是normal checkpoint,而不是你们所说的增量checkpoint,只不过log switch checkpoint的优先级很是低,当一个log switch checkpoint发生的时候它并不会当即的通知DBWn进程去写数据文件,可是当有其它缘由致使checkpoint或者是写入数据文件的RBA超过log switch checkpoint的checkpoint RBA的时候,此次的log switch checkpoint将会被标记成完成状态,同时更新控制文件和数据文件头。咱们随后能够作个实验验证这个说法。
checkpoint和SCN有什么关系?
在Oracle中SCN至关于它的时钟,在现实生活中咱们用时钟来记录和衡量咱们的时间,而Oracle就是用SCN来记录和衡量整个Oracle系统的更改。
Oracle中checkpoint是在一个特定的“时间点”发生的,衡量这个“时间点”用的就是SCN,所以当一个checkpoint发生时SCN会被写入文件头中以记录这个checkpoint。