프로세스 분업

유저 프로세스 (클라이언트 프로세스)

약자풀네임기능
UPUser Process (Client Process)사용자가 실행한 SQL을 DB에 전송하고, 서버로부터 결과를 수신/표시. 네트워크 세션(SQL*Net) 관점의 요청/응답 담당. (DB 블록 변경, redo/undo 생성 같은 DB 내부 작업은 하지 않음)

서버 프로세스 (사용자 프로세스)

약자풀네임기능
SPServer Process (Dedicated/Shared)사용자의 SQL을 파싱 → 최적화 → 실행하고, 결과를 사용자에게 반환
PARSEParse (Hard/Soft)SQL을 파싱하고(구문/의미 검사), 라이브러리 캐시 조회/적재, 필요 시 하드파스(최적화/커서 생성) 수행
BINDBind / Bind peeking바인드 값을 적용해 실행(필요 시 바인드 기반 최적화 영향)
EXECExecute실행 계획에 따라 인덱스/테이블 접근, 조인/정렬/집계 등을 실제 수행
FETCHFetch결과 로우를 읽어 사용자에게 전달(배치 단위로 반복)
BUFGETBuffer Cache Get필요한 블록을 버퍼 캐시에서 찾거나 없으면 디스크에서 읽도록 요청(물리 I/O 유발 가능)
READConsistent Read (CR)SELECT를 위해 SCN 기준 일관 읽기를 제공: 필요 시 Undo를 이용해 블록을 과거 버전으로 재구성
UNDOUndo generation/useDML 시 Undo(롤백 정보) 생성, 조회 시 CR용으로 Undo를 사용, 롤백 시 Undo 적용
REDORedo generationDML로 발생한 변경을 설명하는 Redo entry를 생성하고 Redo Log Buffer에 기록(redo copy/allocate)
LCKLock enqueue (TX/TM 등)DML 수행을 위해 행 잠금(TX), 테이블 관련 잠금(TM) 등 엔큐 리소스 획득/해제, 대기 관리
ITLITL / Transaction slot management블록의 ITL 슬롯 할당, 트랜잭션 정보 기록(블록 헤더/undo 세그먼트와 연계)
PINLibrary cache pin/lock실행 중 커서/오브젝트 정의를 보호하기 위해 라이브러리 캐시 핀/락을 획득
LATCHLatch/Mutex usageSGA 구조 보호를 위한 래치/뮤텍스 획득(예: cache buffers chains, shared pool 관련 등)
SORTSort (PGA/Temp)ORDER BY/GROUP BY/HASH 조인 등에서 PGA에서 정렬/해시, 부족 시 TEMP에 스필
TEMPTemporary segment use대용량 정렬/해시/분석함수 수행 시 TEMP 세그먼트 할당/사용/해제
COMMITCommit processingCOMMIT 시 커밋 레코드 생성 및 LGWR flush 대기(커밋 성공의 핵심 경로), 잠금 해제 트리거
WAITWait / Timeout handlingI/O, 락, 래치, 버퍼 경합 등에서 대기 이벤트 발생/해소, 세션 레벨 타임아웃 처리
NETNetwork / SQL*Net결과를 패킷으로 만들어 전송하고, 클라이언트 요청을 수신(전송 병목 시 영향)

로그 버퍼에 로그를 기록하는 것은 백그라운드 프로세스가 아니라, DWL 을 수행하는 각 사용자 프로세스다. 사용자 프로세스가 로그 버퍼에 로그를 기록하고, 데이터 블록을 변경한 이후, LGWR 가 주기적으로 로그 버퍼 엔트리를 REDO 로그 파일에 기록한다.

백그라운드 프로세스

약자풀네임기능
SMONSystem monitor장애가 발생한 시스템을 재기동할 때 인스턴스 복구를 수행하고, 임시 세그먼트와 익스텐트를 모니터링
PMONprocess monitor이상이 생긴 프로세스가 사용하던 리소스를 복구
DBWNdatabase writer버퍼캐시에 있는 dirty 버퍼를 데이터파일에 기록
LGWRlog writer로그 버퍼 엔트리를 redo 로그 파일에 기록
ARCnarchiver꽉 찬 redo 로그가 덮여 쓰여지기 전에 archive 로그 디렉터리로 백업
CKPTcheckpoint이전에 checkpoint 가 일어났던 마지막 시점 이후의 db 변경사항을 데이터 파일에 기록하도록 트리거링
기록이 완료되면 현재 어디까지 기록했는지를 컨트롤 파일과 데이터파일 헤더에 저장한다.
RECOrocverer분산 트랜잭션 과정에 발생한 문제를 해결한다