關於前滾(roll forward)和回滾(roll back)
1:roll forward : 將已經寫入redo log file 中但是沒有寫入datafile中的提交與未提交的資料寫入資料檔案 。 屬於例項恢復,一般在資料庫開啟的時候進行(前滾時資料庫還沒有open )。
2:rollback : 在資料庫開啟之後,oracle會查詢redo log file中記錄的commit maker ,根據undo block中的內容將它回滾到一致的狀態。
在一個事務發生的時候, Oracle會先將對應的redo 寫到log buffer, 再生成相應的undo, 將undo 的redo寫到redo log buffer,再對當前的資料塊做變更,redo log buffer在一定的條件下寫到redo log file,在使用者commit的時候, 系統會將當前log buffer中的所有的redo entry都寫到redo log file中, 不管是不是當前事務產生的redo, 同時會將當前commit的commit marker也寫到redo log file中.
對應與上面的情況, commit已經發出, 可能正在寫redo log, 當時commit marker還沒寫,這樣在做instance recovery的時候會將這些redo log先forward到buffer cache中, datablock 與undo block都forward到buffer cache中, 再檢查沒有commit的事務, 將這些事務rollback, 我們上面的第一個問題, 因為對應的commit marker沒有寫到redo log file中, 這樣對應的事務就是沒有commit的事務, 系統會根據undo block中的內容將其回滾到一個一致的狀態.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-582477/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於事務回滾註解@Transactional
- Cesium 根據飛機航線計算飛機的Heading(偏航角)、Pitch(俯仰角)、Roll(翻滾角)
- T-SQL——關於事務回滾的方式SQL
- 關於ORACLE大型事務回滾的幾個點Oracle
- MySQL:Innodb DB_ROLL_PTR指標解析MySql指標
- 入門Kubernetes - 滾動升級/回滾
- oracle回滾溯源Oracle
- 資料庫startup啟動時前滾回滾進行例項恢復的理解資料庫
- Kubernetes:更新與回滾
- Spring Boot 事物回滾Spring Boot
- Oracle 資料回滾Oracle
- 關於現代瀏覽器的 back-and-forward 快取機制瀏覽器Forward快取
- 回滾與撤銷(一)
- Kubernetes:Pod 升級、回滾
- 拉鍊表的建立、查詢和回滾
- MySQL實現事務的提交和回滾MySql
- 12C關於CDB、PDB 回滾undo表空間的總結
- 關於頁面無限滾動思路
- 深入UNDO回滾段,檢視爭用以及回滾段使用量的估算
- 談談 Git 程式碼回滾Git
- [20181222]如何找出回滾操作.txt
- Spring的事物回滾問題Spring
- 回滾莫隊學習筆記筆記
- [20140516]取出回滾段資訊.txt
- Voodoo:模擬生活+泛跑酷融合玩法《Spiral Roll》研發覆盤Odoo
- 實踐資料回滾解決方案
- spring boot 顯示處理事務回滾Spring Boot
- Git回滾程式碼到某個commitGitMIT
- sqlserver遇到回滾事務的操作策略SQLServer
- IDEA程式碼不想提交了,如何回滾Idea
- git遠端分支回滾到指定版本Git
- 【UNDO】Oracle系統回滾段說明Oracle
- YC一文搞懂MySQL持久化和回滾的原理bmyMySql持久化
- BZOJ4241: 歷史研究(回滾莫隊)
- Spring Data JPA中事務回滾意外RollbackExceptionSpringException
- 利用oracle的日誌挖掘實現回滾Oracle
- MySQL死鎖案例一(回滾導致死鎖)MySql
- Oracle查詢回滾大事務所需時間Oracle
- 淺入Kubernetes(12):Deployment 的升級、回滾