COMMIT过程
·已经在 SGA(系统全局区域)中产生了回滚段(Rollback segment)记录。
·已经在 SGA 中产生了修改数据块。
·已经在 SGA 中产生了上面两条的缓冲重做(redo)。
·取决于上面 3 项的大小和消耗的时间,一部分上面的数据可能已经刷新到硬盘上。
·已经获得所有的锁定。
当 COMMIT(提交)时,所有剩下的工作是:
·为事务产生一个系统改变号(System Change Number,SCN)。
·LGWR 把所有余下的缓冲区中的重做日志条目存储到硬盘上,并且在联机重做日志文件中记录
SCN。实际上,这个步骤就是 COMMIT。如果出现这个步骤,就已经提交了。删除了事务条目,意味
着已经提交了。在 V$TRANSACTION 视图中的记录将“消失”。
·释放会话占用的所有锁定,释放在入队列等待中被占用锁定的每个事项。
·访问多个修改事务块,如果它们仍在缓冲区高速缓存中,用快速模式访问和“清除”。
·像看到的一样,处理 COMMIT 只有很少的工作要做。时间最长的总是 LGWR 执行的操作,因为
它是物理硬盘的输入/输出(I/O)。LGWR 消耗的时间是由做日志缓冲区已经释放的内容限定的。LGWR
不会存储所有的工作,而且,当操作进行时,它将增加释放后台重做日志缓冲区中的内容。这样可以
立即释放所有重做(redo)的内容,避免 COMMIT 后等待过长时间。当

Rollback过程
·已经在 SGA 中产生了回滚段记录。
·已经在 SGA 中产生了修改数据块。
·已经在 SGA 中产生了上面的两条重做缓冲信息。
·取决于上面三项的大小和消耗的时间,一部分上面的数据可能已经刷新到硬盘上。
·已经获得所有的锁定。
当 ROLLBACK 的:
·撤捎所有己做的修改。这通过从 ROLLBACK(undo)段读取数据来完成,实际上就是逆向操作。
如果插入了一行,ROLLBACK 删除它。如果更新了一行,ROLLBACK 将逆向更新。如果删除了一行,
回滚将重新插入它。

05-11 16:59