oracle是如何保证数据修改操作的记录的?以及修改操作完毕以后数据库崩溃又是如何保证数据完整的?通过查找oracle相关资料得知改变向量?那么改变向量是什么?通过哪种方式能看到改变向量记录的信息呢?
以上的几个问题想要找到答案,前提条件是理解oracle数据更改流程,然后配合oracle官方文档就可以找到答案了!!!
改变向量可以理解为日志,说起来日志第一个反应是oracle中有一个redo log的日志文件,恭喜你,能想到redo log距离成功就近了一步,
下面我们一起梳理下oracle数据更改具体流程图:
1、oracle数据存在于两条线,一条线是内存-数据块,一条线是undo-redo
2、项目1中我们描述了oracle的同一份数据可能存放在多个位置,那么改怎么保证多个位置的数据一致呢?用脑子想一下唯一的办法是梳理一个流程,然后一份数据在各个地方先后写入,这样子就可以保证数据的一致性了
3、首先创建一个重做改变向量,记录下数据块的变更,记录到redo logo中,然后把数据放入undo 块中,再新建一个重做改变向量记录undo块的变化情况,写入redo logo,接着修改undo块中数据,最后才是真正的修改数据块
4、以上我说的理论怎么验证正确还是错误的呢?dump redo logo配合oracle 官网对redo logo的描述验证,可以参考以下博客内容
https://blog.youkuaiyun.com/cpc84938/article/details/100234598
下面为官方文档:
11.1.2 Redo Log Contents
Redo log files are filled with redo records.
A redo record, also called a redo entry, is made up of a group of change vectors, each of which is a description of a change made to a single block in the database. For example, if you change a salary value in an employee table, you generate a redo record containing change vectors that describe changes to the data segment block for the table, the undo segment data block, and the transaction table of the undo segments.