Oracle delete的相關(guān)實(shí)際的執(zhí)行過程
我們今天主要向大家介紹的是Oracle delete的相關(guān)實(shí)際的執(zhí)行過程,我們首先從Oracle Delete與Commit的相關(guān)操作流程的詳細(xì)解析,以下就是具體內(nèi)容的描述,希望在你今后的學(xué)習(xí)中會有所幫助。
(1)刪除(Delete)流程
Oracle讀Block(數(shù)據(jù)塊)到Buffer Cache(緩沖區(qū))(如果該Block在Buffer中不存在);
在Redo Log Buffer(重做日志緩沖區(qū))中記錄Oracle Delete操作的細(xì)節(jié);
在相應(yīng)回滾段段頭的事物表中創(chuàng)建一個Undo(回滾)條目;
把將要刪除的記錄創(chuàng)建前鏡像,存放到Undo Block(回滾塊)中;
在Buffer Cache中的相應(yīng)數(shù)據(jù)塊上刪除記錄,并且標(biāo)記相應(yīng)的數(shù)據(jù)塊為Dirty(臟)。
(2)提交(Commit)流程
Oracle產(chǎn)生一個SCN;
在回滾段事物表中標(biāo)記該事物狀態(tài)為Commited;
LGWR(日志讀寫進(jìn)程)Flush Log Buffer到日志文件;
如果此時數(shù)據(jù)塊仍然在Buffer Cache中,那么SCN將被記錄到Block Header上,這被稱為快速提交;
如果Dirty Block已經(jīng)被寫回到磁盤,那么下一個訪問這個Block的進(jìn)程將會自回滾段中獲取該事物的狀態(tài),確認(rèn)該事物被提交。然后這個進(jìn)程獲得提交SCN并寫回到Block Header上,這被稱為延遲塊清除。
上述的相關(guān)內(nèi)容就是對Oracle Delete和Commit操作的流程分析的描述,希望會給你帶來一些幫助在此方面。
【編輯推薦】