글
Chap 3. Oracle background process
- 아래의 5개의 Background process 는 필수 process 이다. 즉, 이 5개 중 하나라도 문제가 되면 장애다!
1. DBWR (Database Writer)
- Database buffer cache 에 변경 저장되어 있는 내용을 데이터 파일로 저장하는 역활.
- DBWR 이 작동하는 경우 ,
* Checkpoint 신호가 발생 했을 때,
* Dirty buffer 가 임계값을 지났을 때 (40%)
* Time out 이 발생 했을 때 (3초)
2. LGWR (Log Writer)
- data 변경의 원리 및 변경 값 조회 (CR: Consistent Read)
만약 A 라는 사용자가 홍길동을 일지매로 변경하려고 한다면,
1) 어떻게 변경 되는 지 Redo log buffer 에 기록하고, (홍길동 -> 일지매)
2) 원래의 데이를 undo log 에 기록하고 (홍길동)
3) DB buffer cache (메모리) 에 변경되는 값을 기록하고 (일지매)
4) A 사용자가 commit 을 하게 되면 LGWR 은 Redo log buffer 에 기록되어진 내용들을 Redo log file 에 내려 쓴다. (아직 DBWR 이 실행하기 전 상태 - 즉, Data file 에는 변경 된 값이 없는 상태이다.)
5) 이 때, B 사용자가 원래의 값인 홍길동을 조회하려고 select 를 한다면, DB cache 에서 바로 불러오는 것이 아닌 (이미 해당 블록에는 일지매로 변경되어 있기 때문에) Undo log 에 있는 원래의 값을 DB cache 로 불러와서 select 를 한다. 이게 바로 CR (Consistent Read) 이다.
- LGWR 이 작동하는 경우,
* commit 이 발생 했을 때,
* Redo log buffer 가 1/3 이 찼을 때,
* Redo log buffer 에 변경량이 1M가 되었을 때,
* DBWR 이 내려 쓰기 전에,
3. PMON (Process Monitor)
- DB 서버는 정상적으로 켜진 상태에서 비정상적으로 종료된 프로세스가 있다면 (좀비 프로세스 같은..) 관련 복구 작업등을 하는 역활을 한다. (Transaction Table 의 내용 reset, 프로세스 lock 해제, 비정상 종료 프로세스의 Transaction ID 제거 등등)
- Instance 가 시작 될 때 해당 Instance 의 정보를 Listener 에 등록하고 관리하는 역활.
4. SMON (System Monitor)
- DB 서버가 완전히 커진 상태에서 (Instance Crash), Instance 를 시작 할때 Clean up 하는 역활 (Instance Recovery)
- Instance Recovery 과정을 아래와 같은 예로 들어보면,
### 상황
1) test 테이블에 A 를 입력
2) test 테이블에 B 를 입력
3) commit 수행 ( --> 위의 LGWR 에서 봤듯이, commit 을 했다고 해서 실제 Data file 에 저장이 되는 것이 아니라, 변경된 내용들을 Redo log file 에 내려쓰게 된다.)
4) test 테이블에 C 입력
5) 정전발생으로 DB 서버가 비정상 종료 됨.
- 위와 같은 상황에서 startup 을 수행하면 아래와 같은 순서로 recovery 가 된다.
## Recovery
1) Parameter file 을 읽어서 nomount 단계에서 instance 생성
2) Mount 단계에서 control file 의 내용을 확인해서 Instance crash 확인
3) Redo log file 에서 위의 1~4 단계인 A, B 입력 -> commit -> C 입력 수행 (Roll Forward)
4) DB open
5) commit 이 안되었던 4번 C 입력 부분을 취소 (Roll Backward)
5. CKPT (Checkpoint Process)
- DBWR 에게 Checkpoint 신호를 전달, Control File 과 Data file Header 에 해당 checkpoint 정보를 기록하는 역활을 한다.
'Oracle > Admin' 카테고리의 다른 글
[Oracle Admin] Chap 5. Control File 관리하기 (0) | 2013.09.09 |
---|---|
[Oracle Admin] Chap 4. Oracle 시작하기와 종료하기 (0) | 2013.09.08 |
[Oracle Admin] Chap 2. SQL 문장의 실행 원리 (0) | 2013.09.08 |
[Oracle Admin] Chap 1. Oracle server 구조 (0) | 2013.09.08 |
Archive/No Archive log mode (0) | 2013.08.02 |