- HOME
- [종료]코어 오라클 데이터베이스 스터디
- 6차 코어 오라클 데이터베이스 스터디
- 2.6 Redo Write Triggers
LGWR프로세서가 리두 버퍼의 내용을 리두 로그 파일에 기록하는 방식 분류
기록방식 | 기록시점 | 대기이벤트 |
---|
background write | 커밋수행과 관련된 기록 이외에는 모두 | |
sync write | 커밋수행 | log file sync |
LGWR프로세서가 리두 버퍼의 내용을 리두 로그 파일에 기록하는 경우
- LGWR프로세스는 rdbms ipc message 란 idle 대기이벤트를 대기하며, 해당 대기이벤트의 timeout은 3초임
- 3초(timeout) 경과한 후에 wake up해도 리두 로그 버퍼에 리두 로그 파일로 기록해야 할 내용이 있으면 "backgroudn write"수행
- 현재 사용된 로그 버퍼블록 수가 _LOG_IO_SIZE 파라미터에 정의된 블록 수 이상이고, LGWR 프로세스가 idle한 경우
- 오라클 프로세스는 로그버퍼의 공간을 할당 받을 때 마다, 현재 사용된 로그 버퍼 블록의 수를 계산함
- LGWR프로세스는 "background write"를 수행하도록 포스트 됨
- _LOG_IO_SIZE의 기본설정 값은 로그버퍼 볼록의 1/3(단위는 로그 블록 수) 또는 1Mb중 작은 값으로 설정됨
- 리두 레코드에는 커밋에 대한 체인지 백터가 생성되며, 해당 로그 레코드를 포함하는 리두 레코드를 디스크로 기록하기 전 까지는 트랜잭션 복구가 불가능함
- 커밋을 수행한 프로세스는 LGWR 프로세스를 포스트 한 후에 log file sync 대기 이벤트를 대기하게 됨
- 이런 기록 방식을 "sync write"라고함
- 커밋을 과다하게 발생시키는 오라클 프로세스는 log file sync 대기이벤트의 대기 시간이 길어짐
- 오라클 8i부터는 DBWR프로세스가 LGWR프로세스의 on-disk RBA보다 큰 high-RBA를 가진 블록을 기록하려고 할때
- 해당 블록을 deferred write queue에 위치시킨 후에 LWGR프로세스를 포스트 하여 sync를 맞추도록하며, DBWR프로세스는 기록 작업을 계속하여 수행
- 오라클 8i이전에는 이러한 경우 DBWR프로세스가 log file sync 대기 이벤트를 대기하였음
- HOME
- [종료]코어 오라클 데이터베이스 스터디
- 6차 코어 오라클 데이터베이스 스터디
- 2.6 Redo Write Triggers