실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.
Redo Log Buffer의 튜닝
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