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