Oracle의 Write-Ahead Logging (WAL)

Oracle에서는 Write-Ahead Logging (WAL) 개념이 Redo Log와 Undo Log를 통해 구현됩니다. WAL은 데이터를 디스크의 데이터 파일에 기록하기 전에, 먼저 로그(redo log)에 기록하는 기법으로, 장애 발생 시 데이터 복구 및 트랜잭션의 무결성을 보장하는 핵심 기술입니다. Fast Commit시 사용되는 기법이기도 합니다.

1. Write-Ahead Logging (WAL)의 개념

  • 데이터를 직접 데이터 파일(datafile)에 기록하는 것이 아니라, 먼저 로그 파일(redo log) 에 변경 내용을 기록한 후 실제 데이터 파일에 반영
  • 트랜잭션 커밋 전에 로그를 기록하므로, 장애 발생 시 로그를 기반으로 데이터 복구가 가능
  • Redo 로그Undo 로그를 활용하여 WAL을 구현함

2. Oracle의 WAL 구조

Oracle의 WAL은 Redo Log와 Undo Log를 기반으로 작동하며, 이를 통해 데이터의 무결성을 보장합니다.

🔹 Redo Log (Redo 기록)

  • 모든 변경 사항을 기록하는 로그로, 인스턴스 장애 발생 시 복구를 위한 핵심 역할
  • DB에 변경된 데이터가 반영되기 전에, 먼저 Redo Log에 기록되므로 WAL 개념을 충족
  • Redo Log는 로그 버퍼(Redo Log Buffer) → Redo Log 파일로 플러시됨
  • LGWR (Log Writer) 프로세스가 트랜잭션 커밋 시 Redo Log를 디스크에 기록
  • 장애 발생 시 Redo 로그를 이용해 데이터 복구 가능

🔹 Undo Log (Undo 기록)

  • 데이터 변경 이전 상태를 저장하는 롤백(Rollback) 용도의 로그
  • MVCC(다중 버전 동시성 제어) 를 구현하기 위해 사용됨
  • Redo Log와 달리, 트랜잭션이 롤백될 경우 데이터를 원래 상태로 되돌리기 위해 사용됨
  • Undo Tablespace에 저장되며, DBWR 프로세스를 통해 관리

3. Write-Ahead Logging(WAL) 동작 과정

📌 데이터 변경 (INSERT, UPDATE, DELETE)

  1. 트랜잭션이 변경을 수행
    • 사용자가 INSERT, UPDATE, DELETE 등의 DML 문을 실행
  2. Redo Log Buffer에 변경 사항 저장
    • 변경된 데이터의 Redo 정보(변경 사항)Redo Log Buffer에 저장 (WAL 원칙 적용)
  3. Undo Log Buffer에 이전 데이터 저장
    • Rollback을 위한 Undo 정보를 Undo Log Buffer에 저장
  4. Redo Log가 Redo Log 파일로 기록
    • LGWR (Log Writer) 프로세스가 Redo Log Buffer의 데이터를 Redo Log 파일로 플러시(디스크 기록)
    • 이 과정이 끝나야 트랜잭션이 COMMIT될 수 있음
  5. DB Buffer Cache에 데이터 적용
    • 변경된 데이터가 DB Buffer Cache(메모리)에 존재
    • DBWR (Database Writer) 프로세스가 일정 시간 후 변경 사항을 실제 데이터 파일에 기록 (Lazy Write)
  6. 커밋 완료
    • Redo Log 파일에 기록이 완료되면, 트랜잭션이 커밋됨 (COMMIT 성공)
    • 장애 발생 시, Redo Log를 기반으로 데이터 복구 가능

4. 장애 발생 시 WAL을 이용한 복구

Oracle은 WAL을 기반으로 Instance Recovery와 Media Recovery를 수행함

✅ Instance Recovery (SGA 메모리 손실 시)

  • 전원이 나가거나, DB 인스턴스가 비정상 종료될 경우 사용됨
  • Redo 로그를 이용하여 커밋된 트랜잭션을 재적용 (Redo 적용)
  • Undo 로그를 이용하여 커밋되지 않은 트랜잭션을 롤백 (Undo 적용)

✅ Media Recovery (디스크 손상 시)

  • 데이터 파일 손실 시 백업 데이터를 복구하고, Redo 로그를 적용하여 최신 상태로 복구
  • ARCHIVELOG 모드를 사용하면 Redo 로그가 보관되므로, 장기적인 데이터 복구 가능

5. WAL의 장점

데이터 무결성 보장

  • WAL을 통해 데이터 파일보다 Redo 로그가 먼저 저장되므로 장애 발생 시 복구 가능

빠른 트랜잭션 커밋

  • COMMIT 시 데이터 파일이 아닌 Redo 로그에만 먼저 기록되므로 성능이 향상됨

비동기 데이터 저장

  • DBWR가 데이터를 Lazy Write 방식으로 기록할 수 있어 효율적인 디스크 I/O 처리 가능

장애 복구 가능

  • Redo 로그를 기반으로 커밋된 변경 사항을 복구할 수 있어 데이터 유실 방지

6. 정리

  • Write-Ahead Logging (WAL)트랜잭션이 데이터 파일을 변경하기 전에 Redo Log에 먼저 기록하는 기법.
  • Oracle에서는 Redo Log와 Undo Log를 사용하여 WAL을 구현.
  • Redo Log는 장애 발생 시 복구용, Undo Log는 트랜잭션 롤백과 MVCC(일관된 읽기) 지원.
  • WAL 덕분에 데이터 무결성을 유지하면서도 성능을 최적화할 수 있음.

🚀 Oracle WAL을 이해하면 데이터 복구 및 성능 최적화에 대한 깊은 인사이트를 가질 수 있음!

zerg96

Recent Posts

충격! 코스피 8% 폭락에 SK텔레콤 AI 차단까지 – 한국의 AI 도박이 터졌다

코스피 8% 폭락, 서킷브레이커 발동, SK텔레콤 Claude AI 차단까지. 한국의 AI 레버리지 버블이 단 하루…

1개월 ago

당신 얼굴이 이미 쓰이고 있다… AI 딥페이크 범죄, 생각보다 훨씬 심각합니다

SNS 사진 1장으로 30초 만에 딥페이크 영상이 완성됩니다. 당신의 얼굴이 이미 범죄에 악용되고 있을 수…

1개월 ago

당신 얼굴이 이미 쓰이고 있다 — AI 딥페이크 범죄, 생각보다 훨씬 심각합니다

SNS 사진 1장으로 30초 만에 딥페이크 영상이 완성됩니다. 당신의 얼굴이 이미 범죄에 악용되고 있을 수…

1개월 ago

달러·원 환율 급등, 지금 당신이 꼭 알아야 할 것들

달러/원 환율이 급등하는 이유와 실생활 영향을 정리했습니다. 지금 당장 활용할 수 있는 환전·투자 대응 전략까지…

1개월 ago

미래에셋·미래에셋벤처투자·미래에셋생명 동반 급등, 스페이스X와 무슨 관계?

미래에셋·미래에셋벤처투자·미래에셋생명이 동반 급등한 이유는 스페이스X 상장 기대감입니다. 세 회사가 스페이스X와 어떻게 연결되어 있는지 상세히 분석했습니다.

1개월 ago

스페이스X 상장 D-데이? 일론 머스크가 절대 말 안 하는 진짜 이유

스페이스X 상장이 계속 미뤄지는 진짜 이유를 파헤쳤습니다. 화성 계획, 스타링크 분리, 국방 계약... 머스크가 절대…

1개월 ago