診斷Oracle Redo Log效能問題

來源:互聯網
上載者:User

一、Rodo Log效能調整目標:

在能夠影響Oracle效能的諸多因素中,Redo Log相關的因素從某種程度上可以說是最為重要同時也是最值得關注的。因為在一個OLTP系統中Oracle通過各種技術以及優良的設計,盡量做到將大部分操作在記憶體中完成,以便最大程度的提升效能。因此在Oracle的諸多後台進程以及使用者進程的大部分操作都是記憶體操作,而且這些操作會通過延遲寫入技術儘可能的將磁碟I/O操作滯後。但是在這些操作中卻有某些例外,其中最明顯的就是針對Redo Log的操作。

在Oracle中針對Redo Log的操作主要由LGWR進程完成,這個進程可以說是Oracle所有後台進程中最繁忙的進程,而且這個進程可能要頻繁的進行I/O操作,這是因為Oracle出於資料安全的考慮必須保證聯機線上重做日誌可靠的寫入記錄檔,以便在發生崩潰時能夠有效恢複資料,而真正的資料可能會等一些時間延遲寫入資料檔案。這種特點在Oracle的各個後台進程中顯得有些獨樹一幟。另外LGWR全域唯一,即一個執行個體只能有一個活動的LGWR進程,由於要進行頻繁的I/O操作可想而知是很容易造成LGWR進程競爭的。由於LGWR在Oracle執行個體結構設計中的特殊地位,一旦出現LGWR效能瓶頸,那麼對整個系統的效能影響將會是極為嚴重的,同時對資料安全也是一個潛在的威脅。

因此作為Oracle日常的資料庫管理,我們要給與這部分相當的關注,儘早發現問題,儘早作出調整。調整的目標就是要做到Log_Buffer大小適中(不要過大,也不能太小),要滿足使用者進程的使用需要,每當系統負載有一個明顯的增加時,就應該考慮調整它的大小。比如因為業務拓展當前系統固定使用者數量從1萬人猛增到3萬人,那麼就應該對Log_Buffer大小給與關注。另外就是要做到記錄檔的大小適中,日誌組的記錄檔數量合適,不能影響LGWR寫記錄檔的效能,不能造成記錄檔間的寫入競爭,不能在日誌切換歸檔發生時引發磁碟競爭等等。

二、監控與問題排查:

在進行Redo Log問題監控時,主要關注兩個方面:日誌緩衝區空間使用的等待情況和日誌緩衝區資料槽的分配情況。通過這兩方面的監控並配合一些問題排查手段,通常可以發現大量問題。

(1)、日誌緩衝區空間使用的等待情況:

可以通過查詢v$session_wait來監控日誌緩衝區空間使用的等待情況,通過如下SQL語句進行查詢:

select sid,event,seconds_in_wait,state

from v$session_wait

where event='log buffer space%';

以上的查詢中可以通過觀察seconds_in_wait的數值來分析問題,這個數值可以顯示如下問題:日誌切換緩慢引發的等待、LGWR寫入緩慢引發的等待、記錄檔寫入引起的磁碟競爭引發的等待。

這些等待的發生可能是由於如下問題引起的:

1、記錄檔寫入時存在磁碟競爭:

這種情況多見於日誌切換髮生時,由於記錄檔組的規劃不當,或者存放記錄檔的磁碟寫入速度緩慢,或者是因為磁碟RADI類型不當都會引發這個問題,如果懷疑村在這些情況,可以通過如下語句進行監控:

select event,total_waits,time_waited,average_wait

from v$system_event

where event like 'log file switch completion%';

可以通過觀察total_waits,time_waited,average_wait數值來分析問題,如果這些值過高(注意何謂“過高”,不同系統考量標準不一樣,要具體分析),那麼說明存在以上問題。此時可以通過如下措施解決:

.將同一記錄檔組的各個成員分配到不同的磁碟上,進而減少日誌寫入以及日誌切換和日誌歸檔時引發的競爭;

.將記錄檔儘可能存放在快速的磁碟上;

.要合理選擇RADI類型對磁碟進行條帶化,通常不要選擇RADI5來作為記錄檔磁碟的RADI類型,通常推薦使用RADI10;

.可以增加REDO LOG檔案大小,來延緩日誌切換,下面是一個增加記錄檔大小的方法;

假如原來有3個小的redo log file, 下面是UNIX環境下的一個例子:

第一步: 往資料庫添加三個大的redo logfile

SVRMGRL>ALTER DATABASE ADD LOGFILE GROUP 4

('/opt/oradata/app/redo04.log',

'/ora_bak/oradata2/redolog/redo04.log') size 16M reuse;

SVRMGRL>ALTER DATABASE ADD LOGFILE GROUP 5

('/opt/oradata/app/redo05.log',

'/ora_bak/oradata2/redolog/redo05.log') size 16M reuse;

SVRMGRL>ALTER DATABASE ADD LOGFILE GROUP 6

('/opt/oradata/app/redo06.log',

'/ora_bak/oradata2/redolog/redo06.log') size 16M reuse;

第二步: 手工地做log switch, 使建立的redo logfile起作用.

SVRMGRL>alter system switch logfile;

此操作可以執行一到幾次, 使舊的redo logfile成invalid狀態.

第三步: 刪除原來舊的redo logfile.

SVRMGRL>alter database drop logfile group 1;

SVRMGRL>alter database drop logfile group 2;

SVRMGRL>alter database drop logfile group 3;

  • 1
  • 2
  • 下一頁

相關文章

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.