oracle redo log operation

regonly1發表於2012-05-29
操作一臺測試庫,兩點左右時,系統相應突然變慢。感受很明顯。
很好奇,所以檢視了此時的作業系統執行情況。發現此時cpu佔用率比較高,使用率維持在50%以上(即idle<50%),wait也很高。於是根據top找到程式號到v$process.spid找到程式地址address,然後再由此找到相關session(v$session.paddr),發現是一個job。由於是測試庫(基本用作“資料”庫),關閉此job,效能有所提高。
不過還是覺得慢,這時找 系統程式沒什麼特別的了,所以做了一個awr。觀察發現,log file sync和log file parallel write等幾個log file相關的事件等待最長,判斷還是日誌檔案切換太頻繁而導致的等待(即切換時,下一個切換的日誌檔案還沒有寫完,導致等待)。
而這些日誌檔案還是跟其他資料檔案存放在一個磁碟分割槽上,這就跟加劇了此類問題。所以解決辦法是將日誌檔案遷移到另一個磁碟分割槽,並加大日誌檔案到80m(原來為50M,由於目標磁碟分割槽剩餘空間不是很足,所以只增加了30M每個)。
新增日誌組:
alter database add logfile group 4('/home/oracle/oradata/redologs/redo04.log') size 80m;
刪除日誌組:
alter database drop logfile group 1;
如果日誌組還在使用中(即active或current狀態下),則使用日誌檔案切換或強制檢查點來切換:
alter system checkpoint;

alter system swich logfile;

處理前的警告日誌資訊:
Thread 1 advanced to log sequence 39339
  Current log# 2 seq# 39339 mem# 0: /home/oracle/db/product/10.2.0/db_1/oradata/orcl/redo02.log
Tue May 29 14:09:41 2012
Thread 1 cannot allocate new log, sequence 39340
Checkpoint not complete
  Current log# 2 seq# 39339 mem# 0: /home/oracle/db/product/10.2.0/db_1/oradata/orcl/redo02.log
Thread 1 advanced to log sequence 39340
  Current log# 3 seq# 39340 mem# 0: /home/oracle/db/product/10.2.0/db_1/oradata/orcl/redo03.log
Tue May 29 14:09:49 2012
SMON: Parallel transaction recovery tried
Tue May 29 14:11:01 2012
Thread 1 advanced to log sequence 39341
注意到有這樣的提示:
Thread 1 cannot allocate new log, sequence 39340

處理後的警告日誌資訊:
Thread 1 advanced to log sequence 39364
  Current log# 2 seq# 39364 mem# 0: /home/oracle/oradata/redologs/redo02.log
Tue May 29 14:45:14 2012
Thread 1 advanced to log sequence 39365
  Current log# 3 seq# 39365 mem# 0: /home/oracle/oradata/redologs/redo03.log
Tue May 29 14:47:23 2012
Thread 1 advanced to log sequence 39366
  Current log# 1 seq# 39366 mem# 0: /home/oracle/oradata/redologs/redo01.log
Tue May 29 14:49:28 2012
此類警告資訊解除

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

相關文章