Oracle Redo log 狀態及工作原理解析

2021-10-21 20:54:51 字數 1789 閱讀 5909

oracle重做日誌(redo log)是用來記錄操作條目,用於資料庫資料恢復。為了提高效率,oracle通常建議設定三組redo log。本文將對重做日誌組的狀態以及多種狀態之間切換做解析,力求掌握該知識點。

概述

oracle重做日誌組通常有四種狀態,即unused,inactive,active,current。

unused:通常指從未被使用的日誌組,即新新增的日誌組。

current:狀態為lgwr程序正把redo log buffer的日誌寫進日誌組中。

active:為剛剛完成日誌切換後的狀態,此時該日誌組中提交的事務引起的資料改變還沒有完全從db buffer cache寫入到資料檔案中,因此該日誌組還不能被覆蓋,並且待完全寫入後變為inactive狀態。如果資料庫為歸檔模式,那麼是在該狀態下完成歸檔的。

inactive:狀態的日誌可以被覆蓋,可以允許寫入日誌。如果是在歸檔模式下,那麼此階段證明歸檔已經完成。

實驗

本次實驗為開啟歸檔模式為例:

檢視當前日誌組:

日誌組為4組,分別為inactive、current、current、inactive

我們進行手動歸檔,再看狀態

發現組一已經從不活躍(inactive)變為執行中(current),組二已經從當前(current)變為了active,組

三、四狀態不變。說明命令使得日誌的寫入切換至第一組,第二組正在進行歸檔和進行必要的資料寫入至datafile。待這兩項工作完成後再看下圖

組二由active變為inactive說明組二已經完成了歸檔,可以允許下一次寫入了。在非歸檔下組二的狀態也可以變為inactive說明完成了資料從db buffer cache寫入至db files。

總結

上述實驗很好的說明了oracle日誌組在整個生命週期所具有的狀態。當然沒有看到unused狀態,這種狀態是當日誌組剛新添到資料庫後的狀態,這種操作在生產環境中很少,所以本次實驗沒有看到這種狀態。

另外有人會認為在手動日誌切換時為什麼使用命令alter system archive log current。這裡也做乙個說明。

兩組命令最後的效果一樣。alter system switch logfile是不等歸檔完成就進行switch logfile操作,速度快,尤其在非歸檔模式下適用,對當前例項生效。而alter system archive log current要等待歸檔完成才操作,對所有例項生效

oracle調整聯機重做日誌大小(change redo log size)

oracle 聯機重做日誌檔案(online log file)

oracle聯機重做日誌丟失的恢復

oracle 聯機重做日誌檔案(online redo log file) 詳述

oracle重做日誌檔案版本不一致問題處理

【備份與恢復】恢復受損的復用聯機重做日誌檔案

**:

Oracle Redo log 狀態及工作原理解析

oracle重做日誌 redo log 是用來記錄操作條目,用於資料庫資料恢復。為了提高效率,oracle通常建議設定三組redo log。本文將對重做日誌組的狀態以及多種狀態之間切換做解析,力求掌握該知識點。oracle重做日誌組通常有四種狀態,即unused,inactive,active,cu...

Oracle redolog 丟失的故障處理

2 第一種情況的 recover database until cancel 操作遇到ora 01547,ora 01194,ora 01110錯誤,需要整個資料庫的物理備份,並根據歸檔日誌恢復到錯誤時間點,前提是資料庫是歸檔模式。restore old backup sql startup mou...

表單控制項狀態 禁用狀態

bootstrap框架的表單控制項的禁用狀態和普通的表單禁用狀態實現方法是一樣的,在相應的表單控制項上新增屬性 disabled 和其他表單的禁用狀態不同的是,bootstrap框架做了一些樣式風格的處理 原始碼請檢視bootstrap.css檔案第1723行 第1729行 form control...