데이터베이스 연구실.log

Active Data Guard

12.2 실습 환경의 Standby 읽기 전용 사용, 리두 적용 재개, 상태와 지연 조회 및 적용 조건

Active Data GuardREAD ONLY WITH APPLYSRL12.2

#핵심 요약

실습 ADG는 Standby를 READ ONLY로 연 상태에서 Redo Apply를 계속 수행하는 구성임

Broker가 관리하는 실습 순서는 구성 확인, SRL 확인, APPLY-OFF, Standby OPEN, APPLY-ON, 최종 상태 확인임

실습의 최종 OPEN_MODE는 READ ONLY WITH APPLY임

실습 버전은 12.2이며 Standby INSERT 오류와 19c DML Redirection 언급을 구분함

#개념과 동작 원리

상태, 조건 설명
일반 실습 상태 Primary READ WRITE, Standby MOUNTED
ADG 전환 중 APPLY-OFF 후 Standby OPEN 시 READ ONLY, PHYSICAL STANDBY
ADG 최종 상태 APPLY-ON 후 READ ONLY WITH APPLY, PHYSICAL STANDBY
Real-Time Apply SRL이 있는지 먼저 확인하고 MRP, 지연 상태를 조회
12.2 쓰기 제한 Standby INSERT 예시에서 ORA-16000 발생
버전 비교 ADG_REDIRECT_DML은 19c부터라는 설명이며 해당 기능의 설정, 실행 실습은 없음

실습에서는 ADG를 양쪽에서 직접 DML을 수행하는 구성으로 설명하지 않으며 읽기 전용 Standby를 조회에 사용하는 것으로 구분함 실습 개요는 Enterprise Edition의 별도 유상 옵션이라고 적지만 단순 READ ONLY와 리두 적용 병행을 구분하지 않은 과금 설명도 포함함 라이선스 적용 조건은 공식 문서, 계약과 대조하지 않았으므로 실습의 설명을 현재 사용 권한 판단으로 사용하지 않음

Primary, Standby의 기동, 종료와 리두 적용 순서는 Primary와 Standby 기동, 종료에서 다룸

#필수 명령어 또는 SQL

#구성과 SRL 확인

Primary 서버의 DGMGRL (SYSDBA 연결)조회만 함
show configuration;
show database '<STANDBY_UNIQUE_NAME>';

결과 해석: 실습 시작 조건은 SUCCESS, 초기 역할 배치, Transport Lag, Apply Lag 0 seconds와 Intended State APPLY-ON임

Standby SQL*Plus (SYSDBA)조회만 함
select group#, thread#, bytes/1024/1024 mb, status
  from v$standby_log;

결과 해석: 실습 SRL 보충 페이지의 생성 확인에는 4개 그룹, 각 200M, UNASSIGNED가 나옴 앞선 구축 본문은 6개 그룹, 각 100M이므로 이 수치를 대상 DB에 고정 적용하지 않음 실습에서는 SRL 추가 전 MRP를 멈추고 양쪽 DB에 SRL을 준비하라고 적음

#적용 중지, 읽기 전용 OPEN, 적용 재개

Primary 서버의 DGMGRL (SYSDBA 연결)객체 또는 설정을 변경함
edit database '<STANDBY_UNIQUE_NAME>' set state='APPLY-OFF';

결과 해석: 실습 응답은 Succeeded임

Standby SQL*Plus (SYSDBA)조회만 함
select open_mode, database_role from v$database;

결과 해석: 실습 OPEN 전 상태는 MOUNTED, PHYSICAL STANDBY임

Standby SQL*Plus (SYSDBA)객체 또는 설정을 변경함
alter database open;
Standby SQL*Plus (SYSDBA)조회만 함
select open_mode, database_role from v$database;

결과 해석: 실습에서는 Database altered와 READ ONLY, PHYSICAL STANDBY를 기록하며 아직 WITH APPLY가 아니라고 설명함

Primary 서버의 DGMGRL (SYSDBA 연결)객체 또는 설정을 변경함
edit database '<STANDBY_UNIQUE_NAME>' set state='APPLY-ON';

결과 해석: 실습 응답은 Succeeded임

Standby SQL*Plus (SYSDBA)조회만 함
select name, db_unique_name, database_role, open_mode
  from v$database;

select process, status, thread#, sequence#
  from v$managed_standby where process like 'MRP%';

select name, value, unit from v$dataguard_stats
  where name in ('transport lag','apply lag');

결과 해석: 실습 최종 상태는 PHYSICAL STANDBY, READ ONLY WITH APPLY이며 MRP0는 APPLYING_LOG로 기록되어 있음 지연 조회의 원래 값은 transport lag와 apply lag 모두 +00 00:00:00이며 현재 DB의 측정값은 아님

#실습의 반영, 읽기 전용 확인 기록

확인 실습 기록
반영 Primary에서 테스트 테이블 생성, INSERT, COMMIT 후 Standby에서 같은 행 조회
실시간 반영 설명 별도 ARCHIVE LOG CURRENT 없이 커밋 직후 조회했다고 기록
읽기 전용 Standby INSERT에서 ORA-16000: database or pluggable database open for read-only access

#사용 조건과 주의사항

ADG 본문은 WAIT_FOR_LOG를 SRL 부재, 크기 불일치로 단정하지만 앞선 Standby 본문은 같은 상태를 정상 MRP 동작으로 적음

이 충돌을 해결하지 않은 채 WAIT_FOR_LOG만으로 SRL 삭제, 재생성을 안내하지 않음

ADG 본문은 이전 MOUNTED 방식에서는 아카이브가 넘어가야 반영된다고 설명하지만 앞선 MOUNT 운영도 USING CURRENT LOGFILE을 Real-Time Apply로 표시함

따라서 MOUNTED와 READ ONLY WITH APPLY의 차이를 아카이브 적용과 실시간 적용의 차이로 단정하지 않았음

실습 오류 표는 ORA-01154, ORA-01156에 적용 중지, ORA-16766에 원인 조회 후 APPLY-ON을 적지만 조건별 오류 재현 기록은 없음

실습의 선택 보호 모드 변경과 무손실 표현은 전송, 보호 모드 기록 차이가 있어 이 ADG 전환 절차에 포함하지 않았음

SEO_HKabsumveritas@gmail.comBuilt with Claude Code & Codex

마지막 갱신 개인 학습 기록이며 운영 환경 적용 전 공식 문서 확인 필요

두 글자 이상 입력, 위아래 화살표로 이동하고 Enter로 열기