데이터 복구의 핵심, 리두 로그(Redo Log) 정리

오라클 데이터베이스 운영에서 가장 중요한 요소 중 하나는 데이터의 안전한 보호와 완벽한 복구입니다. 예상치 못한 정전이나 하드웨어 장애가 발생했을 때, 우리가 공들여 쌓은 데이터를 지켜주는 일등 공신은 무엇일까요? 바로 모든 변경 사항을 꼼꼼히 기록하는 리두 로그(Redo Log)입니다. 오늘은 리두 로그의 개념부터 실무 관리 방법까지 상세히 알아보겠습니다.


1. 리두 로그(Redo Log)란 무엇인가?

리두 로그는 데이터베이스에 발생하는 모든 변경 사항(DML, DDL 등)을 기록하여, 장애 발생 시 이를 바탕으로 데이터를 재현(Redo)하여 복구하는 역할을 합니다.

  • 리두 로그 버퍼 (Redo Log Buffer): 메모리 영역인 SGA 내에 위치하며, 모든 변경 이력을 실시간으로 임시 기록합니다.

  • 리두 로그 파일 (Redo Log File): 버퍼의 내용을 디스크에 영구적으로 저장하는 물리 파일입니다. LGWR(Log Writer) 프로세스가 특정 시점(3초마다, 버퍼의 1/3이 찼을 때, 커밋 시 등)에 디스크로 기록합니다.


2. 리두 로그의 구조: 그룹(Group)과 멤버(Member)

오라클은 리두 로그의 안정성을 위해 계층 구조를 사용합니다.

  • 리두 로그 멤버 (Member): 실제 디스크에 존재하는 개별 .log 파일입니다.

  • 리두 로그 그룹 (Group): 동일한 로그 내용을 공유하는 멤버들의 집합입니다.

  • 최소 구성 요건: 오라클이 작동하려면 최소 2개의 그룹이 필요하며, 각 그룹에는 최소 1개 이상의 멤버가 있어야 합니다.

💡 실무 Insight: 다중화(Multiplexing) 전략 같은 그룹의 멤버들은 반드시 서로 다른 물리적 디스크에 분산 배치해야 합니다. 만약 하나의 디스크가 고장 나더라도 다른 디스크에 있는 멤버가 살아있다면 데이터베이스는 중단 없이 운영될 수 있기 때문입니다.


3. 리두 로그의 핵심 동작 원리

리두 로그는 한정된 파일을 돌려가며 쓰는 순환 구조(Circular)로 작동합니다.

  • 로그 스위치 (Log Switch): 현재 그룹이 가득 차서 다음 그룹으로 기록 위치를 넘기는 현상입니다. 이때 **체크포인트(Checkpoint)**가 발생하여 메모리의 데이터가 디스크로 기록됩니다.

  • SCN (System Change Number): 데이터베이스의 ‘논리적 시계’입니다. 모든 리두 기록은 이 번호를 달고 저장되어 복구 시 작업의 순서를 정확히 맞출 수 있게 합니다.

  • 로그 시퀀스 번호 (Log Sequence Number): 로그 그룹이 바뀔 때마다 1씩 증가하는 고유 번호로, 관리자가 로그의 흐름을 추적하는 기준이 됩니다.


4. DBA를 위한 필수 관리 명령어

실무에서 리두 로그 상태를 점검하고 관리할 때 사용하는 핵심 SQL입니다.

① 상태 모니터링

SELECT group#, sequence#, bytes, members, status FROM v$log;
SELECT group#, member FROM v$logfile;
  • CURRENT: 현재 기록 중인 그룹

  • ACTIVE: 기록은 끝났지만, 복구에 필요하여 아직 삭제하면 안 되는 상태

  • INACTIVE: 체크포인트가 완료되어 재사용 가능한 상태

② 그룹 및 멤버 추가

-- 그룹 추가 (3번 그룹 생성)
ALTER DATABASE ADD LOGFILE GROUP 3 ('/u01/app/oracle/oradata/redo03a.log') SIZE 100M;

-- 멤버 추가 (2번 그룹에 보조 파일 추가)
ALTER DATABASE ADD LOGFILE MEMBER '/u02/app/oracle/oradata/redo02b.log' TO GROUP 2;

③ 삭제 시 주의사항

ALTER DATABASE DROP... 명령으로 논리적 삭제를 해도 OS 상의 실제 파일은 삭제되지 않으므로 반드시 수동으로 삭제해야 합니다. 또한, CURRENTACTIVE 상태의 그룹은 삭제가 불가능하므로 강제로 로그 스위치를 발생시킨 후 삭제해야 합니다.


5. 리두 로그를 이해하기 위한 비유

리두 로그는 비행기의 ‘블랙박스’와 같습니다.

비행 중 발생하는 모든 조작과 상황을 실시간으로 기록하여, 만약 사고가 발생하더라도 블랙박스 데이터를 통해 사고 직전의 상황을 완벽하게 재구성할 수 있습니다. 리두 로그 역시 DB 장애라는 ‘사고’ 발생 시, 기록된 로그를 하나씩 다시 실행(Redo)하여 데이터베이스를 사고 직전의 건강한 상태로 되돌려 놓는 안전장치입니다.


리두 로그 파일의 크기가 너무 작으면 잦은 로그 스위치로 성능 저하가 발생하고, 너무 크면 장애 시 복구 시간이 길어질 수 있습니다. 우리 시스템의 트랜잭션 양에 맞는 최적의 크기와 철저한 다중화 설계만이 데이터베이스의 평화를 지키는 길입니다.

댓글 남기기