본문 바로가기

ORACLE/ORACLE_Admin

ORACLE Checkpoint

반응형

## Checkpoint

- 데이터베이스 트랜잭션의 동기화를 유지하기 위한 이벤트 (메모리의 데이터를 디스크와 동기화)

- 트랜잭션 동기화를 위해 버퍼가 내려적히는 이벤트

- SCN의 값을 controlfile과 datafile header에 반영

 

 

## Checkpoint가 발생하는 과정

체크 포인트 발생 → CKPT 에서 DBWn 에 체크포인트 발생 사실 통지 → DBWR은 블록을 디스크에 기록

 

 

## Checkpoint가 발생되는 시점

  • log switch 발생 시
    • Log Switch : LGWR가 log group을 다 사용하고 다음 redo log group을 사용하고자 할때 발생하는 Event를 LOG SWITCH 라고 함
    • 사용중인 log file이 모두 쓰여졌거나 alter system switch logfile을 수행하면 log switch가 발생
    • 오라클에서는 1시간에 한번정도의 log switch작업을 권장
  • log_checkpoint_interval 크기마다
    • OS block size로 이 파라미터에서 설정한 크기만큼의 redo log file에 기록한 후 checkpoint가 발생
  • log_checkpoint_timeout 에 설정된 시간마다
    • 이 파라미터에서 설정한 시간(초단위)만큼 checkpoint가 발생
    • 불필요한 checkpoint를 발생시킬수도 있기때문에 주의
  • alter system checkpoint 명령문 수행 시

 

 

## Checkpoint 관련 파라미터

  • FAST_START_MTTR_TARGET : 인스턴스 복구 시간을 초 단위로 지정
  • LOG_CHECKPOINT_INTERVAL : 인스턴스 복구에 필요한 리두 로그 블록의 수를 지정
  • LOG_CHECKPOINT_TIMEOUT : 체크포인트 발생 주기를 초 단위로 설정
  • LOG_CHECKPOINTS_TO_ALERT : 체크포인트 발생 시 ALERT LOG 파일에 기록할지 여부 결정

 

 

## Checkpoint 종류

  • Full checkpoint : DB에서 전체적으로 체크포인트가 발생하며, 데이터베이스 버퍼 캐시 영역에 존재하는 모든 더티버퍼가 데이터 파일에 기록
    • shutdown (Abort 제외) 발생
    • Alter system checkpoint global 발생
  • Thread checkpoint : RAC 환경의 경우 각각의 인스턴스에 대해 별도로 발생하는 체크포인트
    • shutdown (Abort 제외) 발생
    • Alter system checkpoint global 발생
  • File checkpoint : 테이블스페이스 및 데이퍼 파일에 속한 더티버퍼가 내려적히는 경우 발생하는 체크포인트
    • Alter tablespace XXX offline
    • Alter tablesapce XXX begin backup
    • Alter tablespace XXX read only
  • Log switch checkpoint : 로그 스위치가 발생하는 체크포인트
    • Alter system switch logfile
  • Incremental checkpoint : fast_start_mttr_target 시간 내에 복구할 수 있는 만큼만 남겨두고 체크포인트 진행
    • 컨트롤 파일에 3초마다 리두 로그 파일의 체크 포인트 위치에 관한 정보를 기록
  • Object checkpoint : DDL 작업 관련시 더티 블록만 데이터 파일에 기록
    • 컨트롤 파일 및 데이터 파일 헤더 정보 갱신이 X
    • 일부 DDL(Drop, Truncate) 명령에만 적용 가능

 

 

 

## begin backup 과 end backup checkpoint 위치 확인

select a.FILE#, a.CHECKPOINT_TIME, b.CHECKPOINT_CHANGE#, a.CHECKPOINT_CHANGE#
from v$datafile a, v$datafile_header b
where a.file# = b.file#
and   a.name = b.name
--order by a.checkpoint_change#;



alter tablespace users begin backup;


alter tablespace users end backup;

 

 

반응형