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

[Oracle] Oracle Data Guard 설치(3)

by gwon_s 2025. 12. 24.

🧭 전체 로드맵 (끝까지 이 순서대로)

1️⃣ VirtualBox 설치
2️⃣ VirtualBox 네트워크 구성
3️⃣ Oracle Linux VM 2대 생성
4️⃣ OS 기본 설정
5️⃣ Oracle 19c 설치 (Primary)
6️⃣ ARCHIVELOG / FORCE LOGGING
7️⃣ Standby 준비
8️⃣ RMAN DUPLICATE
9️⃣ Data Guard 동작 확인
🔟 Switchover / Failover 테스트

 

1~7번 단계는 이전 글에서 이미 진행했으므로, 진행하지 않았다면 먼저 이전 글을 참고해 주세요.

 

 

[Oracle] Oracle Data Guard 설치(2)

🧭 전체 로드맵 (끝까지 이 순서대로)1️⃣ VirtualBox 설치2️⃣ VirtualBox 네트워크 구성3️⃣ Oracle Linux VM 2대 생성4️⃣ OS 기본 설정5️⃣ Oracle 19c 설치 (Primary)6️⃣ ARCHIVELOG / FORCE LOGGING7️⃣ Standby

gwon-s.tistory.com

 


 

1️⃣ Primary DB에서 Data Guard 필수 파라미터 설정

🔹 Primary에서 SYS 접속

 
sqlplus / as sysdba

 

✔ Data Guard 구성 선언

ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(DGPRI,DGSTBY)' SCOPE=BOTH;

 

✔ Standby로 redo 보내는 경로

ALTER SYSTEM SET LOG_ARCHIVE_DEST_2= 'SERVICE=DGDB_STBY ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DGSTBY' SCOPE=BOTH;
 
✔ Primary 자신 설정
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1= 'LOCATION=/u01/app/oracle/fast_recovery_area VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=DGPRI' SCOPE=BOTH;

 

✔ 자동 파일 관리

ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO SCOPE=BOTH;

 

✔ 강제 로그 (이미 했다면 OK)

ALTER DATABASE FORCE LOGGING;
 

2️⃣ Primary에서 Password File 복사 (중요)

Data Guard는 SYS 인증이 필요함.

Primary에서

cd $ORACLE_HOME/dbs scp orapwDGDB oracle@standby:$ORACLE_HOME/dbs/
Standby에도 같은 파일 있어야 함.

 


3️⃣ 네트워크 사전 테스트 (꼭 해라)

Primary에서

tnsping DGDB_STBY
 
 

Standby에서:

tnsping DGDB_PRI

👉 OK 안 뜨면 RMAN 100% 실패


4️⃣ RMAN DUPLICATE 실행 (핵심)

🔹 Primary 서버에서 oracle 계정

rman target sys/[패스워드]@DGDB_PRI auxiliary sys/[패스워드]@DGDB_STBY

(패스워드는 SYS 비밀번호)


🔥 RMAN DUPLICATE 명령 (그대로 복붙)

DUPLICATE TARGET DATABASE
	FOR STANDBY
    FROM ACTIVE DATABASE
    DORECOVER
    SPFILE
    	SET db_unique_name='DGSTBY'
        SET audit_file_dest='/u01/app/oracle/admin/DGSTBY/adump'
        SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(DGPRI,DGSTBY)'
        SET LOG_ARCHIVE_DEST_2=
        	'SERVICE=DGDB_PRI ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DGPRI'
        SET FAL_SERVER='DGDB_PRI' 
        SET FAL_CLIENT='DGDB_STBY' 
    NOFILENAMECHECK;

🧠 이 명령이 하는 일 (아주 중요)

  • FROM ACTIVE DATABASE
    → 백업 파일 없이 네트워크로 바로 복제
  • FOR STANDBY
    → Standby 컨트롤파일 자동 생성
  • DORECOVER
    → 복제 후 바로 redo apply
  • SPFILE
    → Standby용 spfile 자동 생성
  • NOFILENAMECHECK
    → 같은 서버/경로라도 허용 (로컬 VM 필수)

👉 이 한 번으로 Standby DB가 자동 생성됨


5️⃣ 성공 시 확인할 로그

마지막에 이런 메시지 나오면 성공:

Finished Duplicate Db at ...

 

Standby 서버에서

sqlplus / as sysdba
SELECT name, open_mode, database_role FROM v$database;

 

정상 결과

DGDB | MOUNTED | PHYSICAL STANDBY

6️⃣ Redo Apply  적용 및 확인

Standby에서

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE
	USING CURRENT LOGFILE
	DISCONNECT FROM SESSION;
SELECT process, status FROM v$managed_standby;

MRP0 가 APPLYING_LOG 상태면 완벽

 

 

추가 검증을 하고 싶다면 아래 글을 참고해주세요.

 

[Oracle] Data Guard 반영 검증(Primary → Standby)

✅ 시나리오Primary에서 트랜잭션 발생 → Redo 전송 → Standby에서 APPLY → 조회로 반영 확인 0️⃣ 전제 조건 (지금 상태)Standby: READ ONLY + APPLYv$managed_standby에 MRP0, APPLYING_LOG 또는 WAIT_FOR_LOG 보이는 상

gwon-s.tistory.com