Google Cloud Compute Engine에서 Data Guard 관찰자 설정

고가용성 요구사항에 따라 데이터베이스 간 장애 조치를 자동화해야 할 수도 있습니다. Data Guard 배포를 검증한 후에는 Compute Engine에서 Data Guard 관찰자를 설정하여 이를 수행할 수 있습니다. 관찰자는 조건에 따라 자동 장애 조치를 시작하기 위해 Data Guard 구성을 모니터링하는 프로세스입니다.

이 가이드에서는 관찰자 가상 머신(VM)에 Oracle 19c 데이터베이스 클라이언트를 설치하고 빠른 시작 장애 조치를 구성하는 방법을 설명합니다.

이 가이드 전체에서 사용되는 예시는 다음과 같습니다.

데이터베이스 고유 이름 서버 호스트 이름 RAC 인스턴스 이름 역할
DBDG_SITE1 site1db1, site1db2 DBDG_SITE11, DBDG_SITE12 기본
DBDG_SITE2 site2db1, site2db2 DBDG_SITE21, DBDG_SITE22 대기

Oracle 데이터베이스 클라이언트 소프트웨어 설치

  1. 다음 기준을 충족하는 Compute Engine에 가상 머신(VM)을 만듭니다.

    • 운영체제. Red Hat Enterprise Linux 7.

    • 네트워킹. Virtual Private Cloud에서 기본 및 대기 데이터베이스를 실행하는 베어메탈 솔루션 호스트로 액세스를 허용하는 방화벽 규칙이 있는 서브넷입니다.

    • 스토리지. -- 부팅 디스크에 20 GB 이상 할당되어야 합니다.

  2. VM에 로그인하고 각 데이터베이스 클러스터의 SCAN 호스트 이름이 DNS에서 확인되는지 확인합니다.

    host DBDG_SITE1_SCAN_HOSTNAME
    host DBDG_SITE2_SCAN_HOSTNAME
    

    호스트 이름이 확인되지 않으면 각 SCAN 호스트 이름의 IP 주소를 VM의 /etc/hosts 파일에 추가합니다. 예시 IP 주소를 각 클러스터의 IP 주소로 바꿉니다.

    # Site 1 SCAN Hosts
    192.0.2.10 DBDG_SITE1_SCAN_HOSTNAME
    192.0.2.11 DBDG_SITE1_SCAN_HOSTNAME
    192.0.2.12 DBDG_SITE1_SCAN_HOSTNAME
    
    # Site 2 SCAN Hosts
    198.51.100.10 DBDG_SITE2_SCAN_HOSTNAME
    198.51.100.11 DBDG_SITE2_SCAN_HOSTNAME
    198.51.100.12 DBDG_SITE2_SCAN_HOSTNAME
    
  3. Oracle 데이터베이스 RPM을 설치합니다. 소프트웨어만 설치합니다. 관찰자 VM에서 데이터베이스를 구성할 필요가 없습니다.

  4. Oracle Database RPM은 사전 정의된 디렉터리에 소프트웨어를 설치합니다. Oracle 소프트웨어 홈을 경로에 추가하려면 /home/oracle/.bash_profile에 다음 항목을 추가합니다.

    cat >> /home/oracle/.bash_profile << EOL
    export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
    export PATH=\$PATH:\$ORACLE_HOME/bin
    EOL
    
  5. 터미널 세션에서 Oracle 환경 변수를 가져옵니다.

    source ~/.bash_profile
    

데이터베이스 연결 구성

  1. $ORACLE_HOME/network/admin/tsnames.ora 파일의 Oracle Net 설정을 구성합니다.

    DBDG_SITE1 =
      (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE1_SCAN_HOSTNAME)(PORT = 1521))
          (CONNECT_DATA =
              (SERVER = DEDICATED)
              (SERVICE_NAME = DBDG_SITE1) (UR=A)
          )
      )
    
    DBDG_SITE2 =
      (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE2_SCAN_HOSTNAME)(PORT = 1521))
          (CONNECT_DATA =
              (SERVER = DEDICATED)
              (SERVICE_NAME = DBDG_SITE2) (UR=A)
          )
      )
    
  2. Oracle 데이터베이스 버전 12.2 이상에서는 관찰자를 백그라운드 모드로 실행할 수 있습니다. 이렇게 하려면 데이터베이스에 대한 비밀번호 없는 인증을 수행할 수 있도록 월렛이 생성되어 있어야 합니다. 관찰자 VM에서 Oracle 사용자로 로그인하고 다음 태스크를 수행하여 월렛 만들기

    1. $ORACLE_HOME/network/admin/sqlnet.ora에 다음 항목을 추가합니다.

      WALLET_LOCATION =
         (SOURCE =
            (METHOD = FILE)
            (METHOD_DATA = (DIRECTORY = /home/oracle/wallet))
      )
      SQLNET.WALLET_OVERRIDE = TRUE
      
    2. 관찰자를 호스팅하는 VM에서 월렛 디렉터리를 만듭니다.

      mkdir /home/oracle/wallet
      
    3. 월렛을 초기화하고 메시지가 표시되면 월렛의 비밀번호를 입력합니다.

      mkstore -wrl /home/oracle/wallet -create
      
    4. Data Guard 구성에서 각 데이터베이스에 월렛의 항목을 만듭니다. mkstore 명령어는 데이터베이스의 SYS 비밀번호와 이전 단계에서 제공한 월렛 비밀번호를 요청합니다.

      mkstore -wrl /home/oracle/wallet -createCredential DBDG_SITE1 sys
      mkstore -wrl /home/oracle/wallet -createCredential DBDG_SITE2 sys
      
    5. 월렛에 Data Guard 구성의 각 데이터베이스에 대한 사용자 인증 정보가 포함되어 있는지 확인합니다. mkstore-listCredential 인수는 월렛 비밀번호를 요청합니다.

      mkstore -wrl /home/oracle/wallet -listCredential
      
  3. Oracle로 관찰자 VM에 로그인한 다음 기본 및 대기 데이터베이스에 대한 연결을 테스트합니다. 월렛 사용자 인증 정보를 사용하여 SQL*Plus로 기본 및 보조 데이터베이스에 연결합니다.

    sqlplus /@DBDG_SITE1 as sysdba
    sqlplus /@DBDG_SITE2 as sysdba
    

    월렛 구성이 성공하면 sqlplus 명령어가 비밀번호를 요청하지 않고 데이터베이스에 직접 로그인합니다.

빠른 시작 장애 조치 구성 및 사용 설정

  1. 관찰자 구성과 로그 파일을 저장할 디렉터리를 만듭니다.

    mkdir /home/oracle/fsfo
    
  2. 월렛에서 기본 데이터베이스의 Data Guard 브로커에 연결합니다.

    dgmgrl
    CONNECT /@DBDG_SITE1;
    
  3. Data Guard 상태를 보고 구성이 SUCCESS로 표시되었는지 확인합니다.

    SHOW CONFIGURATION;
    
  4. 빠른 시작 장애 조치(FSFO)를 사용 설정합니다.

    ENABLE FAST_START FAILOVER;
    

    FSFO를 사용 설정해도 자동 장애 조치에 대한 구성이 준비되지는 않습니다. 자동 장애 조치를 사용하려면 관찰자가 필요합니다.

  5. Data Guard Observer를 시작합니다.

    START OBSERVER observer1 IN BACKGROUND FILE IS '/home/oracle/fsfo/observer1_DBDG.dat' LOGFILE IS '/home/oracle/fsfo/observer1_DBDG.log';
    
  6. 별도의 터미널 세션에서 구성을 확인합니다.

    SHOW CONFIGURATION VERBOSE;
    

    다음 예시에서는 show configuration 명령어의 상세 모드를 보여줍니다. 구성 상태가 SUCCESS이면 설정이 완료된 것입니다.

    Configuration - DBDG
    
      Protection Mode: MaxAvailability
      Members:
     DBDG_SITE1 - Primary database
       DBDG_SITE2 - Physical standby database
    
      (*) Fast-Start Failover target
    
      Properties:
        FastStartFailoverThreshold      = '30'
        OperationTimeout                = '30'
        TraceLevel                      = 'USER'
        FastStartFailoverLagLimit       = '45'
        CommunicationTimeout            = '180'
        ObserverReconnect               = '0'
        FastStartFailoverAutoReinstate  = 'TRUE'
        FastStartFailoverPmyShutdown    = 'TRUE'
        BystandersFollowRoleChange      = 'ALL'
        ObserverOverride                = 'FALSE'
        ExternalDestination1            = ''
        ExternalDestination2            = ''
        PrimaryLostWriteAction          = 'CONTINUE'
        ConfigurationWideServiceName    = 'DBDG_CFG'
    
    Fast-Start Failover: Enabled in Potential Data Loss Mode
      Lag Limit:          45 seconds
      Threshold:          30 seconds
      Active Target:      DBDG_SITE2
      Potential Targets:  "DBDG_SITE2"
        DBDG_SITE2   valid
      Observer:           observer1
      Shutdown Primary:   TRUE
      Auto-reinstate:     TRUE
      Observer Reconnect: (none)
      Observer Override:  FALSE
    
    Configuration Status:
    SUCCESS