mongodb检查点_笔记:常规检查点和增量检查点简单理解

Oracle修改数据的时候,首先把数据读入内存(data

buffer),在内存里面修改,修改的同时,记录重做日志信息(重做日志实际也有log

buffer,只是日志写入相对是很频繁的,如果log

buffer写入日志文件之前就断电,这些未写入重做日志的数据也是无法恢复的,日志部分这里不做更多研究了)。那么,既然数据在data

buffer中被修改了,它最终是要写入数据文件的,那么oracle是怎么往数据文件写东西的呢?这里,就是检查点的功劳了(实际上,数据写入文件不一定要检查点,但是出于优化恢复的需要,检查点是必不可少的)。

检查点就是一个数据库事件,它由后台进程CKPT触发,通知DBWR进程把脏数据写入磁盘,同时通知CKPT进程更新控制文件和数据文件头信息。一般来讲,检查点更新比重做日志更新慢。对于异常断电,如果检查点越逼近日志文件的最后更新,那么需要恢复的数据就会越少。当然,检查点发生太过频繁,势必会产生过多I/O,影响系统性能。那么,ORACLE要做的就是在考虑让检查点逼近日志文件的最后更新的同时,兼顾数据库的性能。

一、常规检查点:

常规检查点又叫完全检查点,oracle 8之前用的就是这项技术。常规检查点在执行检查点的时候,把全部的data

buffer写入数据文件,工作过程如下:

第一步、 开始checkpoint事件,记录当前scn和当前的checkpoint

rba。

这里谈一下rba:

rba(redo

bytes address),即重做日志块地址(脏块对应的重做日志记录),它包括以下几种RBA:

(1)LRBA,一个块第一次被列入脏列表时候对应的RBA

(2)HRBA,一个脏块最后修改时候对应的RBA

(3)checkpoint RBA,表示检查点发生时当前最后的的重做日志块的地址,上一个checkpoint RBA到当前的checkpoint RBA之间的日志对应的的buffer cache中的脏块接下来将会被写入到数据文件当中去(类似增量检查点的target ,可以作为前滚恢复的起点)。

(4)on disk rba,表示disk中redo log中的最后一条redo recode记录,当实例crash时候,他就是数据库前滚的终点

rba分为三部分,第一部分表示日志文件序列号,第二部分表示日志文件块编号,第三部分表示重做日志记录在日志文件块中的起始偏移。例如rba:(0x12.12392.0),表示日志文件序列号是21,日志文件块编号是ox12392,重做记录在块中偏移值为0。如下所示,如果执行日志切换操作,就会看到当前使用的日志序列号为切换前使用的前那个日志文件的序列号加1,而且当前使用的日志文件序列号总是最大的。

SYS AS SYSDBA >select

group#,sequence#,members,status from v$log;

GROUP#| SEQUENCE#|

MEMBERS|STATUS

----------|----------|----------|----------------

1|        16|

1|INACTIVE

2|        17|

1|INACTIVE

3|18|

1|CURRENT

SYS AS SYSDBA

>alter system switch logfile;

SYS AS SYSDBA

>select group#,sequence#,members,status from v$log;

GROUP#| SEQUENCE#|

MEMBERS|STATUS

--- ------|----------|----------|----------------

1|        19|

1|CURRENT

2|        17|

1|INACTIVE

3|        18|

1|INACTIVE

第二步、 把checkpoint

rba之前的buffer

cache数据全部写入数据文件

第三步、脏块写完后,CKPUT进程用写完那一刻的scn和写完的那个checkpoint

rba更新控制文件和数据文件头信息。也就是说,常规检查点的scn实际是要滞后于发生检查点时候的那个scn的。一旦在写入过程中发生掉电,重启后将要进行回滚恢复?

现在做一个常规检查点实验:

1.

执行下面命令:把检查点日志输入到告警日志

alter system set

log_checkpoints_to_alert=TRUE SCOPE=MEMORY;

2.

执行检查点:

SYS AS SYSDBA

>alter system checkpoint;

3.

查看告警文件

oracle[~/diag/rdbms/hx/hx/trace]$tail

-f alert_hx.log

Wed May 08 21:58:28 2013

Beginning global checkpoint up to RBA [0x20.4eae.10], SCN:

4514520

Completed checkpoin

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值