检查shared pool中是否存在相同的语句,如果存在,重用执行计划,执行扫描运算,如果不存在,执行硬解析生成执行计划
根据执行计划中的扫描运算,检查undotest表中的相关数据块是否存在buffer cache中,如果不存在则读取到内存中
检查数据块中符合object_type='PROCEDURE'条件的记录,如果没有符合条件的行记录,则结束语句,如果存在则进入下一步
以当前模式(current)获取符合object_type='PROCEDURE'条件的数据块,准备进行更新
在回滚表空间的相应回滚段头的事务表上分配事务槽,这个动作需要记录redo日志
从回滚段数据块上创建object_type='PROCEDURE'的前映像数据,这个动作也要记录redo日志
修改object_type='VIEW' ,这是DML操作的数据变更,而需要记录redo日志
用户提交时,在redo日志中记录提交信息,将回滚段头上的事务表和回滚段数据块标记为非活动,清除修改数据块上的事务信息(也可能延迟清除)。同时必须确保整个事务的redp日志写到磁盘上的日志文件