이전 포스트 : [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를 덮어 쓰기 전에 아카이빙 해줍니다.
참고