C. Oracle
oracle 프로세스 영역
sfeg
2018. 1. 18. 21:25
1. 필수 프로세스
* PMON(Process Monitor)
: 오라클에 서버에서 사용되는 각 프로세스들을 감시하는 프로세스
- 비정상 종료된 데이터베이스의 접속을 정리 합니다.
- 정상적으로 작동하지 않는 프로세스들을 감시하여 종료 시키며,
비정상적으로 종료된 프로세스들에게 할당된 SGA 리소스를 재사용 가능하게 합니다.
- 커밋되지 않은 트랜잭션을 롤백시킵니다.
* SMON(System Monitor)
: 오라클 인스턴스를 관리 하는 프로세스
- 오라클 인스턴스 fail시 인스턴스를 복구하는 역할을 합니다
- 데이터 파일의 빈 공간을 연결하여 하나의 큰 빈공간으로 만듭니다.
- 더 이상 사용하지 않는 임시 블록 세그먼트들을 재사용 할수 있게 합니다.
* DBWR(Database Writer)
: 버퍼 캐시에 있는 수정된(Dirty) 버퍼의 내용을 데이터 파일에 기록 합니다.
( write all dirty buffers to datafiles )
☞ DBWR이 발생하는 이벤트
- 더티 버퍼 수가 임계값에 도달 했을때
(The number of dirty buffers reaches a threshold value)
- 프로세스가 지정된 갯 수의 블록을 스캔 하고도 Free Buffer를 하나도 발견하지 못했을 때
- 시간이 초과 했을 때 --> 3초 동안 작업이 중단 될 때(A time-out occurs)
- DBWR checkpoint occurs
( write all dirty buffers to datafiles )
☞ DBWR이 발생하는 이벤트
- 더티 버퍼 수가 임계값에 도달 했을때
(The number of dirty buffers reaches a threshold value)
- 프로세스가 지정된 갯 수의 블록을 스캔 하고도 Free Buffer를 하나도 발견하지 못했을 때
- 시간이 초과 했을 때 --> 3초 동안 작업이 중단 될 때(A time-out occurs)
- DBWR checkpoint occurs
* LGWR(Log Writer)
: 데이터베이스 캐쉬에서 발생한 모든 변화를 기록하는 역할을 합니다. 리두로그 버퍼의
내용을 리두로그 파일에 저장
내용을 리두로그 파일에 저장
☞ LGWR프로세스에 의해 리두 로그 버퍼가 디스크에 저장되는 시점
- 데이터베이스 커밋(commit)이 수행되었을 때.
- 리두 로그 버퍼가 1/3이상 찼을 때
- 체크 포인트에 의한 DBWR 프로세스의 작업이 요구될 때
- LOG_CHECKPOINT_TIMEOUT파라미터 설정 시간에 의해 TIME-OUT이 발생할 때.
2. 기타 프로세스
* CKPT(Check Point) :
- 모든 변경된 데이터베이스 버퍼를 디스크 내의 데이터 파일로 저장하는 것을 보장 합니다.
- 변화된 데이터 블록의 수, 또는 일정 시간을 두고 DBWR프로세스가 데이터베이스 버퍼
(더티 버퍼)를 데이터 파일로 저장 하도록 명령하는 일을 합니다.
- 체크 포인트 발생
☞ 체크 포인트와 관련된 오라클 파라미터
- LOG_CHECKPOINT_TIMEOUT : 체크포인트가 발생할 시간 간격 설정(단위 :초)
- LOC_CHECKPOINT_INTERVAL : 체크포인트가 발생할 리두 로그 파일의 블록수 지정
- 변화된 데이터 블록의 수, 또는 일정 시간을 두고 DBWR프로세스가 데이터베이스 버퍼
(더티 버퍼)를 데이터 파일로 저장 하도록 명령하는 일을 합니다.
- 체크 포인트 발생
☞ 체크 포인트와 관련된 오라클 파라미터
- LOG_CHECKPOINT_TIMEOUT : 체크포인트가 발생할 시간 간격 설정(단위 :초)
- LOC_CHECKPOINT_INTERVAL : 체크포인트가 발생할 리두 로그 파일의 블록수 지정
☞ 체크포인트 발생시점
- log switch change
- log switch change
- log_checkpoint_interval
- log_checkpoint_timeout
- log_checkpoint_timeout
- shutdown
- tablespace offline
- tablespace offline
* ARCH(Archiver)
- 아카이버는 Online Redo Log File이 꽉차거나 DBA가 Alter system switch logfile의
명령어로 강제적으로 LOG SWITCH가 발생할 때 리두 로그 파일들을 지정된 저장장치로
저장하는 역할을 합니다.
- Archive log mode로 데이타 베이스 운영시 Redo Log File의 내용을 Archive Log File로
백업한다.
* LCKn(Lock)
명령어로 강제적으로 LOG SWITCH가 발생할 때 리두 로그 파일들을 지정된 저장장치로
저장하는 역할을 합니다.
- Archive log mode로 데이타 베이스 운영시 Redo Log File의 내용을 Archive Log File로
백업한다.
* LCKn(Lock)
- 오라클 병렬 서버에만 적용되며, 오라클 병렬 서버에서 다수의 오라클 인스턴스 사이에서
Locking을 수행 합니다.
Locking을 수행 합니다.
* RECO(Recovery)
- 데이터베이스 복구시에 시작되는 프로세스 입니다.
* Pnnn(Parallel Query)
- 오라클 병렬서버에서, 병렬 질의를 제공 합니다.
* SNPn(Shapshot Refresh)
- 자동으로 Shapshot Table을 갱신 할 때 사용
* Snnn(Shared Server)
- Multi Threaded Server구성에서 여러 클라이언트 요청에 응답함
* Dnnn(Dispatcher)
- 다수의 사용자 프로세스가 서버프로세스를 공유하도록 하여 Multi Thread 구성을 지원
3. 서버 프로세스, 유저 프로세스
* 서버 프로세스(server Process)
- 오라클 서버 프로세스는 사용자로부터 받은 요구사항(SQL문)을 처리 합니다.
(전달받은 SQL문을 Parse, 실행(Execute), 페치(Fetch))
- 서버에서 실행 됩니다.(Runs on the server machine)
- 각 서버 프로세스는 사용자 프로세스를 하나씩 담당 합니다
- 각 서버 프로세스는 PGA(Program Global Area)라고 불리우는 메모리 영역을 사용합니다.
☞ Parse, Execute, Fetch 과정
① Parse
- SQL문 문법 검사
- 사용자 인증 및 권한 검사
- 객체의 사용 가능 여부 검사
- 오라클 서버 프로세스는 사용자로부터 받은 요구사항(SQL문)을 처리 합니다.
(전달받은 SQL문을 Parse, 실행(Execute), 페치(Fetch))
- 서버에서 실행 됩니다.(Runs on the server machine)
- 각 서버 프로세스는 사용자 프로세스를 하나씩 담당 합니다
- 각 서버 프로세스는 PGA(Program Global Area)라고 불리우는 메모리 영역을 사용합니다.
☞ Parse, Execute, Fetch 과정
① Parse
- SQL문 문법 검사
- 사용자 인증 및 권한 검사
- 객체의 사용 가능 여부 검사
② Execute
- 파스 과정에서 만들어진 파스 트리로 원하는 데이터를 찾음
- 데이터를 찾은 후 실제 데이터 Read 수행
- 필요할 경우 데이터 수정
- 파스 과정에서 만들어진 파스 트리로 원하는 데이터를 찾음
- 데이터를 찾은 후 실제 데이터 Read 수행
- 필요할 경우 데이터 수정
③ Fetch
- 데이터를 사용자 프로세스 에게 전달
- 데이터를 사용자 프로세스 에게 전달
ps. PGA (Program Global Area )
◈ Process global area라고도 합니다.
◈ 단일 프로세스에 대한 데이터 및 정보를 갖고 있는 메모리 영역.
◈ Not shared and not writable
◈ Sort Areas : 데이터를 소트하는 메모리 영역(SORT_AREA_SIZE)
◈ Stack space (스택 공간) : containing the session variables(세션 변수를 포함함)
◈ PGA는 프로세스가 생성될 때 할당되며 프로세스가 종료될 때 해제 됩니다
◈ 단일 프로세스에 대한 데이터 및 정보를 갖고 있는 메모리 영역.
◈ Not shared and not writable
◈ Sort Areas : 데이터를 소트하는 메모리 영역(SORT_AREA_SIZE)
◈ Stack space (스택 공간) : containing the session variables(세션 변수를 포함함)
◈ PGA는 프로세스가 생성될 때 할당되며 프로세스가 종료될 때 해제 됩니다
* 사용자 프로세스(User Process)
- 사용자가 오라클 Application Program을 실행 시켰을 때 사용되는 프로세스 입니다.
ex)SQL*Plus, Forms, Pro*C
- 사용자가 오라클 Application Program을 실행 시켰을 때 사용되는 프로세스 입니다.
ex)SQL*Plus, Forms, Pro*C
- 사용자가 오라클 서버에 접속할 때마다 사용자 프로세스가 생성됩니다.