Oracle中,一個Delete操作的流程

ForTechnology發表於2011-08-17
Oracle中,一個Delete操作的流程
作者:eygle | 【轉載時請以超連結形式標明文章出處和作者資訊及本宣告】
連結:http://www.eygle.com/archives/2005/01/oracleoeooedele.html
站內相關文章|Related Articles
11gR2新特性之二 - Flash Cache 的SSD支援
如何在自動SGA管理模式下調節引數設定
Granule 與 Redo Log Buffer (log_buffer) 的關係
關於新書中Dirty Buffer的問答
Oracle HowTo:如何強制重新整理Buffer Cache
Oracle中,一個Delete操作的流程
刪除(DELETE)
1.Oracle讀Block到Buffer Cache(如果該Block在Buffer中不存在)
2.在redo log buffer中記錄delete操作的細節
3.在相應回滾段段頭的事務表中建立一個undo條目
4.把將要刪除的記錄建立前映象,存放到Undo Block中
5.在Buffer Cache中的相應資料塊上刪除記錄,並且標記相應的資料塊為Dirty

提交(COMMIT)
1.Oracle產生一個SCN
2.在回滾段事務表中標記該事務狀態為commited
3.LGWR Flush Log Buffer到日誌檔案
3.如果此時資料塊仍然在Buffer Cache中,那麼SCN將被記錄到Block Header上,這被稱為快速提交(fast commit)
4.如果dirty block已經被寫回到磁碟,那麼下一個訪問這個block的程式將會自回滾段中獲取該事務的狀態,確認該事務被提交。然後這個程式獲得提交SCN並寫回 到Block Header上。這被稱為延遲塊清除(delayed block cleanout)。

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

相關文章