oracle 修改block 大小,oracle内部原理_如何修改block数据块大体流程_checkpoint

用户修改一个数据块的流程:

1,先把数据块自磁盘或数据文件读入buffer cache

2,先生成重作记录,并记入log buffer中(当用户提交这个修改数据块事务时)

一并把对应的重作记录(此时还在log buffer)写入到日志文件

3,在buffer cache中修改块

4,把buffer cache这个块的标志设置为脏;同时在buffer cache的检查点队列

末尾增加一个新节点,记录这个新脏块的信息:即此脏块在buffe cache

的地址,以及此脏块产生的redo record的rba

5,如果用户提交事务,把相应的重作记录从log buffer写入到日志文件

6,说一个恢复或崩溃的例子,如果用户已提交事务commit了,但buffer cache中这些事务的脏数据因为

掉电loss,没有来得及写入数据文件;怎么办?

大体流程:

1,数据库启动时,从控制文件读取检查点位置,检查点位置即检查点队列头的位置,从这个位置开始写入脏块到data file

检查点位置记录有重作记录编号,通过个重作记录编号即rba可以定位到redo中的redo record,这样

它读取重作记录的重作数据(它会是一个redo stream,即一系列change vector),即重新把操作重现一下;数据库还是一致的

参考:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值