ITPub博客

首页 > 数据库 > Oracle > 常规检查点和增量检查点

常规检查点和增量检查点

原创 Oracle 作者:linetsam 时间:2010-08-12 15:09:16 0 删除 编辑
比较常规检查点和增量检查点的区别[@more@]

1、常规检查点(完全检查点)

Oracle 8之前采用。

在buffer cache中,通过dirty list(脏块列表)管理修改过的buffer,buffer在dirty list上无序排列,并且由于buffer被不断地修改,在列表上的位置会不断变化,ckpt触发时,需要将所有dirty buffer写入磁盘,并且将检查点信息记录到控制文件和数据文件头部。

会带来很大的I/O压力。

2、增量检查点

Oracle 8及之后版本采用。

增加checkpoint queue,将dirty buffer记录到checkpoint queue,并按照low rba()第一次对该buffer进行修改的redo byte address)进行排序,即使该buffer被多次修改,在checkpoint queue上的顺序不会改变(相对于lrba,被修改后的rba被称为hrba)。

执行增量检查点是,ckpt按lrba由低到高的顺序,将checkpoint queue中的buffer写到磁盘。增量检查点信息不会记录到控制文件中的数据文件部分,也不会记录到数据文件头部,只是记录控制文件检查点SCN(controlfile checkpoint at scn),并根据增量检查点的写出增进RBA信息。

减少数据库性能,checkpoint queue将rba和检查点关联,可以以此来确定恢复的起点。

检查点队列通过latch保护:

select name,gets,misses from v$latch where name = 'checkpoint queue latch';

包括了多个子latch:

select name,child#,gets,misses,sleeps from v$latch_children where name='checkpoint queue latch';

3、观察增量检查点的写出增进

第一次dump controlfile:

Controlfile Checkpointed at scn: 0x0000.00084096 08/12/2010 14:29:08

增量检查点:只记录在controlfile中。

THREAD #1 - status:0x2 flags:0x0 dirty:111

low cache rba:(0x9.a3d4.0) on disk rba:(0x9.a56c.0)

on disk scn: 0x0000.0008408a 08/12/2010 14:27:12

注:low cache rda - 恢复的起点,代表之前的rba所对应的dirty buffer已经写入数据文件;

On disk rba:恢复的重点,代表已经写入到redo log文件的最新的redo日志。

第二次dump controlfile:

Controlfile Checkpointed at scn: 0x0000.00084185 08/12/2010 14:32:00

增量检查点发生改变。

THREAD #1 - status:0x2 flags:0x0 dirty:1728

low cache rba:(0x9.a57a.0) on disk rba:(0x9.10b15.0)

on disk scn: 0x0000.000841a9 08/12/2010 14:31:48

脏块数量和low rba、on disk rba都发生改变,到数据文件头中的checkpoint scn不发生改变。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/56630/viewspace-1036692/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 使用BBED修改块
请登录后发表评论 登录
全部评论

注册时间:2008-09-16

  • 博文量
    20
  • 访问量
    43136