데이터베이스의 업데이트 내역이 데이터 파일에 영구 기록되기까지의 과정을 알아보자.


데이터베이스에서 실행한 트랜잭션(transaction)들은 커밋(commit) 명령을 실행하기 이전까지는 미확정된 내용으로, 해당 유저의 세션에만 적용된다. 이 때의 내용들은 데이터베이스 버퍼 캐쉬(Buffer Cache)에 임시적으로 저장된다.

커밋 명령이 실행되면 그 이전까지의 데이터베이스 업데이트 내역이 확정된 것으로 취급되어 모든 유저의 세션에 적용되게 된다. 그러면 트랜잭션의 기록은 우선 리두 로그(Redo Log)에 기록되고, 그 뒤 실제 데이터 파일에 기록된다. 리두 로그에 남은 기록들은 추후 데이터 파일에 손상이 가해졌을 때 복구를 위해 사용된다.

오라클 데이터베이스에서 이러한 기록 작업을 수행하는 것은 배경중의 처리, 즉 백그라운드 프로세스(Background Process)들이다. DBWn(Database Writer), LGWR(Log Writer) 등의 프로세스들은 말 그대로 데이터베이스와 로그에 기록하는 작업을 관리하며, CKPT(Checkpoint)는 로그의 내용을 정기적으로 데이터 파일에 기록하는 체크포인트 작업을 수행한다.

위의 과정을 단순하게 살펴보자면 다음 그림과 같다.


AND