Checkpoint
버퍼 캐시상에서 변경된 블록을 데이터 파일에 기록하는 시점을 Checkpoint라고 한다.
변경사항을 디스크에 바로 기록하지 않고 버퍼 캐시에 기록 후 Checkpoint 마다 디스크에 기록하는 방식으로 디스크 I/O를 최소화하고 성능을 높인다.
프로세스
- 체크포인트가 발생
- CKPT에서 DBWn에 체크포인트가 발생한 것을 통지
- 통지받은 DBWn은 버퍼 캐시에 변경된 블록을 데이터 파일에 기록
- LGWR 또는 CKPT(버전에 따라 상이)이 현재 발생한 checkpoint의 SCN 값을 data file과 control file에 기록
Check Point 발생 경우
- Log switch가 발생한 경우
- Log_checkpoint_interval 파라미터 만큼의 OS block 간격 (단위는 OS block. 이 크키만큼 redo log file에 기록 후 check point가 발생.)
- Log_checkpoint_timeout 파라미터 만큼의 초 간격
- Alter system checkpoint 명령문 수행 시
주의사항
Checkpoint 수행 중에 새 Checkpoint 발생하면 이전 Checkpoint는 새 Checkpoint의 수행이 끝날 때 까지 같이 ACTIVE 상태임. 이로 인해 Checkpoint not complet이 발생할 수 있다.
Checkpoint not complete
Active 상태인 Redo Log File 에 대한 Checkpoint가 발생하여 디스크로 쓰는 작업이 완전히 끝나야 Redo Log File이 Inactive 상태로 변경되어 재사용이 가능한 상태가 된다.
어떤 redo log file에 대한 Checkpoint 가 끝나지 않은 상태에서 새로운 Checkpoint가 발생하면 새로운 Checkpoint가 완료될 때 까지 같이 Active 상태로 유지되게 된다.
이때 Log Switch가 발생해 로그 순환으로 Inactive 상태의 Redo Log File를 재사용하려고 하는데 Checkpoint가 오랫동안 끝나지 않아 모든 Redo Log File 이 Active 상태인 경우, 더이상 Log 기록이 불가능해 Checkpoint not complete 에러가 발생한다.
이때 Checkpoint 수행 중인 datafile header는 다른 작업이 blocking 된다.
> 적절한 checkpoint 간격 설정과 적절한 redo log file의 개수, 크기 중요
'ORACLE > 아키텍처 기초' 카테고리의 다른 글
[Oracle] Bigfile Tablespace (BFT) (1) | 2024.04.25 |
---|---|
[ORACLE] 클러스터링 팩터(Clustering Factor) (0) | 2024.04.25 |
오라클 아키텍쳐 (4) Redo Log File (0) | 2023.09.12 |
오라클 아키텍쳐 (3) Control File (0) | 2023.09.11 |
오라클 아키텍쳐 (2) Data File과 Tablespace (0) | 2023.09.11 |