oracle检查点队列(checkpoint queue)
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
不必太糾結于當下,也不必太憂慮未來