oracle commit提交到底作了什麼

wisdomone1發表於2013-03-21
oracle commit所作的工作如下:
1,產生一個scn
  與此事務相關聯的undo tablespace的itl標誌為提交即flag為-c--;
  並且為此事務分配一個唯一的scn並記錄到undo tablespace的事務表中
2,lgwr把log buffer餘下的重作日誌條目寫入到log file中;
  而且要把上述提交事務產生的scn一併寫入到log file中
3,oracle把表及行上加的鎖釋放掉
  其它等待它的事務就可以繼續工作了
4,刪除儲存點
5,如果提交事務所修改的資料塊還在sga中;
 此時沒有其它會話修改這些資料塊
  資料塊就清除這些資料塊上的鎖標誌
  (最理想的情況是:commit動作一產生就清除資料塊上的鎖標誌,這樣就不用之後的select清除資料塊上的鎖標誌了)這個概念相當重要
 
  另:塊清除會產生redo,因為可能select會產生redo,就可能會導致下次檢查點發生寫入這個資料塊到datafile中
 
6,oracle標誌commit完成

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-756756/,如需轉載,請註明出處,否則將追究法律責任。

相關文章