태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

[Oracle Forum] Redo Buffer 크기의 의미와 오라클 10gR2에서의 Redo Buffer 크기 계산의 변화

오라클 2007.10.25 13:34
아래 글은 내가 참여한 Oracle Forum의 Thread 중 하나로 Redo Buffer에서의 경합에 대해서 다루고 있다. 영어로 외국인들과 이런 문제를 논의한다는게 쉽지 않지만, 일부러 시간을 내서 참여하곤 한다. 한국의 위상(?)을 알리고자 하는 것도 있고, Oracle의 본토인 미국에서는 주로 어떤 문제를 가지고 싸움들을 하는지 알고 싶은 마음도 있다.

최초의 질문은 "ADDM 리포트에 보니까 Redo Buffer 크기를 32M로 늘리라고 되어 있는데, 이게 맞는 말인가?"에서 시작한다. 그 후 log file sync, log file switch completion, log buffer space와 같은 대기 현상에 대해서 각자의 생각을 이야기하고, 그 와중에서 약간의 싸움도 있다.

이런 싸움이 생기는 결정적인 이유는 Redo Buffer 크기가 어느 정도가 적합한가에 대해 통일된 가이드가 없기 때문이다. Redo Buffer의 Redo Record는 1M 이상 할당되면 LGWR에 의해 자동 Write가 된다. 따라서 1M를 넘는 Redo Buffer 크기는 무의미하다는 의견이 있고, 많은 문서에서 이런 사실을 밝히고 있다.

하지만, 동시에 많은 프로세스가 Redo Buffer를 사용하게 되면 Buffer 공간이 모자란 현상이 생길 수 있다. 이 때는 log buffer space 이벤트가 발생한다. 이런 경우에는 Redo Buffer를 늘려주어야 한다. 아마 ADDM이 Redo Buffer 크기를 키우라는 가이드를 했을 때는 이런 사실에 근거를 두었을 것이다.

또 한가지 재미있는 사실은 10gR2부터는 log_buffer 파라미터로 지정한 것보다 실제 Redo Buffer의 크기가 크게 할당된다는 것이다. 10gR2부터는 fixed SGA area와 Redo Buffer가 통합되었고, 이로 인해 fixed SGA 영역에서 쓰고 남는 프리 영역이 Redo Buffer로 할당되기 때문이다. SGA의 메모리 단위는 Granule인데(4~ 16M 사이), 만일 16M 크기의 Granule에서 2M를 쓰고 14M가 남았다면 이 공간을 Redo Buffer가 쓰게 된다.

아래에 실 시스템에서의 예가 있다.

log_buffer=50M
Total System Global Area 734003200 bytes
Fixed Size 2075656 bytes
Variable Size 184550392 bytes
Database Buffers 490733568 bytes
Redo Buffers 56643584 bytes

log_buffer를 50M로 지정했지만, 실제 Redo Buffer 크기는 54M인것을 확인할 수 있다.






Jafar Ali

Posts: 218
From: Mumbai
Registered: 5/14/07

Log buffer size
Posted: Oct 22, 2007 1:40 PM

As per addm report recommendation, log buffer should be increased to32M. Curently i have 2M log buffer, what should be the log buffer sizeis there any calculation to find out exact log buffer size?

Jafar

enrico

Posts: 223
From: Italy - currently in Atlanta, USA
Registered: 5/20/07

Re: Log buffer size
Posted: Oct 22, 2007 1:51 PM in response to: Jafar Ali

here it is: MAX(0.5M, (128K * number of cpus))

check here:

http://download.oracle.com/docs/cd/B19306_01/server.102/b14211/memory.htm#sthref658

32M seems to me way too much.

enrico

Ignacio Ruiz

Posts: 119
From: Queretaro, Mexico
Registered: 6/27/07

Re: Log buffer size
Posted: Oct 22, 2007 1:54 PM in response to: Jafar Ali

Well, the ADDM recomendation is good since that tool analyzes a set ofparameters and statistics to get that figure. If you want therationale, then you should take a look to the Oracle Wait Interfaceviews or Statspack reports.

These are (some) of the events related to this structure
log buffer space
log file switch completion
log file sync


Regards
http://oracledisect.blogspot.com

Ignacio Ruiz

Posts: 119
From: Queretaro, Mexico
Registered: 6/27/07

Re: Log buffer size
Posted: Oct 22, 2007 1:57 PM in response to: enrico

Yes, that formula is good for first estimation... then you have to tuneit checking for wait events related to log processing.

Regards
http://oracledisect.blogspot.com

Jafar Ali

Posts: 218
From: Mumbai
Registered: 5/14/07

Re: Log buffer size
Posted: Oct 22, 2007 2:24 PM in response to: Ignacio Ruiz

Here is my report from AWR


Avg
%Time Total Wait wait Waits
Event Waits -outs Time (s) (ms) /txn
---------------------------- -------------- ------ ----------- ------- ---------
log file sync 82,341 1.6 3,899 47 1.2
log file switch completion 286 40.6 159 556 0.0
log buffer space 10 50.0 6 625 0.0

My redo size is of 750 MB each for total size 1.5 TB database

Jafar

Ignacio Ruiz

Posts: 119
From: Queretaro, Mexico
Registered: 6/27/07

Re: Log buffer size
Posted: Oct 22, 2007 2:40 PM in response to: Jafar Ali

Well, one of the wait events is related to the log buffer: the one that takes most time.

The other: 'log file switch completion' may require some IO tunning. I would recommend metalink Note:223117.1

Regards
http://oracledisect.blogspot.com

Trackback 0 : Comment 0

Write a comment

티스토리 툴바