切換日誌後,logbuffer中所有的資料都得寫到redo log中
關於“alter system switch logfile”後,logbuffer中的所有緩衝日誌是否要和buffer cache中的髒塊一樣寫到磁碟中。
在這記載一下幾個問題。
alter system switch logfile命令會觸發完全檢查點,完全檢查點會將buffer cache中的髒塊寫到磁碟中的資料檔案中。
一開始我以為在寫贓資料前,需要先寫對應的日誌到磁碟。不然的話,萬一髒資料寫到磁碟了,logbuffer的資料由於斷電丟了。那麼以後哪一天做恢復的時候,就會有日誌缺失的問題。
?但是上面的想法是錯的。
首先要明確一點並不是只有提交了的事務對應的日誌會寫到磁碟,因為日誌是順序寫的。
log buffer的資料丟失沒關係,只有logbuffer中的日誌資料寫入了日誌檔案,Oacle才會將更新前的值寫入undo,然後再更新資料。
比如有一條日誌,不論這條記錄對應的事務是不是提交了的,它都會將更新前的值寫入undo,然後再更新磁碟上對應的資料。?
undo中的資料是用來做flashback這些操作的,提交了的事務,大家都知道,通過rollback命令是回滾不了的,要回退就得用flashback。
如果一個事務commit了,ORACLE會先保證log buffer中對應的日誌寫到磁碟。這樣確保了快速提交,有了日誌,就不怕buffer cache中的資料丟失了。
一個事務對應的???redo buffer的東西沒有完整寫到online redolog的話就沒有成功提交,沒有成功提交的事務在intance crash掉的話就會回滾。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29227735/viewspace-1134916/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- REDO日誌切換頻率
- Oracle redo 日誌切換時間頻率Oracle Redo
- 檢視Oracle的redo日誌切換頻率Oracle
- 【REDO】重做日誌檔案(redo log files)管理(增,刪,改,查,切)
- 檢視oracle的redo日誌組切換頻率Oracle
- MySQL重做日誌(redo log)MySql
- redo log日誌挖掘(二)
- redo log日誌挖掘(一)
- MySQL更新資料時,日誌(redo log、binlog)執行流程MySql
- 老闆下了死命令,要把日誌系統切換到Logback
- 【REDO】刪除REDO LOG重做日誌組後需要手工刪除對應的日誌檔案
- 線上重建redo log日誌組
- SQL Server中 error log 日誌檔案如何手動切換SQLServerError
- MySQL 日誌系統 redo log、binlogMySql
- PostgreSQL切換日誌SQL
- 資料庫篇:mysql日誌型別之 redo、undo、binlog資料庫MySql型別
- 【Mysql】三大日誌 redo log、bin log、undo logMySql
- oracle丟失的是所有的redo日誌組Oracle
- Oracle調整redo log日誌大小Oracle
- Oracle日誌模式切換Oracle模式
- 重做日誌(redo log)相關總結
- 【聽海日誌】之DATAGUARD新增redo log
- mysql日誌:redo log、binlog、undo log 區別與作用MySql
- online redo log 操作 -- 更改RAC資料庫日誌檔案大小資料庫
- DB2 的事務日誌(redo log)DB2
- log4j中將日誌插入到資料庫中遇到的問題^_^資料庫
- REDO日誌管理
- dataguard之物理standby 日誌切換
- 分散式系統原理--日誌技術Redo Log分散式
- oracle switch logfile日誌切換及alter system checkpoint作了什麼Oracle
- oracle redo 日誌刪除後的恢復Oracle Redo
- .net core 中使用Log4net輸出日誌到Mysql資料庫中MySql資料庫
- 分析資料庫日誌(LogMiner)資料庫
- redo log全部刪除後,啟動資料庫資料庫
- 【Archived Log】通過日誌切換頻率推算出存放歸檔日誌所需的空間Hive
- Oracle資料庫減少redo日誌產生方式Oracle資料庫
- v$log_v$logfile監控日誌檔案logfile切換及相關資訊_status
- oracle聯機日誌檔案REDO LOGFILE簡述Oracle