ORACLE 前滾和回滾
Oracle資料庫是採用“日誌在先”機制的。當我們對資料庫資料進行修改時,並不是立即將修改資料寫入到檔案中,而是寫入到共享記憶體SGA空間中的Buffer Cache裡。同時,將修改的日誌不斷的寫入到SGA中另一塊Log Buffer快取中。有一個後臺程式LGWn不斷的將Log Buffer快取中的日誌內容寫入到online redo log檔案中。
日誌檔案的幾個特點:
首先,日誌檔案的寫入是很頻繁的。LGWn會不斷將日誌資訊從Log Buffer中寫入Online Redo Log;
其次,在日誌檔案上,可以有三個型別的事務事件:
1、事務結束,已經被commit,之後打過checkpoint檢查點。這種事務記錄在Log File上,但是變化資訊已經被DBWn寫入進資料檔案;
2、事務結束,已經被commit,之後沒有打入checkpint檢查點。這種情況下,Log File已經寫入了日誌專案,資料檔案可能包括髒資料,也可能沒有寫入髒資料;
3、事務未結束,沒有commit。這種時候,資料塊Dirty Block上面是有事務槽資訊,表示未結束事務,是不會將資料寫入到資料檔案中。但是,日誌Log Buffer可能將部分未提交的DML操作專案寫入到Log File中;
“前滾和回滾”是Oracle資料庫例項發生意外崩潰,重新啟動的時候,由SMON進行的自動恢復過程。
1、當例項失敗後,SMON首先找到最後SCN記錄的Redo Log File,尋找最後一個打入的Checkpoint。
注:檢查點Checkpoint
檢查點Checkpoint是資料庫一致性檢查的一個標記。簡單的說,就是在這個點上,Oracle保證各個檔案(資料、控制、日誌等)是一致的。檢查點的作用就是在進行例項恢復的時候,告訴SMON程式,這個點之前的內容不需要進行恢復。
2、Oracle會從這個checkpoint position處開始應用日誌檔案進行“前滾”來重演整個操作過程直到例項失敗的那一刻
前滾,就是把已經寫到redo上但是還沒有寫道到datafile上的變化透過讀取redo來寫到datafile上,不論是否提交。
3、開啟資料庫
4、對於沒有進行提交的事物,ORACLE會從Undo表空間中尋找到舊版本SCN的資料塊資訊,來進行SGA中Buffer Cache資料塊恢復。“回滾”未提交的事務。
日誌檔案的幾個特點:
首先,日誌檔案的寫入是很頻繁的。LGWn會不斷將日誌資訊從Log Buffer中寫入Online Redo Log;
其次,在日誌檔案上,可以有三個型別的事務事件:
1、事務結束,已經被commit,之後打過checkpoint檢查點。這種事務記錄在Log File上,但是變化資訊已經被DBWn寫入進資料檔案;
2、事務結束,已經被commit,之後沒有打入checkpint檢查點。這種情況下,Log File已經寫入了日誌專案,資料檔案可能包括髒資料,也可能沒有寫入髒資料;
3、事務未結束,沒有commit。這種時候,資料塊Dirty Block上面是有事務槽資訊,表示未結束事務,是不會將資料寫入到資料檔案中。但是,日誌Log Buffer可能將部分未提交的DML操作專案寫入到Log File中;
“前滾和回滾”是Oracle資料庫例項發生意外崩潰,重新啟動的時候,由SMON進行的自動恢復過程。
1、當例項失敗後,SMON首先找到最後SCN記錄的Redo Log File,尋找最後一個打入的Checkpoint。
注:檢查點Checkpoint
檢查點Checkpoint是資料庫一致性檢查的一個標記。簡單的說,就是在這個點上,Oracle保證各個檔案(資料、控制、日誌等)是一致的。檢查點的作用就是在進行例項恢復的時候,告訴SMON程式,這個點之前的內容不需要進行恢復。
2、Oracle會從這個checkpoint position處開始應用日誌檔案進行“前滾”來重演整個操作過程直到例項失敗的那一刻
前滾,就是把已經寫到redo上但是還沒有寫道到datafile上的變化透過讀取redo來寫到datafile上,不論是否提交。
3、開啟資料庫
4、對於沒有進行提交的事物,ORACLE會從Undo表空間中尋找到舊版本SCN的資料塊資訊,來進行SGA中Buffer Cache資料塊恢復。“回滾”未提交的事務。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30496894/viewspace-1813565/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle前滾和回滾Oracle
- Oracle例項恢復——說說前滾和回滾Oracle
- 關於前滾(roll forward)和回滾(roll back)Forward
- 關於oracle例項恢復的前滾和回滾的理解Oracle
- oracle回滾溯源Oracle
- ORACLE回滾段Oracle
- Oracle提交和回滾處理Oracle
- Oracle 回滾(ROLLBACK)和撤銷(UNDO)Oracle
- Oracle 資料回滾Oracle
- ORACLE回滾段(1)Oracle
- ORACLE回滾段(2)Oracle
- ORACLE回滾段(轉)Oracle
- ORACLE回滾段管理Oracle
- 回滾操作、回滾段的理解
- ORACLE 回滾段詳解Oracle
- Oracle的回滾段介紹Oracle
- ORACLE 死事務的回滾Oracle
- oracle檢視回滾的事務Oracle
- oracle回滾段 undo 表空間Oracle
- ORACLE技術專題-- 回滾段Oracle
- 資料庫startup啟動時前滾回滾進行例項恢復的理解資料庫
- 【UNDO】Oracle系統回滾段說明Oracle
- Oracle - 回滾表空間 Undo 的整理Oracle
- Mac回滾iTunes版本Mac
- MONGODB 回滾失敗MongoDB
- 入門Kubernetes - 滾動升級/回滾
- 利用oracle的日誌挖掘實現回滾Oracle
- Oracle查詢回滾大事務所需時間Oracle
- Oracle基礎 03 回滾表空間 undoOracle
- oracle 11g 回滾段的測試Oracle
- SQL code----檢視回滾段名稱及大小 回滾段的管理SQL
- Spring Boot 事物回滾Spring Boot
- java 事務提交/回滾Java
- 拉鍊表的建立、查詢和回滾
- MySQL實現事務的提交和回滾MySql
- 鎖表時KILL SESSION及回滾段監控(回滾時間評估)Session
- Oracle Database 10g新特性-回滾監視OracleDatabase
- zt_Oracle事務rollback回滾時間估算Oracle