본문 바로가기
🗄️ DB_이야기/# 🛢️ Oracle

[Oracle] Data Guard 구성 & 운영 실습 정리

by gwon_s 2026. 1. 18.

Oracle Data Guard 구성 & 운영 실습 정리 (Broker 기반)

Oracle Data Guard를 직접 구성하고
Redo 흐름, SRL, Broker, Switchover / Failover까지 실습하면서
헷갈렸던 개념과 운영 포인트를 정리했다.


 

1️⃣ Data Guard 기본 개념 정리

📌 Data Guard 구성 요소

  • Primary DB
    → 트랜잭션 발생, Redo 생성
  • Standby DB (Physical)
    → Primary에서 전달받은 Redo를 Apply하여 데이터 동기화

📌 Redo 흐름

Primary ORL → SRL → Standby Datafile
  • ORL (Online Redo Log): Primary에서 Redo 생성
  • SRL (Standby Redo Log): Standby에서 실시간 Redo 수신
  • Apply: Standby 데이터파일에 실제 반영

 

2️⃣ Standby Redo Log(SRL) 핵심 규칙 (중요)

✔ SRL 개수 = Primary Online Redo Log 개수 + 1 (Thread 당)
✔ SRL size = Online Redo Log size와 동일
✔ Switchover 대비 → Primary / Standby 양쪽 모두 SRL 생성 권장

SRL이 부족하면
👉 DGMGRL validate 시 Insufficient SRLs 발생

 


 

3️⃣ Redo / Apply 상태 확인 쿼리 모음

🔹 Standby Apply 상태

SELECT process, status, thread#, sequence#
FROM v$managed_standby;

🔹 SRL 상태 확인 (중요)

SELECT group#, thread#, sequence#, bytes/1024/1024 AS mb, status
FROM v$standby_log
ORDER BY group#;

🔹 Primary ORL 상태

SELECT group#, thread#, sequence#, status
FROM v$log
ORDER BY group#;

 


 

4️⃣ Apply ON / OFF 정리 (Broker vs SQL)

MRP가 하는 일 (순서로 이해)

Primary에서 redo 발생
→ Standby로 전송
→ SRL(Standby Redo Log)에 기록
→ MRP가 SRL/Archive redo를 읽음
→ Standby Datafile에 반영
  • RFS(Remote File Server Process): redo를 받아서 SRL에 씀
  • MRP(Managed Recovery Process): 그 redo를 읽어서 Apply

 

❗ Broker 환경에서 주의사항

Broker 사용 중일 때 SQL로 MRP 제어 ❌ (비권장)
👉  반드시 DGMGRL 사용

 

🔹 Apply OFF(DGMGRL)

DGMGRL> edit database dgstby set state=apply-off;

🔹 Apply ON(DGMGRL)

DGMGRL> edit database dgstby set state=apply-on;

🔹Apply OFF(SQL)

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

🔹 Apply ON(SQL)

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;

 


 

5️⃣ Data Guard Broker 정리

Broker는 사람이 직접 하던 작업을 자동화해준다.

  • Redo Apply 시작 / 중지
  • SRL 관리
  • Delay Apply
  • 상태 감시
  • Switchover / Failover

🔹 Broker 활성화 (Primary / Standby 공통)

ALTER SYSTEM SET dg_broker_start=true SCOPE=BOTH;

 

 

🔹Broker 구성 생성 (Primary)

DGMGRL> create configuration dg_config
as primary database is DGPRI
connect identifier is DGDB_PRI;

🔹Standby 등록

DGMGRL> add database DGSTBY
as connect identifier is DGDB_STBY
maintained as physical;

🔹 Broker 활성화

DGMGRL> enable configuration;

 


 

6️⃣ 상태 점검 필수 명령어

🔹 Broker 상태

DGMGRL> show configuration;

🔹 DB별 상태

DGMGRL> show database dgpri;
DGMGRL> show database dgstby;

🔹 Redo Lag 실제 수치

SELECT name, value
FROM v$dataguard_stats
WHERE name IN ('transport lag', 'apply lag');

 


 

7️⃣ 장애 분석 시 꼭 보는 뷰

-- Transport / Apply 에러
SELECT * FROM v$dataguard_status ORDER BY timestamp;
-- Archive Gap
SELECT * FROM v$archive_gap;
-- 보호 모드
SELECT protection_mode, protection_level FROM v$database;

 

👉  장애 분석 시 꼭 보는 뷰에 대한 더 자세한 정보는 아래 글을 참고

 

[Oracle] Data Guard 상태 및 장애 분석

🔍 1단계. Data Guard 전체 상태 한눈에 확인가장 먼저 동기화 상태와 에러 존재 여부를 봅니다. SELECT name, database_role, open_mode, protection_mode, protection_level, switchover_statusFROM v$database;✅ 체크 포인트DATAB

gwon-s.tistory.com

 


 

마무리

이번 실습을 통해 느낀 점은 명확함

  • Data Guard는 Redo / SRL / Apply 구조를 이해해야 운영 가능
  • Broker는 편하지만, 문제가 나면 내부 구조를 모르면 해결 불가
  • hosts / Network / listener / TNS 등 name의 쓰임새를 정확히 이해하지 못하면 구성이 꼬임

👉 단순 구성 경험이 아니라
운영 + 장애 대응 관점에서 이해한 Data Guard 실습이었다.