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

전기차 소프트웨어 전쟁, 현대차가 테슬라를 이길 수 있을까

전기차 시장이 배터리 싸움에서 소프트웨어 전쟁으로 전환됐다. 테슬라의 AI·데이터 해자 vs 현대차의 SDV 전략, 진짜…

6분 ago

미국 9월 생산자물가 1.3% 급등, 그런데 뉴욕증시는 올랐다: 10월 16일 간밤 시황

어제 미국에서 9월 생산자물가지수(PPI)가 나왔는데 숫자가 꽤 거칠었습니다. 그런데 간밤 뉴욕증시 3대 지수는 모두 올랐습니다.…

30분 ago

9월 가계대출 9개월 만에 2.2조 감소, 신용대출 3조가 줄고 주담대는 3.3조 늘었다

가계대출이 오랜만에 줄었다는 소식에 대출 문턱이 낮아지는 거냐고 묻는 분들이 많습니다. 금융당국이 10월 15일 발표한…

1시간 ago

뉴욕은 올랐는데 코스피는 7.57% 폭락 마감, 오늘(16일) 개장 전 체크할 4가지

어제 코스피가 하루에 7% 넘게 빠졌다는 소식, 아침에 확인하고 놀라신 분들 많으실 텐데요. 그런데 밤사이…

1시간 ago

사이버보안 위기 경보: 해커들이 AI로 무장했다, 당신의 데이터는 안전한가

AI가 해킹 도구로 진화했습니다. 27초 만에 공격 코드 작성, AI 봇의 랜섬웨어 협상, GPU 탈취까지—삼성SDS…

13시간 ago

정보보안기사 필기 핵심 개념, 접근통제·인증 8문제로 정리

필기 시험의 접근통제 영역은 용어 하나만 알아도 풀리는 문제와 개념을 뒤집어 묻는 문제가 섞여 나옵니다.…

18시간 ago