溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Oracle的重做日志

發(fā)布時間:2020-08-01 12:22:15 來源:網(wǎng)絡(luò) 閱讀:2039 作者:rm_rf_db 欄目:關(guān)系型數(shù)據(jù)庫

Oracle數(shù)據(jù)庫在運行當中,用戶更改的數(shù)據(jù)首先會存放在數(shù)據(jù)庫高速緩沖區(qū)當中,為了提升磁盤讀寫,oracle機制不會頻繁的將緩沖區(qū)的數(shù)據(jù)寫到磁盤,而是等到檢查點或者數(shù)據(jù)高速緩沖區(qū)達到一定數(shù)量時才會寫入數(shù)據(jù)庫文件;倘若在檢查點或者數(shù)據(jù)量等條件還沒滿足系統(tǒng)就掛了,那么此時用戶提交的數(shù)據(jù)就會丟失,因為數(shù)據(jù)還在內(nèi)存里,為了防止數(shù)據(jù)丟失,oracle提出了重做日志。
重做日志的目的是用來做數(shù)據(jù)恢復(fù)的,LGWR進程負責(zé)優(yōu)先把用戶更改的數(shù)據(jù)寫到重做日志文件中。
LGWR的觸發(fā)條件:
在事務(wù)提交的時候(COMMIT)
Redo Log Buffer 三分之一滿
Redo Log Buffer 多于一兆的變化記錄
在DBWn寫入數(shù)據(jù)文件之前
如果數(shù)據(jù)庫開啟了歸檔(查看是否歸檔archive log list),那么重做日志會在寫滿后,關(guān)閉當前日志文件并把重做日志文件中的內(nèi)容移動到歸檔文件中,歸檔完畢后輪詢下一組可用重做日志組;也叫歸檔重做日志。
查看系統(tǒng)當前的重做日志文件信息
Oracle的重做日志
如上圖數(shù)據(jù)庫有5個日志組,每組日志組有2個日志成員;目測數(shù)據(jù)庫開啟了歸檔模式,當前正在使用的重做日志為第4組重做日志;
查看重做日志文件位置
Oracle的重做日志
重做日志組內(nèi)的每一個重做日志文件稱為一個成員,一個組內(nèi)的每一個成員具有相同的日志序列號(log sequence number)并且成員的文件大小相同。
Oracle的重做日志
來個自畫原理圖
Oracle的重做日志
在實際生產(chǎn)中,會需要添加多個重做日志組,且每個日志組至少有一個以上的重做日志成員,并存放于不同的磁盤分區(qū)。
實戰(zhàn):添加重做日志組和日志成員。
alter database add logfile group 6 ('/u01/app/oracle/oradata/orcl/redo0601.log','/u01/app/oracle/oradata/orcl/redo0602.log') size 5M;
Oracle的重做日志
以上添加一個重做日志組6,重做日志成員有兩個redo0601.log和redo0602.log都為5M大小。
查看剛才添加的日志組使用情況,新添加的是未使用Unused
Oracle的重做日志
實戰(zhàn):刪除重做日志組
alter database drop logfile group 6——若active狀態(tài)不可刪除
重做日志組有六種狀態(tài):
UNUSED : 表示該聯(lián)機重做日志文件組對應(yīng)的文件還從未被寫入過數(shù)據(jù),通常是剛剛創(chuàng)建的聯(lián)機重做日志文件或重建后的聯(lián)機重做日志文件。
CURRENT : 表示當前正在使用的日志文件組。該聯(lián)機重做日志組是活動的。
ACTIVE : 表示該組是活動的但不是當前組,實例恢復(fù)時需要這組日志。如果處于這一狀態(tài),表示雖然當前并未使用,文件中的數(shù)據(jù)沒有全部寫入數(shù)據(jù)文件,一旦需要實例恢復(fù),必須借助該文件中保存的內(nèi)容??梢允且褮w檔或沒歸檔。
INACTIVE: 表示實例恢復(fù)已不再需要這組聯(lián)機重做日志組了,文件中的數(shù)據(jù)全部寫入數(shù)據(jù)文件。該組聯(lián)機重做日志當前處于空閑狀態(tài)??梢允且褮w檔或沒歸檔。
CLEARING:在執(zhí)行了 ALTER DATABASE CLEAR LOGFILE 后,表示該組重做日志文件正被重建(重建后該狀態(tài)會變成UNUSED)。
CLEARING_CURRENT:表示該組重做日志重建時出現(xiàn)錯誤,如io錯誤。
實戰(zhàn):添加重做日志成員
alter database add logfile member '/u01/app/oracle/oradata/orcl/redo0603.log' to group 6
實戰(zhàn):刪除重做日志成員
alter database drop logfile member '/u01/app/oracle/oradata/orcl/redo0603.log'
實戰(zhàn):切換日志
Oracle的重做日志
執(zhí)行:alter system switch logfile
Oracle的重做日志
切換后變成當前可用狀態(tài)
Oracle的重做日志
如果要重設(shè)重做日志文件大小,需要刪除日志組重建重做日志組并設(shè)置新的重做成員大?。?br/>1.alter database drop logfile group 6
2.alter database add logfile group 6 ('/u01/app/oracle/oradata/orcl/redo0603.log') size 100M
如果無法刪除重做日志組,請執(zhí)行alter system switch logfile(可以多次執(zhí)行切換)并查看日志組狀態(tài),如果為INACTIVE則可以刪除;也可以執(zhí)行alter database checkpoint,此檢查點的功能是LGWR進程把重做日志緩沖區(qū)數(shù)據(jù)寫入重做日志文件中,同時通知DBWR進程將數(shù)據(jù)庫高速緩沖區(qū)提交的數(shù)據(jù)寫入數(shù)據(jù)文件中。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI