2013년 8월 5일 월요일

ORACLE SGA Tuning, Redo Log Buffer의 튜닝

Redo Log Buffer의 튜닝 

오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷 실무전문 강의) 
 www.onjprogramming.co.kr  

 
 Oracle 강좌에도 나와 있지만 Redo Log Buffer는 데이터베이스에서 발생 한 모든 변경 사항을 저장 하는 역할을 합니다. 각 서버 프로세스에 의해 동작되는 각  Transaction의 모든 정보는 변경 되기 전의 Before Image와 변경된 후의 New Image로 나누어 지며 각각의 Image는 Redo Log Buffer에 기록됩니다. SELECT시에는 사용되지 않으며 TABLE의 생성, 입력, 수정등의 DML 작업 시 데이터베이스에 가해지는 변경 정보와 변경된 값 및 BLOCK의 변경 위치 등을 기록합니다. 복구를 위한 SGA의 필수 요소 입니다.

Redo Log Beffer의 크기는 init.ora 파일의 LOG_BUFFER에서 지정 합니다. Redo Log Buffer는 Data를 순환적으로 기록 하는 Circular Buffer 이며 다른 구성 요소와 마찬 가지로 버퍼의 크기가 한정 되어 있으므로 가득차게 되면 기존의 내용을 덮어 쓰게 되므로 Redo Log Buffer의 내용을 Redo Log File에 기록 해야 합니다. 이 일을 전담하는 Process는 LGWR라고 하는 겁니다.

 또한 REDO LOG BUFFER는 1/3정도 찼을 때 LGWR에 의해 REDO LOG FILE에 기록 됩니다. 그러므로 REDO LOG BUFFER는 REDO LOG FILE에 쓰여지기 위한 BUFFERING을 위한 메모리 영역에 해당 됩니다.

 REDO LOG BUFFER 성능의 척도는 “redo log space requests”로 불리는 겁니다. 이것의 뜻은 Oracle User Process가 REDO EMTRY를 REDO LOG BUFFER에 기록하기 위한 과정에서 LGWR가 FREE BUFFER를 마련 해 줄 때 까지 기다린 횟수를 나타냅니다. 이 값은 0에 가까울수록 좋으며 계속 증가하는 경우엔 User Process들은 REDO LOG  BUFFER에서 빈 공간을 얻기 위해 대기하게 됩니다.

SQL> select name, value from v$sysstat
  2  where name = 'redo log space requests';

NAME                                                                        VALUE
----------------------------------------------------------------
 redo log space requests                                                    0 

댓글 없음:

댓글 쓰기