執(zhí)行Commit時Oracle做哪些工作 |
發(fā)布時間: 2012/8/15 17:18:29 |
COMMIT是一個非?斓牟僮鳎(dāng)我們發(fā)布commit命令時,真正困難的動作已經(jīng)完成, 在數(shù)據(jù)庫中已經(jīng)執(zhí)行了數(shù)據(jù)更改,所以已經(jīng)完成了99%的任務(wù),例如:下列操作已經(jīng)產(chǎn)生: 1.在SGA(Buffer Cache)中已經(jīng)生成了undo塊; 2.在SGA(Buffer Cache)中已經(jīng)生成了產(chǎn)生改變的數(shù)據(jù)塊和索引塊; 3.在REDO LOG BUFFER生成了前面兩項的redo信息; 4.依賴于前三項產(chǎn)生的數(shù)據(jù)量大小以及操作需要的時間,buffer中的數(shù)據(jù)可能已經(jīng) 有一部分輸出到了磁盤; 5.所有需要的鎖已經(jīng)獲得; 當(dāng)執(zhí)行COMMIT命令時,只執(zhí)行如下操作: 1.為事務(wù)生成SCN:SCN是Oracle數(shù)據(jù)庫的一種計時信息,用以保證事務(wù)的順序性, 同時還用于失敗恢復(fù)和保證數(shù)據(jù)庫的讀一致性和檢查點,無論何時何人提交,SCN 自動加1; 2.將事務(wù)相關(guān)的未寫入redo log file中的redo信息從redo log buffer寫入到redo log file,這才是真實的COMMIT,這步操作完成,說明我們已經(jīng)完成COMMIT,事務(wù)從 V$TRANSACTION中移除; 3.V$LOCK中記錄的SESSION關(guān)于該事務(wù)的鎖會釋放,其他需要這些鎖的事務(wù)被喚醒; 4.執(zhí)行塊清理,清理塊頭保存的事務(wù)信息; 本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |