[Oracle] SCN, Checkpoint
SCN (System Change Number)
- DB의 변경이 발생한 시점 / Commit이 발생하면 트랜잭션은 고유한 번호를 받음
이때 발생한 번호로 트랜잭션 관리* & 장애 발생 시 복구 키로 이용
*트랜잭션 관리 : 읽기 일관성, 사용자들에게 가장 최근에 커밋된 데이터 보여줌
- Data file, Control file, Redo Log File의 동기화 정보를 맞춤
- Data file : 실제 데이터가 저장되는 디스크 상의 물리적 파일 - Control file : DB의 제어 정보를 가지고 있는 파일 (파일이 손상되면 mount, open 불가 -> 2개 이상으로 백업하여 각각 다른 디스크에 보관 권고) - Redo Log File : DB에서 생긴 모든 변화를 기록한 파일 장애 복구에 가장 핵심 / 작업 내용 유실 X |
- SCN이 다르다면 DB가 정상적으로 올라오지 않음
∵ Oracle이 startup 된 후 Mount -> Open 시점에 컨트롤파일과 데이터파일의 SCN을 비교해서 DB를 올릴지 판단 함
-- 현재 SCN 확인
SQL> select current_scn from v$database;
Checkpoint
- Commit 된 데이터를 어디까지 저장했는지 확인하기 위해 만들어 놓은 개념 (인스턴스 복구를 시작해야 하는 SCN)
ex) SCN이 100번까지 commit 되었고, checkpoint 정보가 90번이라면 SCN 90번 트랜잭션까지 데이터 파일에 저장된 것
- DBWR이 현재 Buffer Cache 데이터를 디스크로 백업
- Datafile의 복구를 결정하는 기초적인 정보
- 체크포인트를 통해 정기적으로 기록함으로써 롤 포워드(Redo) 시간을 단축 ( 복구 시간 단축 )
- 디스크에 기록된 만큼의 Redo Log 데이타는 삭제
- Control file과 Data file의 Check point 정보를 비교하고 서로 정보가 다르다면, Online Redo/Archived Redo Log를 참조하여 복구
- 체크포인트 발생 시 CKPT가 Control file과 Data file Header에 Checkpoint 기록
- 체크 포인트 발생 → CKPT 에서 DBWn 에 체크포인트 발생 사실 통지 → DBWn 은 블록을 디스크에 기록
1. Database / Global Checkpoint
- DB 버퍼 캐시에 있는 모든 dirty buffe의 내용을 데이터 파일로 저장
- 저장된 가장 큰 SCN의 번호(Checkpoint SCN)를 Control file과 Data file Header에 기록
2. Thred Checkpoint / Logical Checkpoint
- Log Switch 발생 시 생성
- RAC 환경일 경우 각 노드별로 다르게 발생, Single Instance일 경우 Database Check point와 같은 역할
3. Datafile Checkpoint
- 특정 data file에만 발생
- 해당 Tablespace를 오프라인 한다거나, Begin backup 수행 시 발생
- Control fil과 Data file Header에 기록
4. Mini Checkpoint
- Drop Table과 같이 특정한 DDL 발생 시 특정 블록에만 발생
5. Recovery Checkpoint
- 데이터 파일에 장애 발생 시 백업된 데이터파일 복원 후 Redo Change Vector를 적용 시킨 후 recovery 된 블록을 데이터 파일에 저장 시 발생
-- checkpoint_change# : 가장 마지막 checkpoint의 SCN
SQL> select checkpoint_change# from v$datafile ;
'Database > Oracle' 카테고리의 다른 글
[Oracle] 관리자 계정(system, sys) 비밀번호 변경 (0) | 2023.03.16 |
---|---|
[Oracle] 이전 명령어 방향키로 출력 (0) | 2023.03.15 |
[Oracle] Sequence (0) | 2023.03.13 |
[Oracle] Listener & Oracel DB (0) | 2023.03.12 |
[Oracle] 구조 (0) | 2023.03.09 |