2013-02-10 65 views
6

假设通过事务进行更新,然后发出提交语句。在Oracle 10g中发布提交语句时会发生什么?

哪些是所有的内部进程都是在Oracle服务器的底层发生的,在一个commit语句之后?

+1

这是一个过于宽泛的问题。欢迎来到SO,但如果它关闭,不要感到失望。你可以尝试改写它,澄清它并缩小一点。 – 2013-02-10 08:46:09

回答

5
  1. SCN(系统变更编号)递增:SCN保证交易秩序
  2. LGWR(日志写入)写入剩余的重做日志磁盘
  3. LGWR写入SCN到联机重做日志文件
  4. 交易从V $ TRANSACTION去除
  5. 实际会话的
  6. 锁被释放,从V $ LOCK去除
  7. 等待实际的会话的锁其他会议通知
  8. 块清理可能发生:锁相关的信息被清除出由事务
+1

数字7是什么?我从来没有听说过。 – Plouf 2013-02-10 14:41:45

+0

由我们的事务修改的块将以快速模式从缓冲区缓存中清除。这个清除涉及存储在块标题中的锁定相关信息。我会用这个信息修改答案,thx作为评论。 – 2013-02-10 17:24:20

+2

几点要点:SCN必须在交易开始时生成,因为它用于整合并标记所做的更改。此外,“LGWR(Log Writer)将重做日志写入磁盘”可能已经完成。就日志编写器而言,唯一必须作为提交的一部分完成的操作是将事务SCN的提交记录写入重做日志文件。 “Block clean out”也不是强制的 – 2013-02-10 18:03:11