User Process |
사용자가 작성한 sql 문장을 server process로 전달해 주고 결과를 가져오는 프로세스 |
Server Process |
user process 가 전해준 sql 문장을 실제 수행하는 프로세스 |
Background Process |
oracle server 가 시작되면 자동으로 시작되어 운영과 유지를 담당하는 프로세스 |
1. 필수 Background process
(1) DBWR( Database Writer )
- Database Buffer Cache 에서 변경된 블록을 데이터 파일로 저장하는 역할
DBWR 이 DB Buffer Cache 의 Dirty Buffer 의 내용을 파일에 내려쓰는 경우
1. Checkpoint 신호가 발생했을 때
2. Dirty Buffer 가 임계 값을 지났을 때 -- 1/3 데이터를 사용했을 때
3. Time out 이 발생했을 때 -- 3초동안 작업이중지됬을때
(2) LGWR( Log Writer )
- 데이터가 변경되면 Server Process 가 변경 내역( Change Vector )을 Redo Log Buffer 에 기록
그리고 LGWR은 Redo Log Buffer 에 있는 내용을 디스크의 Redo Log File 로 저장
1. Commit 이 발생했을 때
2. Redo Log Buffer 에 데이터가 1/3 이 찼을 때
3. 변경량이 1M 가 되었을 때
4. 3초 마다
5. DBWR이 내려쓰기 전에
Redo Log Buffer 에 있는 내용을 Redo Log File 에 내려쓰는 이유 : 서버가 꺼지면 데이터가 다 날아갈 수 있기 때문에
(3) PMON( Process Monitor ) - 서버프로세스들의 대장
- PMON 은 모든 서버 프로세스들을 감시하고 비정상적으로 종료된 프로세스가 있다면 관련 복구작업등을 하는 역할
(4) SMON ( System Monitor )
주요 업무
- 인스턴스가 비정상 종료 되었을 경우( Instance Crash ) 인스턴스를 시작할 때 Clean Up 하는 역할( Instance Recovery )
- 어떤 사정이 ( File 에러나 Tablespace 가 offline 상태 ) 있어서 Instance Recovery 과정에서 누락된 Transaction 을 Recovery 하는 역할도 담당
- 비정상 종료된 Transaction 이 사용 중이던 Temporary Segment 를 Clean Up 하는 역할
- Dictionary Managed Tablespace 에서 Free extents들을 모아주는 역할
비정상 종료후 Instance Recovery 하는 과정
1. Parameter file 을 읽어서 nomount 단계에서 instance 를 생성
2. Mount 단계에서 Control file 의 내용을 확인해서 Instance Crash 상황임을 확인
3. Redo log file 에서 비정상 종료 되기전수행하던 작업을 다시 수행 ( Roll Forward 라고함 )
이때 중요한 것은 종료되기전에 작업을 수행했을 때 commit을 했어도 commit후에 수행했던 작업들도 다시 수행됨
예) 1. a 입력
2. b 입력
3. commit
4. c 입력
5. db 비정상 종료됨
이경우 4번도 수행됨
4. database 를 open
5. commit 안된 4번작업을 취소 ( roll backward라고함)
(5) CKPT ( Checkpoint Process )
CKPT Process 는 DBWR 에게 Checkpoint 신호를 전달해 주며 Control File 과 Data file Header 에 해당 Checkpoint 정보를 기록하는 역할
checkpoint 정보에는 checkpoint 위치와 SCN, 해당 내용을 담고있는 Redo log 내용의 위치값을 담고 있음
'오라클 > 관리 실무' 카테고리의 다른 글
Oracle 저장구조 (0) | 2014.10.23 |
---|---|
Tablespace 와 Data File 관리하기 (2) | 2014.10.21 |
Redo Log 관리하기 (0) | 2014.10.20 |
Control File 관리하기 (0) | 2014.10.20 |
ORACLE 시작하기 & 종료하기 (0) | 2014.10.20 |
SQL 문장의 실행 원리 (0) | 2014.10.17 |
Oracle Architecture (2) | 2014.10.17 |