[DB] Oracle Log (Redo, Undo, Archive)

mingsso·2025년 7월 13일

CS

목록 보기
36/37

1️⃣ Redo Log

커밋된 변경 내용을 기록해, 장애 복구 시 사용함 (재실행)
변경 작업(Insert, Update, Delete 등)이 수행될 때마다 Redo 로그 버퍼에 기록되고, 일정 크기나 시간에 도달하면 디스크에 영구 저장됨

  • Online Redo 로그
    • Redo 로그 버퍼에 버퍼링된 로그 엔트리를 기록하는 파일로서, 최소 두 개 이상의 파일로 구성됨
    • 현재 사용 중인 Redo 로그 파일이 꽉 차면, 다음 Redo 로그 파일로 로그 스위칭이 발생
    • 모든 Redo 로그 파일이 꽉 차면, 다시 첫 번째 Redo 로그 파일부터 재사용하는 라운드로빈 방식을 사용
  • Archived Redo 로그
    • Online Redo 로그가 재사용되기 전에 다른 위치로 백업해둔 파일
    • Redo 로그 파일은 '덮어쓰기 방식'이기 때문에, 일정 시간이 지나면 과거 로그가 사라져 보존용으로 따로 저장하는 것

Redo Log 버퍼

  • SGA(System Global Area) 안에 있는 메모리 공간
  • 트랜잭션이 변경한 내용 (ex. INSERT, UPDATE 등)이 여기에 잠시 임시저장됨
  • 사용자가 쿼리를 수행함 -> 변경사항을 Redo Log 버퍼에 저장함 -> 일정 시점/조건에 따라 Online Redo 로그 파일에 기록됨

메모리는 디스크보다 훨씬 빠르니까, 성능 향상을 위해 변경사항을 메모리에서 먼저 처리하고
이후 LGWR 프로세스가 디스크(Online Redo 로그)에 기록하는 것!

  • LGWR가 Redo 로그 버퍼를 Redo 로그에 기록하는 시점
    • 3초마다 DBWR 프로세스로부터 신호를 받을 때
    • 로그 버퍼의 3분의 1 이상이 차거나, 기록된 Redo 레코드양이 1MB 이상일 때
    • 사용자가 커밋 또는 롤백 명령을 내릴 때


사용자에게 Success Code가 반환되었다면, 변경 내용은 아직 디스크에 기록되지 않았더라도 메모리(Redo Log 버퍼)에 안전하게 저장된 상태임
만약 그 이후에 인스턴스 장애가 발생하더라도, Redo 로그를 통해 언제든지 변경 내용을 복구할 수 있음

profile
🐥👩‍💻💰

0개의 댓글