REDO日誌管理

andyann發表於2011-04-06

REDO日誌管理

序:ORACLE 11g中 redo日誌預設為3個日誌組,一個日誌組對應一個redo檔案預設大小為50M。

但是在OLTP資料中,因為insert,update,delete語句等產生大量的redo,使redo切換比較頻繁,

當3個redo檔案切換迴圈下來,觸發的checkpoint沒有完成,要切換的redo日誌檔案狀態為ACTIVE,

alert.log檔案提示Checkpoint not complete,以及Thread 1 cannot allocate new log, sequence 46591等資訊。

由於dbw0寫比較慢,不可避免要遭遇此尷尬,為了避免此種情況發生需加大redo日誌檔案的大小

1 切換日誌

ALTER SYSTEM SWITCH LOGFILE; 切換

ALTER SYSTEM CHECKPOINT; 觸發檢查點

2 新建日誌組

ALTER DATABASE ADD LOGFILE GROUP 1 ('/Oracle/dbdata/lnd/redo01_01.log','/Oracle/dbdata/lnd/redo01_02.log') SIZE 200M ;

3 刪除日誌組

alter database drop logfile group 1;

alter database drop logfile group 2;

rm -rf /Oracle/dbdata/lnd/redo01.log

rm -rf /Oracle/dbdata/lnd/redo02.log

思路:

一般我們做日誌擴充的思路如下:

新建日誌組(臨時)-> 切換到臨時日誌組 -> 刪除原來日誌組以及日誌檔案 ->

新建日誌組以及資料檔案 -> 切換到新建日誌組 -> 刪除臨時用日誌組以及日誌檔案

 

備:redo切換頻率查詢。

select b.SEQUENCE#, b.FIRST_TIME,
       a.SEQUENCE#, a.FIRST_TIME,
       round(((a.FIRST_TIME-b.FIRST_TIME)*24)*60,2)
from v$log_history a, v$log_history b
where a.SEQUENCE# = b.SEQUENCE#+1
and b.THREAD#=1
order by a.SEQUENCE# desc;

select sequence#,first_time,nexttime,round(((first_time-nexttime)*24)*60,2) diff
from (
select sequence#,first_time, lag(first_time) over(order by sequence#) nexttime
from v$log_history
where thread#=1
) order by sequence# desc;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24070945/viewspace-691797/,如需轉載,請註明出處,否則將追究法律責任。

相關文章