DoubleDBDeep

[ORACLE] Data Guard Broker 설정 및 사용하기 본문

ORACLE/OGG | ADG

[ORACLE] Data Guard Broker 설정 및 사용하기

DBCAMI 2023. 5. 15. 15:53

현재 ADG 구축상태

2023.05.15 - [ORACLE/OGG] - [ORACLE] Active Data Guard

 

[ORACLE] Active Data Guard

참고 docs https://docs.oracle.com/en/database/oracle/oracle-database/19/sbydb/oracle-data-guard-concepts.html#GUID-F78703FB-BD74-4F20-9971-8B37ACC40A65 Concepts and Administration docs.oracle.com ADG - Standby Database (DR DB)를 생성하여 운영 데

devcami.tistory.com

 

Data Guard Broker

DG 구성의 생성 , 유지보수 , 모니터링 등을 자동화하고 중앙 집중화 하는 분산 관리 framework

https://docs.oracle.com/en/database/oracle/oracle-database/19/dgbkr/oracle-data-guard-broker-concepts.html#GUID-723E5B73-A350-4B2E-AF3C-5EA4EFC83966

 

Broker

Learn about Oracle Data Guard broker, its architecture and components, and how it automates the creation, control, and monitoring of an Oracle Data Guard configuration.

docs.oracle.com

 

 

Broker가 단순화 및 자동화 해주는 작업들

  1. DG 구성 관련 리두 전송 로그 적용 서비스와 함께 생성
  2. DG 구성 추가
  3. 보호모드 관리
  4. 전환 또는 장애조치 시작, 역할 변경, 시작 제어
  5. primary 손실될 자동으로 실행되는 장애 조치 구성 (수동 조작 없이 가용성 향상)
  6. 전체 구성 상태 모니터링, 진단 정보 검색, 리두 적용률 생성률과 같은 통계 보고서, 중앙 집중식 모니터링, 테스트 성능 도구를 사용한 문제 감지

등등이 있다.

즉 DataGuard를 더 사용하기 쉽게 하기위한 하나의 툴임

 

- DG Broker 프로세스 모니터링 동적 뷰 - V$DATAGUARD_PROCESS (NAME : DMON)

- DGMGRL : DG Broker 명령행 인터페이스로, 프롬프트 또는 스크립트 내에서 DG 제어 모니터링

 

사용법

환경 : primary database / oracle 계정 환경 / SYS 유저 / dgmgrl 로 접속하여 사용

primary db name : rac

standby db name : racdr

 

  • 사전 준비 : DGMGRL 사용을 위한 PARAMETER 설정 (primary, standby)
alter system set DG_BROKER_START=TRUE scope=both sid='*' ;
  • DGMGRL 접속
# TNS를 사용한 접속
dgmgrl sys/PASSWORD@rac

# 로컬 접속
dgmgrl sys/PASSWORD


DGMGRL for Linux: Release 19.0.0.0.0 - Production on Mon May 15 14:42:21 2023
Version 19.17.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

Welcome to DGMGRL, type "help" for information.
Connected to "rac"
Connected as SYSDBA.
  • CONFIGURATION 등록

Configuration : DataGuard Broker 환경 구성

Broker를 처음 시작 시 자동으로 config file이 생성된다.

# CONFIGURATION 등록
- PRIMARY 등록
CREATE CONFIGURATION DG_EM AS PRIMARY DATABASE IS rac CONNECT IDENTIFIER IS rac ;

Configuration "dg_em" created with primary database "rac"

- STANDBY 등록
ADD DATABASE racdr AS CONNECT IDENTIFIER IS racdr MAINTAINED AS PHYSICAL ;
Database "racdr" added

* 참고 : STANDBY 추가 시 ORA-16698 에러

Error: ORA-16698: member has a LOG_ARCHIVE_DEST_n parameter with SERVICE attribute set
원인 : STANDBY의 LOG_ARCHIVE_DEST_2 PARAMETER가 설정되어있음
해결 방법 : ALTER SYSTEM RESET LOG_ARCHIVE_DEST_2 SCOPE=BOTH SID='*';
  • CONFIGURATION 등록 확인
DGMGRL> SHOW CONFIGURATION ;

Configuration - dg_em

  Protection Mode: MaxPerformance
  Members:
  rac   - Primary database
    racdr - Physical standby database 

Fast-Start Failover:  Disabled

Configuration Status:
DISABLED
  • CONFIGURATION 상세 옵션 내역 확인
DGMGRL> show configuration verbose ;

Configuration - dg_em

  Protection Mode: MaxPerformance
  Members:
  rac   - Primary database
    racdr - Physical standby database 

  Properties:
    FastStartFailoverThreshold      = '30'
    OperationTimeout                = '30'
    TraceLevel                      = 'USER'
    FastStartFailoverLagLimit       = '30'
    CommunicationTimeout            = '180'
    ObserverReconnect               = '0'
    FastStartFailoverAutoReinstate  = 'TRUE'
    FastStartFailoverPmyShutdown    = 'TRUE'
    BystandersFollowRoleChange      = 'ALL'
    ObserverOverride                = 'FALSE'
    ExternalDestination1            = ''
    ExternalDestination2            = ''
    PrimaryLostWriteAction          = 'CONTINUE'
    ConfigurationWideServiceName    = 'rac_CFG'

Fast-Start Failover:  Disabled

Configuration Status:
SUCCESS
  • Broker 활성화
ENABLE CONFIGURATION ;

 

* 참고 : ASM DISK 사용 시 나타나는 ORA-16532 에러

DGMGRL> SHOW CONFIGURATION ;

Configuration - dg_em

  Protection Mode: MaxPerformance
  Members:
  rac   - Primary database
    Warning: ORA-16532: Oracle Data Guard broker configuration does not exist

    racdr - Physical standby database 
      Warning: ORA-16809: multiple warnings detected for the member

Fast-Start Failover:  Disabled

Configuration Status:
WARNING   (status updated 7 seconds ago)

원인 : ORA-16532 // PRIMARY의 DG_BROKER_CONFIG_FILE[1/2]가 ASM이 아님

SQL> show parameter dg_broker

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
dg_broker_config_file1		     string	 /u01/app/oracle/product/19.0.0/dbhome_1/dbs/dr1rac.dat
dg_broker_config_file2		     string	 /u01/app/oracle/product/19.0.0/dbhome_1/dbs/dr2rac.dat

해결 방법 :  해당 파일을 ASM DISK로 이동

CREATE DIRECTORY DG_FS AS '/u01/app/oracle/product/19.0.0/dbhome_1/dbs' ;
CREATE DIRECTORY DG_ASM AS '+DATA/ADG' ;
1. BROKER 중지 // DISABLE CONFIGURATION ;
2. DMON 중지 // alter system set dg_broker_start=false ;
3. 파일명 변경 // 
	alter system set dg_broker_config_file1='+DATA/ADG/dr1rac.dat' scope=both sid='*';
	alter system set dg_broker_config_file2='+DATA/ADG/dr2rac.dat' scope=both sid='*';
	
	alter system set dg_broker_config_file1='+DATA/ADG/dr1racdr.dat' scope=both sid='*';
	alter system set dg_broker_config_file2='+DATA/ADG/dr2racdr.dat' scope=both sid='*';
4. 파일 위치 변경 // 
	BEGIN DBMS_FILE_TRANSFER.COPY_FILE('DG_FS', 'dr1rac.dat', 'DG_ASM', 'dr1rac.dat');  END;
	BEGIN DBMS_FILE_TRANSFER.COPY_FILE('DG_FS', 'dr2rac.dat', 'DG_ASM', 'dr2rac.dat');  END;
	
	BEGIN DBMS_FILE_TRANSFER.COPY_FILE('DG_FS', 'dr1racdr.dat', 'DG_ASM', 'dr1racdr.dat');  END;
	BEGIN DBMS_FILE_TRANSFER.COPY_FILE('DG_FS', 'dr2racdr.dat', 'DG_ASM', 'dr2racdr.dat');  END;
5. DMON 시작 // alter system set dg_broker_start=true ;
6. BROKER 시작 // ENABLE CONFIGURATION ;
7. 확인 // SHOW CONFIGURATION;

DGMGRL> SHOW CONFIGURATION;

Configuration - dg_em

  Protection Mode: MaxPerformance
  Members:
  rac   - Primary database
    racdr - Physical standby database 

Fast-Start Failover:  Disabled

Configuration Status:
SUCCESS   (status updated 44 seconds ago)
  • Database 확인

standby

DGMGRL> SHOW DATABASE RACDR

Database - racdr

  Role:               PHYSICAL STANDBY
  Intended State:     APPLY-ON
  Transport Lag:      0 seconds (computed 1 second ago)
  Apply Lag:          0 seconds (computed 0 seconds ago)
  Average Apply Rate: 1.97 MByte/s
  Real Time Query:    ON
  Instance(s):
    racdr1 (apply instance)
    racdr2

Database Status:
SUCCESS

# 데이터베이스 구성정보 상세확인 - 지정된 옵션까지 확인 가능
DGMGRL> show database verbose 'racdr' ;

primary

DGMGRL> show database rac

Database - rac

  Role:               PRIMARY
  Intended State:     TRANSPORT-ON
  Instance(s):
    rac1
    rac2

Database Status:
SUCCESS

# 데이터베이스 구성정보 상세확인 - 지정된 옵션까지 확인 가능
DGMGRL> show database verbose 'rac' ;

 


관리

1. primary -> standby 로 redo data 전송 끄기 / 켜기

# 전송 끄기
EDIT DATABASE rac SET STATE='TRANSPORT-OFF' ;
Succeeded.

# 전송 켜기
EDIT DATABASE rac SET STATE='TRANSPORT-ON' ;
Succeeded.

2. standby에서 redo data 전용 끄기 / 켜기

# 적용 끄기
EDIT DATABASE racdr SET STATE='APPLY-OFF' ;

# 적용 켜기
EDIT DATABASE racdr SET STATE='APPLY-ON' ;

3. Configuration Status 정보

Success 모든 데이터베이스가 오류 경고 없음
Warning 하나 이상의 데이터베이스에서 지정한대로의 조작 수행 불가 상태
상세
확인 : show database <db-unique-name>
Error 하나 이상의 데이터베이스에서 장애 발생으로 조작 수행 불가 상태
상세 확인 : show database <db-unique-name>
Unknown/Disabled 브로커 관리 사용 불가능, 데이터베이스 상태 모니터링 하지 않음
ROLLING DATABASE MAINTENANCE IN PROGRESS PL/SQL DBMS_ROLLING Package 수행

4. 속성값 초기화

# 특정 DATABASE의 속성 리셋
EDIT DATABASE 'DB-UNQ-NAME' RESET PROPERTY [속성명];

# 특정 속성값 리셋
EDIT CONFIGURATION RESET PROPERTY [속성명];

5. 속성값 변경

# database 전체 상세 속성 확인
show database verbose 'unique-dbname' ;

# database 특정 속성 확인
show database 'unique-dbname' '속성명';

# 특정 속성 변경
edit database 'unique-dbname' set property 속성명='value' ;

6. Redo 전송 서비스 모드 관리

전송모드 내용
SYNC 최대 보호모드 또는 최대 가용성 모드로 작동
최고 수준의 데이터 보호를 제공하지만, 성능에 영향을 있음
ASYNC 적당한 수준의 데이터 보호로 성능에 미치는 영향을 줄임
FASTSYNC 최대 가용성 보호모드에서만 사용 가능한 모드
EDIT DATABASE 'unique-dbname' SET PROPERTY 'RedoRoutes' = '(primary : standby [전송모드])' ;
또는
EDIT DATABASE 'unique-dbname' SET PROPERTY 'LogXptMode'='모드' ;

7. 전송 경고 관련

# 전송 지연 SECOND 초 이상 시 경고 생성 (DEFAULT = 30)
EDIT DATABASE 'DB-UNQ-NAME' SET PROPERTY 'TransportLagThreshold'=[SECOND];

# 전송 통신 없음 SECOND 초 이상 시 경고 생성 (DEFAULT = 30)
EDIT DATABASE 'DB-UNQ-NAME' SET PROPERTY 'TransportDisconnectedThreshold'=[SECOND];

8. 특정 데이터베이스 등록 삭제

REMOVE DATABASE 'DB-UNQ-NAME';

9. configuration 삭제

REMOVE CONFIGURATION ;
728x90