Oracle之redo分析二

2021-09-01 08:22:34 字數 817 閱讀 3741

1. 為什麼不能分配乙個新日誌檔案

在批量大量匯入資料的時候,我們可能會在伺服器端的alert.log檔案裡面看到這樣一條警告資訊:

thread 1 cannot allocate new log, sequence1466

checkpoint not complete

current lg#3 seq# 1465 mem#0: /home/ora 10g/oradata/ora 10g/redo03.log

發現不能重用的原因有2個:

1. dbwr還沒有完成重做日誌所保護資料的檢查點(checkpointing),也就dbwr還沒有把該重做日誌檔案對應的髒資料塊從buffer cache 重新整理輸出到磁碟。如果還沒有輸出到磁碟的話,這個時候重用重做日誌檔案,會使得這些沒有輸出到磁碟的髒資料無法通過重做日誌檔案重現。

2. arch程序還沒有把重做日誌檔案複製到歸檔目標。因為如果還沒複製就重用的話,就沒辦法備份那些還沒有重新整理輸出到磁碟的資料。今後如果磁碟壞了的話,這些資料是無法恢復的。

這個時候dbwr或者arch將得到最大優先順序以將redo塊重新整理輸出到磁碟。這個時候,資料庫會暫停使用者所有的活動,因為此時已經沒有地方記錄使用者的修改了。完成了檢查點或者歸檔之後,一切又回歸正常了。

假如你在進行乙個大批量的修改操作,發現前1000行修改很快,停頓一下,然後下1000行修改很快,又停頓一下。如此迴圈。說明你的資料庫可能遇到這方面的問題了。

要解決這個問題,有幾種做法:

1. 想辦法讓dbwr程序更快,比如分配更多的dbwr程序,使用dbwri/o輔程序

2. 增加更多的重做日誌檔案,如果乙個日誌檔案滿了,可以用另外乙個日誌檔案。

oracle修改redo大小

切換到過渡redo alter system switch logfile 檢視是否切換到過渡的redo select group bytes 1024 1024,status from v log 切換到新建的redo alter system switch logfile 檢視是否切換到新建的r...

Oracle 調整重做日誌 redo 大小

oracle 調整重做日誌 redo 大小 需求描述 oracle 預設3個50m的redo日誌,對於大量tps的系統,會出現頻繁的日誌切換,影響系統效能 解決辦法 新增3個redo日誌,並將日誌大小調整為為1g 遺留問題 修改原有redo日誌時,會出現無法刪除的問題,需要等待日誌切換時,在嘗試。檢...

Dataguard之redo傳輸服務

整個data guard體系就是圍繞三個關鍵點展開 日誌傳送 redo send 日誌接收 redo receive primary database產生的redo日誌需要傳送到standby database。傳送動作由primary database的lgwr或者arch程序完成。不同的歸檔目的...