判斷Oracle 10g RAC redo日誌大小是否存在問題

來源:互聯網
上載者:User

在此我們將提到兩個可能出現的問題。

首先提到的就是批處理任務,該任務可能沒有足夠的完整重做空間來完成,或是因為速度快,以致聯機重做日誌在歸檔到離線重做日誌前即已切換(使用了所有的重做日誌,並且開始再次寫入第一個重做日誌)。聯機重做日誌只有在歸檔(啟用歸檔時)後才可以被重寫,因此DML 和 DDL 活動必須等待,直到有可用的聯機日誌。在作業系統層級上,按它們最近的更新日期和時間列出聯機重做日誌,您可以判斷它們切換的是否頻繁。還可以用查詢 V$LOG_HISTORY 來得到最近的日誌交換記錄( 以前是100個,現在增加了 )。如果增加了聯機重做日誌的大小,就可以為那些執行大型的 INSERT、UPDATE 和 DELETE 操作的批處理任務提供足夠的空間。較好的解決辦法是增加聯機重做日誌的數目,這樣就可以在有很頻繁的日誌切換(很小但卻非常多的聯機重做日誌)時提供足夠的空間。

第二個要考慮的問題就是那些要長時間啟動並執行任務,這些任務可能要花大量的時間來切換聯機重做日誌。當整個任務正好只需用到一個聯機重做日誌時,這種長時間啟動並執行任務可能非常快。對於聯機交易處理(OLTP)類型的環境來說,最好使用較小的重做日誌。我的經驗是每半個小時(不考慮可以縮短這段時間的一些長時間啟動並執行批處理操作)就切換一次聯機重做日誌。通過在作業系統層級上監控聯機重做日誌發生的日期和時間(或查詢 v$log_history,也可以查詢),就可以確定增加聯機重做日誌的大小或數目,從而設定一個最佳化的切換時間間隔。

下面的查詢顯示了兩個日誌切換的間隔時間,這樣我們可以方便地判斷系統是否存在問題。

1、對於單一實例

  1. select b.recid,  
  2.        to_char(b.first_time, 'dd-mon-yy hh:mi:ss') start_time,  
  3.        a.recid,  
  4.        to_char(a.first_time, 'dd-mon-yy hh:mi:ss') end_time,  
  5.        round(((a.first_time - b.first_time) * 25) * 60, 2) minutes  
  6.   from v$log_history a, v$log_history b  
  7.  where a.recid = b.recid + 1  
  8.  order by a.first_time asc  
2、對於叢集
  1. select b.recid,  
  2.        to_char(b.first_time, 'dd-mon-yy hh:mi:ss') start_time,  
  3.        a.recid,  
  4.        to_char(a.first_time, 'dd-mon-yy hh:mi:ss') end_time,  
  5.        round(((a.first_time - b.first_time) * 25) * 60, 2) minutes  
  6.   from v$log_history a, v$log_history b  
  7.  where a.recid = b.recid + 1 and   a.thread#=b.thread# and a.thread#=1  
  8.  order by a.first_time desc  
 上面這個是對於節點1的聯機日誌切換(a.thread#=b.thread# and a.thread#=1),如果對於節點2的也很簡單(a.thread#=b.thread# and a.thread#=2)即可

 可以在作業系統層級上檢查聯機重做記錄檔的大小或查詢 V$LOG 和 V$LOGFILE 表,以此來確定這些檔案的大小。下面列出的查詢中顯示了關於重做日誌的顯示資訊:

select a.member, b.* from v$logfile a, v$log b where a.group# = b.group#;


3、 其他有協助的重做日誌命令  


使用 ALTER DATABASE ADD LOGFILE. . .命令建立較大的日誌,然後刪除較小的日誌,以此來增加額外的日誌。需要注意的是,基於在 init.ora 檔案中為 CHECKPOINT_INTERVAL 指定的塊數量,檢查點的時間間隔會強加一個檢查點。因此,如果增加聯機重做記錄檔的尺寸,則要確保也增加檢查點的時間間隔。為了多工聯機重做記錄檔(建立一個鏡像副本),可以使用如下的命令將記錄檔添加到已有的組:

alter database add logfile member '+RAC/jscn/onlinelog/redo011.dbf' to group 4;
alter database add logfile member '+RAC/jscn/onlinelog/redo021.dbf' to group 5;

可以用下面的命令刪除某個聯機重做日誌成員:

alter database drop logfile member '+RAC/jscn/onlinelog/redo021.dbf';

如果要添加一個新的聯機重做日誌組,可使用下面的命令:

alter database add logfile thread 1 group 5 '+RAC/jscn/onlinelog/redo01.dbf' size 512m;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.