oracle检查点队列(checkpoint queue)

时间:2023-01-08 08:47:27

buffer cache

CBC链 按地址链

LRU  干净buffer

LRUW  脏buffer  按照冷热

checkpoint queue:链buffer,①链脏块②按buffer第一次脏的时间链起来

RBA :Redo Block Address

LRBA:块第一次脏的地址

HRBA:块最近一次脏的地址

检查点队列按照buffer的LRBA地址链起来

ckpt进程

1,完全检查点  触发DBWR把所有脏块写会数据文件  

           关闭数据库的时候会发生

2,增量检查点   将检查点队列的第一个块所对应的日志地址(LRBA)记录到控制文件

            每隔3秒钟

on disk rba  current日志里面的最后一条日志的地址

脏块所对应的事务已经提交 

脏块所对应的事务还没提交

脏块所对应的日志还在log buffer,说明脏块对应的事务还没有提交,认为对这个脏块的修改没发生过

终点:current日志的最后一条日志(on disk rba)

起点:在控制文件中记录的LRBA地址(CKPT会写进去)作为起点

实例恢复的时候,跑日志,前滚,已提交事务的脏块肯定会被构造出来,但未提交事务的脏块也会被构造出来,再通过undo,回滚。

控制文件中的scn:

   系统scn

   文件scn

   结束scn

数据文件中的scn:

   数据文件头部scn