Recovery Principles--Redo record and change vector
来源:互联网 发布:诺基亚软件恢复工具 编辑:程序博客网 时间:2024/05/17 22:30
当我们发出一个update语句的时候, Oracle会完成以下几步:
1. 生成一系列change vector.
2. 在redo buffer中保存这一系列change vector组成的redo record, redo record最终将被写入到redolog文件中.
3. 更改数据快.
那么change vector 包含哪些信息呢? 基本上, 它包含了来自于数据块的版本号, 操作的类型以及数据块的地址. 每个redo record是由多个change vector组成的. oracle 在恢复过程中, 会保证一个transaction 要么被全部恢复, 要么全部不恢复, 实际上就是通过恢复redo record中的全部change vector来做到的, 只要有一个change vector恢复失败, 这个redo record的所有change vector都将失败.
对于上述update语句, 典型情况下会包含3个change vector. 首先, 为了保留before image以便undo,需要把数据块的before image放入rollback segment, 放入到rollback segment时, oracle会在rollback segment的transaction表里插入一条记录保存了被修改的数据块的地址. 由于这个transaction表本身也是存储在一个数据块里的, 因此, 这个操作本身也是对数据块的修改, 因此, 这个修改需要生成一个change vector. 其次, oracle 把改动的数据块写入到rollback segment的目标块也是一个数据块, 因此, 对该块也需要一个change vector. 第三个change vector就是被修改的数据块本身了. 这是一条redo record
如果上述update语句刚好修改到了被索引的列, 索引也会被修改, 同样需要生成一个包含多个change vector的redo record.
commit 会生成第三个redo record. 因此, 最简单的一个update+commit, 会产生上面的三个redo record.
1. 生成一系列change vector.
2. 在redo buffer中保存这一系列change vector组成的redo record, redo record最终将被写入到redolog文件中.
3. 更改数据快.
那么change vector 包含哪些信息呢? 基本上, 它包含了来自于数据块的版本号, 操作的类型以及数据块的地址. 每个redo record是由多个change vector组成的. oracle 在恢复过程中, 会保证一个transaction 要么被全部恢复, 要么全部不恢复, 实际上就是通过恢复redo record中的全部change vector来做到的, 只要有一个change vector恢复失败, 这个redo record的所有change vector都将失败.
对于上述update语句, 典型情况下会包含3个change vector. 首先, 为了保留before image以便undo,需要把数据块的before image放入rollback segment, 放入到rollback segment时, oracle会在rollback segment的transaction表里插入一条记录保存了被修改的数据块的地址. 由于这个transaction表本身也是存储在一个数据块里的, 因此, 这个操作本身也是对数据块的修改, 因此, 这个修改需要生成一个change vector. 其次, oracle 把改动的数据块写入到rollback segment的目标块也是一个数据块, 因此, 对该块也需要一个change vector. 第三个change vector就是被修改的数据块本身了. 这是一条redo record
如果上述update语句刚好修改到了被索引的列, 索引也会被修改, 同样需要生成一个包含多个change vector的redo record.
commit 会生成第三个redo record. 因此, 最简单的一个update+commit, 会产生上面的三个redo record.
- Recovery Principles--Redo record and change vector
- 理解redo(2)redo内容:change vector和redo entries
- update操作中的Redo记录(change vector的集合)
- Oracle redo log recovery
- Redo Level 11 - Table Operation (DML)【对change vector的一些字段有解释】
- Record change by another
- qDebug("record:" record) and qDebug() << "record:" << record;
- VQ(vector quantization) record
- Configuration Management Principles and Practice
- Information security: principles and practice
- Web Engineering: Principles and Techniques
- Satellite Networking: Principles and Protocols
- The Agile Manifesto and Principles
- Oracle Redo and Undo
- 09 redo and undo
- Redo and Undo
- Dynamically Change Record Group in Form
- define curser and record
- SQL操作精华集锦
- 数据库建模工具PowerDesigner总结(组图)
- 正則表達式
- 黑客狙击Oracle系统的八大套路
- Google Earth 里浏览一个小时前的地球
- Recovery Principles--Redo record and change vector
- 不能启用此约束,因为不是所有的值都具有相应的父值的解决方法
- MFC框架的串行化内建机制
- 关于提高自己JAVA水平的十大技术讨论
- 自上而下的编程-可以控制的代码
- .net下面的as与“cast”
- 程式员-构筑宏伟大厦的建筑师
- 析构函数中抛出的异常
- 架构-可以控制的代码