이전 포스트 : [Oracle] Select 문장의 실행 원리
다음 포스트 : [Oracle] Oracle 시작/종료하기
Background Process
: Oracle Server가 시작되면 자동으로 시작되어 운영과 유지를 담당하는 프로세스
User Process
, Server Process
는 사용자가 접속하면 생성되고, 사용자가 접속을 종료하면 사라지게 되는 반면 Background Process
는 Oracle Server가 시작되면 같이 시작되고, 종료되면 같이 종료됩니다.
필수 Background Process의 경우 프로세스에 문제가 발생하면 DB가 강제 종료될 수 있으므로 잘 관리해야 합니다.
DB Buffer Cache의 Dirty Buffer의 내용을 Data File에 저장
하는 역할을 수행합니다.
dbwr는 아래와 같은 경우일 때 자신의 역할을 수행합니다.
dbwr Background Process
는 기본적으로 dbw0
하나가 작동하지만 멀티 프로세서 시스템에서는 dbw1 ~ dbw9
까지 사용해서 성능을 높일 수 있습니다.
트랜잭션이 발생하면 Server Process는 변경 사항을 Redo Log Buffer에 기록합니다. lgwr
는 Redo Log Buffer
에 있는 내용을 Database
의 Redo Log File
에 기록합니다.
(Redo Log Buffer
의 내용은 메모리에 있기 때문에 서버가 꺼지면 내용이 다 날아갈 수 있으므로 안전하게 Redo Log File
에 저장하는 것입니다)
lgwr
는 아래의 경우에 역할을 수행합니다.
commit
발생1/3
이 찼을 때1M
일 때3초
마다dbwr이 동작하기 전
에한편 commit
을 수행하면 디스크의 Data File이 변경되는 것이 아니라 Redo Log File에 기록
됩니다(혼동하면 안됩니다). 왜 그럴까요?
오라클에서 데이터는 블록 단위로 옮겨집니다. 블록 안에서 특정 데이터가 변경되었다고 8K나 되는 블록 자체를 매번 기록하게 되면 성능이 많이 저하될 것입니다. 게다가 변경된 블록을 저장하기 위해 Data File에서 일치하는 블록을 찾는 시간도 많이 소요될 것입니다. Redo Log File
에는 차례대로 이어서 변경 사항을 기록하면 되기 때문에 빨리 기록될 수 있습니다.
Group Commit
: 여러 사용자가 한꺼번에 commit을 했을 때 한꺼번에 Redo Log File에 기록하는 기법
만약 commit 요청이 들어왔는데 Redo Log File이 없을 경우 Alert Log
파일에 해당 에러 내용을 기록해두고 lgwr은 다음 commit 요청을 수행하지 않고 대기합니다.
모든 Server Process를 모니터링하고 비정상적으로 종료된 프로세스를 복구하는 등의 작업을 수행합니다.
예를 들어 어떤 Server Process가 비정상적으로 종료되었다면,
Transaction Table
의 내용을 모두 ResetTransaction ID
를 시스템에서 제거Lock
해제smon의 업무는 아래와 같습니다.
인스턴스가 비정상 종료되었을 경우(Instance Crash
) Instance Recovery
역할을 수행합니다.
Instance Recovery 과정에서 누락된 Transaction을 Recovery
비정상 종료된 Transaction 이 사용하고 있던 Temporary Segment를 Clean up
Dictionary Managed Tablespace에서 free extents들을 모아주는 역할
어떤 사용자가 test 테이블에 아래와 같이 작업했다고 합시다.
그리고 이후에 인스턴스가 비정상 종료되었을 때 smon
은 Instance Recovery
를 수행합니다.
no mount
단계에서 Instance를 생성합니다.Mount
단계에서 Control 파일의 내용을 확인해 Instance Crash
상황임을 인지합니다.1 ~ 4
번까지의 작업을 다시 수행(Roll Forward
)합니다.open
합니다.commit
이후의 작업을 롤백(Roll Backward
)합니다.위 복구 과정은
Online Redo Log File
에 내용이 있을 경우에만 가능하며Archived Redo Log File
에 내용이 존재할 경우 복구할 수 없습니다.
dbwr에게 checkpoint 신호를 전달
합니다.
(dbwr의 작동 조건은 checkpoint 신호
를 받았을 때입니다)
Control File과 Data File Header에 checkpoint 정보
를 저장합니다.
CheckPoint 정보
mmon
: AWR(Automatic Workload Repository) 관련 다양한 작업을 수행합니다.mmnl
: ASH(Active Session History) 정보를 디스크로 옮기는 작업을 수행합니다.분산 DB 환경에서 Transaction 처리 도중 장애가 발생했을 때 Transaction을 복구
시켜 주는 작업을 수행합니다.
Archive Log Mode
로 데이터베이스를 운영할 경우 Online Redo Log File
을 아카이빙 해 주는 작업을 수행합니다.
(Archive Log Mode
가 아닐 경우에는 동작하지 않습니다)
오라클에서 제공하는 Job
기능을 수행하는 프로세스입니다. Oracle Job이란 어떤 작업을 미리 정해진 시간에 정해진 옵션으로 예약해서 실행하게 해 주는 편리한 기능입니다(Like cron
).
오라클에서는 Flashback을 수행할 때 Undo data를 이용하는 기능이 있는데 다른 프로세스가 Undo data를 덮어 써버릴 경우 Flashback을 수행할 수 없게 되는 단점이 있습니다.
FBDA
는 11g
부터 나온 Background Process로, 다른 프로세스가 Undo data를 덮어 쓰기 전에 아카이빙 해줍니다.
참고