일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ORA-01034
- recovery
- Linux
- 하둡설치
- hadoop
- sql처리순서
- 완전분산환경
- Standalone
- nomount
- 하둡권한변경
- centos7
- initorcl
- 실습
- 오라클
- 카프카
- 에러
- sql연산자
- 카프카 사용
- crash recovery
- Kafka
- oracle
- tibero
- 결합연산자
- window업데이트
- hadoop명령어
- zookeeper
- ORA-27101
- 오라클복구
- 하둡
- 설치
- Today
- Total
IT 꿈나무의 일상
[Tibero] 체크포인트와 TSN (Tibero System Number) 본문
체크 포인트와 TSN의 사용 목적은 Tibero 인스턴스 종료 시 복구를 수행하기 위해서 입니다.
각각의 내용을 확인하여 보고 Tibero 복구 시 체크포인트와 TSN이 어떤 식으로 동작하는지 알아보도록 하겠습니다.
Checkpoint
체크 포인트는 주기적으로 메모리에 변경된 모든 데이터 블록(dirty block)을 데이터 파일에 기록하는 역할을 수행합니다.
체크 포인트가 발생할때마다 컨트롤 파일과 데이터파일 헤더에 체크 포인트 관련 정보를 갱신하게 됩니다.
체크 포인트가 발생하는 시점은 다음과 같습니다.
1. log switch
- 사용 중인 log file이 다른 log file로 switch(변경) 되었을 시 체크 포인트가 발생합니다.
2. ALTER SYSTEM CHECHPOINT;
- 사용자가 해당 쿼리를 입력하면 log switch가 발생하며 체크 포인트가 발생합니다.
3. 인스턴스의 종료
- NORMAL, POST_TX, IMMEDIATE MODE로 Tibero 종료 시 체크 포인트가 발생합니다.
* 추가 정보
Tibero에 내장되어 있는 파라미터를 사용하면 체크포인트 사이즈와 체크포인트 주기를 설정할 수 있습니다.
1) LOG_CHECKPOINT_INTERVAL (default : 0)
- 파라미터 설정 크기만큼 redo log file에 기록 후 checkpoint 를 발생 시킵니다.
- LOG_CHECKPOINT_INTERVAL=10000으로 지정 OS block Size가 4096byte(4KB)라면 10,000 * 4096Byte = 40MB
- redo logfile이 200MB라면 로그 파일 하나당 5번의 checkpoint 발생하게 됩니다.
2) LOG_CHECKPOINT_TIMEOUT (default : 0)
- 설정 시간 간격으로(초단위) checkpoint를 발생 시킵니다.
- 하지만 데이터 변동이 별로 없는 상태에서의 불필요한 checkpoint 발생은 성능 저하를 일으킬 수 있습니다.
TSN (Tibero System Number)
TSN은 Tibero System Number의 약자로 Oracle의 SCN과 동일한 역할을 수행합니다.
Tibero에서 발생하는 모든 트랜잭션, 백그라운드 프로세스 작업 시 변경 이력을 관리하기 위해 TSN(고유번호)를 생성합니다.
TSN의 목적은 다음과 같습니다.
1. 읽기 일관성을 유지하기 위해
2. 인스턴스 비정상 종료(또는 장애)시 복구를 하기 위해
3. Data file, Redo log file, Control File 동기화를 하기 위해
Crash Recovery
Tibero는 데이터 베이스의 비정상 종료 후 다시 기동하는 과정에서 Checkpoint와 TSN을 사용하여 자동으로 복구 과정을 수행합니다.
Crash Recovery 과정은 다음과 같습니다.
1. tbboot recovery 명령어 수행
2. nomount mode로 기동하며 $TB_SID.tip 파일에서 Control File 위치 확인
3. mount mode로 넘어가며 Control File Header에 저장되어 있는 TSN과
Datafile Header에 저장되어 있는 TSN 비교하여 일치하는지 확인
✅ 일치 한다면 복구 작업하지 않고 normal mode로 기동
☑️ 일치하지 않는다면 아래와 같이 Recovery 진행
[1] Cache recovery (Rolling Forward) 수행
Redo 로그를 읽어 마지막 체크 포인트 이후부터 수행된 트랜잭션을 수행하며 종료 직전 상태로 DB buffer cache를 복원
TSN=10 / Checkpoint=9 인 경우
발생한 트랜잭션(10)에 비해 데이터 파일에 반영(9)이 덜 된 상태이기 때문에
필요한 Redo Log File에서 반영되지 않은 데이터를 찾아 가장 낮은 TSN 번호부터 순차적으로 적용한다.
- TSN : 트랜잭션 발생 고유번호
- Checkpoint : 실제 데이터 파일에 반영 된 번호
[2] Transaction Recovery (Rolling Backward) 수행
undo를 이용하여 TSN / Checkpoint 동기화 이후 commit되지 않은 트랜잭션을 모두 rollback 처리
Undo Dictionary에서 commit 되지 않은 트랜잭션 확인하여
commit 되지 않은 트랜잭션을 roll backward 처리한다.
'DB' 카테고리의 다른 글
[Tibero] Boot Mode 단계에 따른 동작 확인 (0) | 2023.09.18 |
---|---|
오라클 파라미터 파일 손상으로 인한 복구방법 (0) | 2021.11.30 |
[ORACLE] JOIN과 숫자함수, 문자함수 실습 (0) | 2021.08.08 |
[ORACLE] SQL 연산자 (비교 / 결합 / in /any / exists ) 실습 (0) | 2021.08.08 |
[ORACLE] where절과 having절 실습 (0) | 2021.08.08 |