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