管理REDO LOG記錄
Redo Log概念
規劃Redo Log
建立Redo Log組和成員
重新分配、命名Redo Log成員
刪除Redo Log組和成員
強制切換日誌
驗證Redo Log檔案塊
清理Redo Log 檔案
Redo Log字典視圖
Redo Log 概念
Redo Threads
redo log相對於每一個資料庫執行個體都有一個redo線程。典型配置中,僅一個資料庫執行個體訪問資料庫,所以僅出現一個redo 線程。但在RAC環境中,兩個或更多的執行個體並行訪問一個資料庫,每一個執行個體都擁有它自己的redo 線程。分離的redo線程為避免在一個redo log file集上產生競爭,因此這種預估的潛在的瓶頸導致我們需要瞭解如何對redo log進程配置和管理。
Redo Log Contents
redo records(redo記錄)被寫入至redo log file中,一條redo記錄,通常也稱為redo entry,是由一組change vectors組成,每一組改變扇區描述資料庫的單個塊的改動情況。比如,你改變employee表中的一條salary的值,這個改變就包含了改變扇區,其中描述了表的資料區段的塊、undo段的資料區塊、和事務表的undo段。
Redo條目記錄資料可以用來重構所有資料庫的改變,包括undo段。因此,redo log也用於保護復原資料。當我們通過redo 資料恢複資料庫時,資料庫讀redo記錄中的改變扇區以及應用與這些改變相關的塊。
Redo記錄的緩衝位於SGA的一個迴圈重新整理區成為redo log buffer,這些緩衝被LGWR進程寫到redo log file中,不管事務何時提交,LGWR都將redo 記錄的事務寫入到redo log file中。並分配一個SCN(系統改變號)作為每一條已提交事務的redo記錄點。
Redo記錄也可以在相應事務提交前寫入redo log file中,如果redo log buffer已滿,或其他事務提交,LGWR將buffer所有的redo log條目刷到redo log file中。即使一些redo記錄沒及時提交。如果有必要,資料庫可以復原這些改變。
Oracle資料庫怎樣寫Redo log
資料庫中的redo log通常由一或多個的檔案組成。資料庫至少保證兩個檔案中一個總是可以寫的,另一個用于歸檔(當資料庫處于歸檔模式)。
LGWR進程迴圈刷寫redo log檔案,當某一個正在使用的redo log寫滿後,進程會切換到下一個可用的redo log檔案中。當最後一個redo log 檔案寫滿後,會切換回第一個redo log 檔案進行記錄。如所示:
如果在NOARCHIVELOG模式,一個滿載的redo log需要等到其中的改變記錄均被寫入到資料檔案中後才可以重用。
如果在ARCHIVELOG模式,則需要等待改變記錄被寫到資料檔案並歸檔後才可重用。
redo log的活動(當前)和非使用中
LGWR正在寫的redo log檔案的狀態顯示為current,redo log 檔案可用於執行個體恢複的被稱為active狀態。如果不在需要被用於執行個體恢複的則為inactive狀態。
如果在ARCHIVELOG模式下,直到歸檔進程(ARCn)完成歸檔前資料庫都不能對該redo log檔案重用或覆蓋。而在NOARCHIVELOG模式下,LGWR則會等到redo log處於inactive狀態時重寫該redo log。
log switch和log sequence number
日誌切換指出資料庫停止和開始寫的redo log檔案。
規劃Redo log
多R edo Log 檔案
放置Redo Log成員至不同磁碟
規劃Redo Log檔案大小
規劃Redo Log檔案的塊大小
選擇Redo Log檔案的數量
控制歸檔標籤