IT_공부장/Oracle

Oracle 아키텍쳐 용어 정리 및 흐름도, 트랜잭션

에러노트 2025. 7. 9. 10:57

안녕하세요. 오늘은 oracle 아키텍쳐에서 흐름도와 용어 정리를 한 번 해보려고 합니다.

처음에 이해하기엔 아래처럼 간단하게 생각했었습니다.

사용자가 데이터를 변경하면 → 메모리에 잠시 저장되고 → COMMIT 하면 디스크에 반영 → 나중을 위해 로그 백업도 따로 저장됨

하지만 아키텍쳐 관련 이미지들을 찾아보면, 생각보다 처음 보는 용어와 함께 정확한 순서의 흐름을 스스로 이해하고 있지 않았다는 것을 알 수 있었습니다.

용어 정리를 먼저 해보겠습니다.

각 구성요소 역할

SGA 공유 메모리 공간 (데이터 캐시, 로그 등 처리)
Buffer Cache 변경된 데이터를 임시 저장
Redo Log Buffer 변경 "기록"을 저장 (복구용)
Undo 롤백할 수 있게 이전 상태를 기억
DB Writer (DBWR) Buffer → Datafile로 기록
Log Writer (LGWR) Redo Log Buffer → Redo Log 파일로 기록
Archived Log Redo 로그를 백업한 파일 (장기 복구용)
Datafile 진짜 데이터 저장소 (디스크에 있음)

 

좀 더 흐름을 자세하게 설명하자면, 아래와 같습니다. 


[1] 사용자 SQL 실행
       ↓
[2] 인스턴스(SGA)에 요청 도착
       ↓
[3] 데이터베이스 버퍼 캐시 (Buffer Cache)에 변경 사항 반영
       ↓
[4] Redo Log Buffer에 "변경 이력" 저장
       ↓
[5] COMMIT 발생
       ↓
[6] DB Writer 프로세스가 Datafile에 변경 내용 영구 저장
       ↓
[7] LGWR(Log Writer)가 Redo 로그 파일로 Redo Log Buffer 내용 저장
       ↓
[8] Redo 로그가 가득 차면 → Archive 로그 파일로 복사됨

키 포인트는 다음과 같습니다.  

 

  • Buffer Cache = 변경 내용만 있는 임시 메모리 (DB Writer가 나중에 Datafile에 씀)
  • Redo Log Buffer = 변경 "이력"을 저장 (LGWR가 Redo Log로 기록)
  • COMMIT을 해야 진짜 저장됨
  • 아카이브 로그는 Redo 로그를 복구용으로 오래 보관하기 위한 백업 파일

 

간단하게 정리하면

사용자가 데이터를 바꾸면, 변경 내용은 먼저 메모리에 임시 저장되고, 이력이 로그에 기록되며, COMMIT 시 디스크에 확정 저장되고, 나중엔 복구용으로 로그가 백업(아카이브)된다.