完全检查点 (normal checkpoint)

完全检查点工作过程

一个checkpoint操作可以分成三个不同的阶段:

第一阶段,checkpoint进程开始一个checkpoint事件,并记录下checkpoint RBA,这个通常是当前的RBA。

第二阶段,checkpoint进程通知DBWn进程将所有checkpoint RBA之前的buffer cache里面的脏块写入磁盘。

确定脏块都被写入磁盘以后进入到第三阶段,checkpoint进程将checkpoint信息(SCN)写入/更新数据文件和控制文件中。

更新SCN的操作由CKPT进程完成,在Oracle 8.0之后CKPT进程默认是被启用的,如果CKPT进程没有启用的话那相应的操作将由LGWR进程完成。

什么时候发生normal checkpoint

下面这些操作将会触发checkpoint事件:

日志切换,通过ALTER SYSTEM SWITCH LOGFILE。

DBA发出checkpoint命令,通过ALTER SYSTEM checkpoint。

对数据文件进行热备时,针对该数据文件的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。

转载于:https://my.oschina.net/u/3635497/blog/3056665

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值