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

MCP(Model Context Protocol)

오늘은 AI 생태계에 혁신적인 변화를 가져올 것으로 예상되는 MCP(Model Context Protocol)에 대해 상세히 알아보겠습니다. 2024년…

2주 ago

TPM(Trusted Platform Module)

1. TPM이란? TPM(Trusted Platform Module)은 국제 표준 기반의 보안 하드웨어 칩으로, 컴퓨터나 디지털 장비 내에서…

2주 ago

BitLocker

BitLocker는 Microsoft Windows 운영 체제에 내장된 디스크 전체 암호화(Full Disk Encryption) 기능입니다. 기업 환경뿐만 아니라…

2주 ago

《데블스 플랜 시즌2》: 게임인가, 연애인가? 소희 이렇게까지..?

시즌2, 기대했는데... 실망도 두 배!두뇌싸움을 기대했는데, 전략도 없는 자기들만의 감정에 따른 편가르기, 정치싸움이 되어 버린…

2주 ago

BPF도어(BPFdoor)

BPF(Berkeley Packet Filter) 도어는 해커가 관리자 몰래 뒷문을 새로 만든 것입니다.해커가 명령을 내려 특정 데이터들을 뒷문을…

2주 ago

IPC (Inter-Process Communication)

1. IPC의 개념과 목적 1.1 IPC란 무엇인가? IPC (Inter-Process Communication)는 운영체제 내의 서로 독립적인 프로세스…

3주 ago