博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实例恢复的简要解析
阅读量:2496 次
发布时间:2019-05-11

本文共 851 字,大约阅读时间需要 2 分钟。

How oracle server determine about the changed blocks (dirty blocks) after a checkpoint event by

which the DBWR writes dirty buffers in data files and still user do not commit the transaction or rollback.

有点复杂,下面假定有这么一个简要的场景:

用一个update语句更新1000行,oracle会执行以下操作:

a.在SGA中生成更新过的datablocks

b.在SGA中生成回滚记录

c.为SGA中的datablocks和回滚记录均生成重做日志信息

在这个过程中,Oracle可能会把REDO信息写入到日志文件中。要记住:在checkpoint一个数据块之前(也就是DBWR写datablock前),

保护该block的日志会先写入到日志文件中。不可能存在数据块已写入磁盘但日志还没有写入的情况。

假设在update的过程中数据库服务器宕机,那么可能会发生下列事件:

1.某些REDO信息已经写入到日志文件中,但数据块和回滚块没有写入到磁盘上。当系统重起后,会应用REDO日志,

在SGA中重构回滚块和数据块。前滚完成后,Oracle会应用先前构造的回滚块进行回滚,这样看起来事务好像从来没有发生过一样。

2.某些日志和某些数据块以及回滚块已经写入到磁盘上。首先执行1的操作,接着前滚,应用日志到还没有进行检查点的数据块上,然后再回滚。

3.没有日志写入到磁盘上。当系统重起后,事务看起来就好像没有发生过一样,无需恢复。

译自

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

转载于:http://blog.itpub.net/6906/viewspace-21788/

你可能感兴趣的文章
JDK下载(百度网盘)
查看>>
idea用得溜,代码才能码得快
查看>>
一篇掌握python魔法方法详解
查看>>
数据结构和算法5-非线性-树
查看>>
数据结构和算法6-非线性-图
查看>>
数据结构和算法7-搜索
查看>>
数据结构和算法8-排序
查看>>
windows缺少dll解决办法
查看>>
JPA多条件动态查询
查看>>
JPA自定义sql
查看>>
BigDecimal正确使用了吗?
查看>>
joplin笔记
查看>>
JNDI+springmvc使用
查看>>
vue+springboot分页交互
查看>>
vue+springboot打包发布
查看>>
XSL 开发总结
查看>>
【NOI 2018】归程(Kruskal重构树)
查看>>
如何开始DDD(完)
查看>>
[svc]gns3模拟器及探讨几个bgp问题
查看>>
Error:fatal: Not a git repository (or any of the parent directories): .git
查看>>