undo與redo理解 ORACLE中,數(shù)據(jù)庫(kù)的redo與undo分別是什么呀,兩者是什么關(guān)系呢?
ORACLE中,數(shù)據(jù)庫(kù)的redo與undo分別是什么呀,兩者是什么關(guān)系呢?[session事務(wù)處理1。計(jì)算從更新的元組到原始元組的增量信息,并將增量復(fù)制到回滾段作為undo;2。寫(xiě)入重做日志以記錄對(duì)回
ORACLE中,數(shù)據(jù)庫(kù)的redo與undo分別是什么呀,兩者是什么關(guān)系呢?
[session
事務(wù)處理
1。計(jì)算從更新的元組到原始元組的增量信息,并將增量復(fù)制到回滾段作為undo;
2。寫(xiě)入重做日志以記錄對(duì)回滾段的更改。回滾段也由緩沖區(qū)管理組織管理,這相當(dāng)于對(duì)頁(yè)面的更改;
3。將緩沖區(qū)中相應(yīng)的元組更新為新值,并回滾新值4。寫(xiě)重做日志來(lái)記錄對(duì)頁(yè)面的更改(回滾段);
5。將已更改頁(yè)的狀態(tài)更改為dirty,表示該頁(yè)將被刷新
log flushed,并且當(dāng)前事務(wù)的最后一個(gè)LSN(日志序列號(hào))之前的重做日志將寫(xiě)入持久存儲(chǔ)。
崩潰恢復(fù)過(guò)程
1。在啟動(dòng)開(kāi)始時(shí),檢查數(shù)據(jù)庫(kù)是否在最后一次退出時(shí)崩潰;
2。找到最近的檢查點(diǎn);
3。當(dāng)定位到此檢查點(diǎn)時(shí),滑動(dòng)磁盤(pán)的數(shù)據(jù)頁(yè)并檢查校驗(yàn)和。如果不正確,則表示該頁(yè)在上次寫(xiě)入時(shí)未完成。使用雙寫(xiě)緩沖區(qū)讀取內(nèi)存緩沖區(qū)中的正確頁(yè)并將其更新到內(nèi)存緩沖區(qū)中的頁(yè);
4。按順序分析重做日志(從最后一個(gè)檢查點(diǎn)到最后一個(gè)LSN),以確定未提交的事務(wù);
5。按順序執(zhí)行重做。這些重做日志不僅包括對(duì)數(shù)據(jù)段(write tuple)的更改,還包括對(duì)回滾段(write undo)6的更改。回滾所有未提交的事務(wù)。
ORACLE中,數(shù)據(jù)庫(kù)的redo與undo分別是什么呀,兩者是什么關(guān)系呢?
重做用于日志記錄。撤消用于記錄數(shù)據(jù)備份。舉一個(gè)簡(jiǎn)單的例子來(lái)說(shuō)明(實(shí)際的過(guò)程要復(fù)雜得多):1。當(dāng)您發(fā)出update語(yǔ)句時(shí),Oracle首先將更改前后的信息寫(xiě)入redo(當(dāng)滿足某些條件時(shí),日志寫(xiě)入過(guò)程寫(xiě)入日志文件)。然后將更新前的數(shù)據(jù)復(fù)制到undo中。三。用戶回滾后,Oracle將在undo中覆蓋數(shù)據(jù)。用戶提交后,Oracle可以根據(jù)重做信息恢復(fù)數(shù)據(jù)。(當(dāng)然,您也可以使用undo來(lái)實(shí)現(xiàn)閃回)簡(jiǎn)而言之,讓我們慢慢理解它。