Oracle回滚机制深入研究

检查shared pool中是否存在相同的语句,如果存在,重用执行计划,执行扫描运算,如果不存在,执行硬解析生成执行计划

根据执行计划中的扫描运算,检查undotest表中的相关数据块是否存在buffer cache中,如果不存在则读取到内存中

检查数据块中符合object_type='PROCEDURE'条件的记录,如果没有符合条件的行记录,则结束语句,如果存在则进入下一步

以当前模式(current)获取符合object_type='PROCEDURE'条件的数据块,准备进行更新

在回滚表空间的相应回滚段头的事务表上分配事务槽,这个动作需要记录redo日志

从回滚段数据块上创建object_type='PROCEDURE'的前映像数据,这个动作也要记录redo日志

修改object_type='VIEW' ,这是DML操作的数据变更,而需要记录redo日志

用户提交时,在redo日志中记录提交信息,将回滚段头上的事务表和回滚段数据块标记为非活动,清除修改数据块上的事务信息(也可能延迟清除)。同时必须确保整个事务的redp日志写到磁盘上的日志文件

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/b038c1e15154976795e1b496d45dde8a.html