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 실습이었다.
'🗄️ DB_이야기 > # 🛢️ Oracle' 카테고리의 다른 글
| [Oracle] ORA-16810 / ORA-16826 (1) | 2026.01.19 |
|---|---|
| [Oracle] Data Guard 상태 및 장애 분석 (0) | 2026.01.18 |
| [ORACLE] Data Guard Failover (0) | 2026.01.16 |
| [Oracle] Data Gurad Switchover (0) | 2026.01.01 |
| [ORACLE] ORA-16736: unable to find the destination entry of member "dgpri" in V$ARCHIVE_DEST (0) | 2026.01.01 |