关于前滚(roll forward)和回滚(roll back)

关于前滚(roll forward)和回滚(roll back) 2009-07-27 21:07:53

分类: Oracle

1:roll forward  :   将已经写入redo log file 中但是没有写入datafile中的提交与未提交的数据写入数据文件 。 属于实例恢复,一般在数据库开启的时候进行。

2:rollback :          在数据库开启之后,oracle会查找redo log file中记录的commit maker ,根据undo block中的内容将它回滚到一致的状态。

在一个事务发生的时候, Oracle会先将对应的redo 写到log buffer, 再生成相应的undo, 将undo 的redo写到redo log buffer,再对当前的数据块做变更,redo log buffer在一定的条件下写到redo log file,在用户commit的时候, 系统会将当前log buffer中的所有的redo entry都写到redo log file中, 不管是不是当前事务产生的redo, 同时会将当前commit的commit marker也写到redo log file中.

对应与上面的情况, commit已经发出, 可能正在写redo log, 当时commit marker还没写,这样在做instance recovery的时候会将这些redo log先forward到buffer cache中, datablock 与undo block都forward到buffer cache中, 再检查没有commit的事务, 将这些事务rollback, 我们上面的第一个问题, 因为对应的commit marker没有写到redo log file中, 这样对应的事务就是没有commit的事务, 系统会根据undo block中的内容将其回滚到一个一致的状态

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值