Oracle Database는 안정성과 일관성을 보장하기 위한 다양한 메커니즘을 제공한다. 그 중에서도 Redo 로그(Redo Log), Undo, 아카이브 로그(Archive Log)는 트랜잭션 복구, 장애 대응, 데이터 무결성 확보의 핵심 구성 요소다. 이 글에서는 각각의 역할과 작동 방식, 그리고 상호 관계에 대해 알아보자.
1. Redo 로그 (Redo Log)
정의
Redo 로그는 데이터베이스에 수행된 모든 변경 작업의 이력을 기록하는 로그 파일이다. 즉, 데이터 블록에 어떤 변경이 발생했는지를 기록하여, 장애 발생 시 이를 기반으로 복구할 수 있도록 한다.
특징
- LGWR(Log Writer) 프로세스가 변경 정보를 디스크에 기록
- 커밋 여부와 무관하게 변경이 발생하면 Redo 로그에 먼저 기록됨
- SGA의 Redo Log Buffer에 임시 저장된 후 디스크의 Redo 로그 파일에 기록됨
역할
- 인스턴스 복구 시, Redo 로그를 재적용하여 손실된 트랜잭션 복구
- WAL(Write-Ahead Logging) 원칙을 따름: 변경 데이터보다 Redo가 먼저 기록되어야 함
이해하기 쉬운 비유 예시 : 자동 저장 기록
- 워드에서는 갑자기 컴퓨터가 꺼져도 최근 내용이 자동 복구되는 경우가 있다.
- 이건 워드가 백그라운드에서 실시간으로 변경사항을 따로 저장해 두고 있기 때문이다.
- Oracle의 Redo 로그도 마찬가지로, 데이터 변경이 발생하면 변경 이력을 실시간으로 기록해서, 시스템이 다운되어도 복구할 수 있게 도와준다.
* 비유 핵심: Redo 로그는 실시간 자동 저장 시스템. 변경이 일어난 사실을 기록하는 "변경 기록 노트" 이다.
2. Undo
정의
Undo는 트랜잭션 이전 상태를 복원하기 위한 데이터를 저장한다. 사용자가 데이터를 수정하거나 삭제할 때, 그 이전 값을 저장해두는 역할을 한다.
특징
- DML 작업이 수행되면 자동으로 Undo 세그먼트에 기록
- 아직 커밋되지 않은 트랜잭션이 롤백될 때 해당 Undo 데이터를 이용함
- Oracle은 Undo를 통해 **읽기 일관성(Read Consistency)**을 제공
주요 용도
- 트랜잭션 롤백
- 읽기 일관성 제공 (다른 세션이 커밋하지 않은 데이터에 접근하는 경우)
- Flashback Query 지원
이해하기 쉬운 비유 예시 : Ctrl + Z (되돌리기)
- 문서를 작성하다가 오타가 나서 Ctrl + Z를 누른다.
- 이 기능은 최근 작업 이전 상태를 저장해 두었다가 복원해 주는 기능이다.
- 마찬가지로, Oracle의 Undo는 "아직 확정(커밋)되지 않은 변경"을 되돌릴 수 있게 해주는 기능이다.
- 또한 다른 사람이 문서를 읽고 있는 도중이라면, 아직 저장하지 않은 변경 사항이 보이지 않게 해 주기도 한다. (→ 읽기 일관성 제공).
* 비유 핵심: Undo는 언제든 이전 상태로 되돌리기 위해 잠시 보관하는 임시 정보이다.
3. 아카이브 로그 (Archive Log)
정의
아카이브 로그는 Redo 로그 파일을 백업용으로 복사한 파일이다. Redo 로그 파일이 가득 차고 순환되기 전에, 이전 내용을 보존하기 위해 별도로 저장된다.
전제 조건
- 데이터베이스가 ARCHIVELOG 모드로 운영되어야 한다.
- 백그라운드 프로세스인 ARCH(Archiver) 가 Redo 로그를 복사하여 아카이브 로그 생성
역할
- 장애 발생 시, 백업본 + 아카이브 로그 + Redo 로그를 이용해 Point-in-Time Recovery 가능
- 장기 보관용 트랜잭션 기록으로 활용됨
- RMAN(Recovery Manager)을 이용한 복구 시 필수적
이해하기 쉬운 비유 예시 : 오래된 버전 백업
- 워드에서는 갑자기 컴퓨터가 꺼져도 최근 내용이 자동 복구되는 경우가 있다.
- 이건 워드가 백그라운드에서 실시간으로 변경사항을 따로 저장해 두고 있기 때문이다.
- Oracle의 Redo 로그도 마찬가지로, 데이터 변경이 발생하면 변경 이력을 실시간으로 기록해서, 시스템이 다운되어도 복구할 수 있게 도와준다.
* 비유 핵심: Redo 로그는 실시간 자동 저장 시스템. 변경이 일어난 사실을 기록하는 "변경 기록 노트" 이다.
4. 세 가지의 관계
구성 요소 | 용도 | 주요 저장 위치 | 관련 프로세스 |
Redo 로그 | 변경 이력 기록 및 복구 | Redo Log File (Online Log) | LGWR |
Undo | 롤백 및 읽기 일관성 | Undo Tablespace | DBWR |
아카이브 로그 | Redo 로그 백업, 장애 시 복구용 | Archive Destination | ARCH |
이들은 상호보완적으로 동작하며, Oracle의 데이터 무결성과 장애 복구 능력을 근간에서 지탱한다.
Redo, Undo, 그리고 아카이브 로그는 단순한 로그 시스템이 아니라, 오라클 DB의 트랜잭션 처리와 복구 체계의 핵심이다. 이들의 동작 방식을 정확히 이해하고 있어야 다음과 같은 업무에 대응할 수 있다.
- 인스턴스 복구 및 Media Recovery
- 트랜잭션 일관성 유지 및 롤백 처리
- 백업 및 재해 복구 전략 수립
실무에서는 이들 로그의 저장 위치, 사이즈, 보존 주기, 모니터링 방식 등도 함께 관리해야 한다. 특히 장애 발생 시 이 세 가지에 대한 이해 여부가 복구 속도와 데이터 손실 최소화를 좌우할 수 있다.
'Programming > DB' 카테고리의 다른 글
Oracle MERGE 성능 이슈 및 해결 사례 (0) | 2025.04.18 |
---|---|
SQL에서 IN, NOT IN vs EXISTS, NOT EXISTS 차이 — 그리고 NULL에 대한 함정 (0) | 2025.04.17 |
RDB에서 페이징 쿼리의 중요성과 LIMIT, OFFSET 방식의 장단점 (0) | 2025.04.13 |
오라클 힌트(Oracle Hint) 정리 – 자주 사용하는 힌트와 최적화 전략 (1) | 2025.04.08 |
오라클 SQL 최적화를 위한 Oracle 인덱스 힌트(Index Hint) 사용법과 예제 (0) | 2025.04.08 |