ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 关于前滚(roll forward)和回滚(roll back)

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

原创 Linux操作系统 作者:tolywang 时间:2009-03-31 17:25:56 0 删除 编辑

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


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中的内容将其回滚到一个一致的状态.

 

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

请登录后发表评论 登录
全部评论
Oracle , MySQL, SAP IQ, SAP HANA, PostgreSQL, Tableau 技术讨论,希望在这里一起分享知识,讨论技术,畅谈人生 。

注册时间:2007-12-10

  • 博文量
    5595
  • 访问量
    13513678