프린트 하기

OS 환경 : Oracle Linux 7.6 (64bit)

 

DB 환경 : Oracle Database 19.3.0.0

 

방법 : 오라클 19c 체크포인트 정리

체크포인트(Checkpoint)란?
체크포인트는 데이터베이스 시스템에서 데이터의 일관성과 복구를 지원하기 위해 사용되는 중요한 메커니즘이자
특정 시점에 모든 데이터가 디스크에 안전하게 기록되었다는 것을 보장하는 프로세스임

 


체크포인트 목적
- 인스턴스 또는 미디어 장애 발생 시 복구에 소요되는 시간 단축
- 주기적으로 버퍼 캐시의 Dirty 버퍼를 디스크에 쓰는지 기록하도록 보장
- 일관된 DB 종료 시 데이터베이스가 모든 커밋된 데이터를 디스크에 기록하도록 보장

 


체크포인트 종류
스레드 체크포인트(Thread checkpoints)
리두 로그는 리두 스레드로 구성됨
단일 인스턴스(RAC가 아닌 싱글db) 의 경우 리두 로그는 하나의 스레드로 구성됨(병렬 서버/RAC의 경우 리두 로그가 인스턴스별로 하나의 스레드를 가짐)
리두 로그 스레드에는 데이터 파일 블록을 포함해 버퍼에서 발생한 모든 변경사항(커밋된 것과 커밋되지 않은 것 모두)을 저장됨
스레드 체크포인트 이벤트는 모든 데이터 파일에 대해 해당 스레드에서 생성된 모든 리두 로그가 디스크에 기록되었음을 보장함
이 과정에서 해당 스레드의 모든 Dirty 버퍼가 데이터 파일로 쓰여짐
컨트롤 파일과 데이터파일 헤더에 체크포인트 정보가 갱신됨

 

스레드 체크포인트가 발생하는 상황
- 일관된 DB 종료(Consistent Shutdown, Abort 외 모든 종료 방식)
- alter system checkpoint 구문 실행 시
- alter database begin backup 구문 실행 시
- log switch 시

참고 : 오라클 19c 체크포인트 발생 상황 테스트(스레드 체크포인트) ( https://positivemh.tistory.com/1073 )

 


테이블스페이스 및 데이터 파일 체크포인트(Tablespace and data file checkpoints)
테이블스페이스 체크포인트는 각 테이블스페이스의 데이터 파일마다 단위로 체크포인트가 발생함
특정 시점 이전에 리두에 의해 수정된 모든 버퍼를 디스크에 기록함
컨트롤 파일과 데이터파일 헤더에 체크포인트 정보가 갱신됨

 

테이블스페이스 및 데이터 파일 체크포인트가 발생하는 상황
- 테이블스페이스를 읽기 전용으로 변경 시
- 테이블스페이스를 오프라인으로 변경 시
- 데이터 파일 축소 시
- alter tablespace begin backup 명령 실행 시

참고 : 오라클 19c 체크포인트 발생 상황 테스트(테이블스페이스 체크포인트) ( https://positivemh.tistory.com/1074 )

 


증분 체크포인트(Incremental checkpoints)
증분 체크포인트는 리두 로그 전환 시 대량의 블록을 한꺼번에 기록하는 것을 방지하기 위해 의도된 부분 스레드 체크포인트임
DBWR 프로세스는 적어도 3초마다 작업을 해야 할지 결정하기 위해 확인하는데
DBWR 프로세스가 Dirty 버퍼를 기록할 때 체크포인트 위치를 앞당겨 CKPT가 컨트롤 파일에는 체크포인트 정보를 갱신하지만 데이터 파일 헤더에는 기록하지 않음

참고 : 오라클 19c 체크포인트 발생 상황 테스트(스레드 체크포인트) ( https://positivemh.tistory.com/1073 )

 

 

이외에 인스턴스 및 미디어 복구 체크포인트 및 스키마 객체가 drop되거나 truncate 될때 발생하는 체크포인트가 존재함

참고 : 오라클 19c 체크포인트 발생 상황 테스트(기타 체크포인트) ( https://positivemh.tistory.com/1075 )

 

 

참조 : 

1490838.1, 1431133.1, 1526181.1, 270571.1, 568049.1
https://hemantoracledba.blogspot.com/2008/11/tracing-process-tracing-dbwr.html
https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/background-processes.html
https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_MONITOR.html#GUID-C9054D20-3A70-484F-B11B-CC591A10D609
https://docs.oracle.com/en/database/oracle/oracle-database/19/cncpt/process-architecture.html#GUID-D3174B3E-BCCA-473F-961E-84A36FD5C372
https://docs.oracle.com/en/database/oracle/oracle-database/19/cncpt/oracle-database-instance.html#GUID-4EC2658A-9519-4188-90C6-AA79F14D
https://docs.oracle.com/en/database/oracle/oracle-database/19/cncpt/oracle-database-instance.html#GUID-A3FAC5B6-928C-474C-9D4C-E5C5B27544E985D2
https://docs.oracle.com/en//database/oracle/oracle-database/23/dbiad/db_CKPT.html
https://avdeo.com/2015/09/07/how-many-checkpoints-in-oracle-database/
https://docs.oracle.com/en/database/oracle/oracle-database/19/rcmrf/SHUTDOWN.html
http://www.gurubee.net/wiki/pages/26742841
https://positivemh.tistory.com/284