Print
카테고리: [ Oracle Database ]
조회수: 7350
지난 글에서 
오라클 아키텍쳐에 대해 말씀드렸습니다.
 
이번 글에서는 백그라운드 프로세스들이 어떻게 작용 하는지 흐름을 살펴보고
오라클 복구에 있어서  control file이 왜 중요한지에 대해
control file을 자세히 살펴보면서 알아보도록 하겠습니다.
 

1. 백그라운드 프로세스 작용 과정

 
1) Redo log buffer에 변경 내용 기록
 
2) 변경내용을 마찬가지로 data buffer cache에 기록
 
3) LGWR가 Redo log buffer의 데이터를 Log file에 내려씀
 
4) Log file이 가득 차면 Log Switch 이벤트 발생. 다음 Log file을 사용
Log swtich 이벤트 발생 시 CKPT에게 checkpoint 진행하라는 신호를 보냄
 
5) CKPT는 Checkpoint Queue의 내용을  참고하여 DBWR에게 변경사항을 Data file 로 내려쓰라는 신호를 보냄
 
6&7) DBWR은 Checkpoint 신호를 받고 buffer cahce의 변경사항을  Data file로 내려씀
 
8) 내려쓴 데이터에 대한 SCN정보는 Datafile과 Control file에 기록됨
 
*SCN
commit 이 발생할 때 트랜잭션에 부여하는 고유한 번호
 
*checkpoint
SCN이 부여된 트랜잭션 정보와 데이터베이스의 상태정보를
control file 과 data file 에 기록하는 작업. 데이터베이스의 정보를 동기화 시키는 작업
 
*checkpoint queue
data buffer cache 에서 변경된 block의 주소값과 SCN값을 갖고있음
 
*LGWR 작동 시점
1)commit  발생
2)redo log buffer가 1/3 이상 찼을 때  
3)buffer의 내용이 3초이상 존재할 때  
4)1MB이상의 리두로그가 생성됐을 때
 
*log switch 작동 시점
1)logfile이 발생했을 때
2) alter system switch logfile 커맨드
 
*checkpoint 작동 시점
1)data buffer c ache에 여유공간이 없을 때
2)checkpoint time out( 설정가능)
3) log switch 발생했을 때
4)alter system checkpoint 커맨드
 
*dbwr 작동 시점
1)checkpoint 발생
2) data buffer cahce의 용량이 임계치에 도달했을 때
3) 주기적 time out (설정가능)
4)tablespace offline ,read only 로 상태 변경 등
 

 

2. control file 주요 내용

1) Database Entry

-DB name, DB 생성시간, checkpoing SCN, Redo log Thread 정보 등
 
1) DB NAME = TESTDB
2) Database checkpoint : DB 전체의 체크포인트
3) Controlfile checkpoint 
매 checkpoint 발생 마다 업데이트 되며 장애 복구시에 이 SCN 값과 각 데이터파일의 SCN값을 비교하여
그 차이만큼 Redo log, archive log  file 에서 복구함

 

2) Checkpoint Progress Record 

- 체크포인트 관련 정보 포함
 
1)dirty 
-checkpoint queue 길이로 0은 비어있다는 의미
2)Low cache rba 
-  datafile의 SCN값과 위에서 본 Control file checkpoint SCN 값이 다를 때, 즉 복구가 필요할 때,
Redo log, archive log file 에서 필요한 값을 가져온다고 하였는데
가져올 redo log BLOCK의 시작 주소를 의미함

 

3) Log file records

- 각 리두 로그 그룹별 SCN 정보를 갖고 있음
 
1) LOW SCN
해당 로그파일이 갖고 있는 데이터 중 가장 낮은 SCN,
해당 로그파일은 LOW SCN부터 NEXT SCN까지 갖고 있다는 의미
 
2)NEXT SCN
현재 사용하는 log file이 full 나면 다음 log file을 사용하겠다는
log switch 이벤트가 발생됨. 마지막으로 저장된 데이터의 SCN이 NEXT SCN이 되며
LOG FILE#2 의 Next scn이 0xffff.fffffff 처럼 무한대인 이유는
현재 저 로그파일을 사용하고 있어서 몇번 SCN까지 저장될지 모르는 상태이기 때문.

 

4)Data file records

- 각 데이터 파일의 이름, checkpoint SCN, stop SCN, ON/OFF line 상태 정보
 
1)Checkpoint scn : 현재까지 디스크로 저장된 SCN
2)Stop SCN 
신규로 추가되는 데이터의 마지막 SCN으로, DB가 오픈 상태여서
운영중인 상태면 얼마나 데이터가 더 들어올 지 모르기 때문에
무한대로 설정되어 있음
 
 
DB가 정상종료 (shutdown immediate ) 될 때 checkpoint를 발생시켜
위의 checkpoint scn과 stop scn을 동일하게 만드는데 이 땐
위의 정보처럼 서로 값이 같음
 
요약
-Control file 에는 데이터베이스 전반 ( 데이터파일,리두로그파일의 위치,상태,SCN 값 등)의 모든 정보가 있음
-DB open,recover 할 때 컨트롤 파일과 데이터파일의 SCN 값을 비교 하여 같으면 복구 불필요,
다를 땐 차이나는 SCN만큼을 controlfile의 log file records 부분을 참고하여 redo log, archive log 에서 가져옴