Configurar um observador do Data Guard no Google Cloud Compute Engine

Dependendo dos requisitos de alta disponibilidade, convém automatizar o failover entre bancos de dados. Depois de validar a implantação do Data Guard, é possível configurar um observador do Data Guard no Compute Engine para fazer isso. Um observador é um processo que monitora uma configuração do DataGuard para iniciar um failover automatizado, se as condições exigirem.

Este guia aborda a instalação do cliente do banco de dados Oracle 19c em uma máquina virtual (VM) do observador e a configuração do failover do início rápido.

Os exemplos a seguir são usados neste guia:

Nome exclusivo do banco de dados Nomes de host do servidor Nomes de instâncias RAC Papel
DBDG_SITE1 site1db1, site1db2 DBDG_SITE11, DBDG_SITE12 Principal
DBDG_SITE2 site2db1, site2db2 DBDG_SITE21, DBDG_SITE22 Espera

Instalar o software cliente do banco de dados Oracle

  1. Crie uma máquina virtual (VM) no Compute Engine que atenda aos seguintes critérios:

    • Sistema operacional. Red Hat Enterprise Linux 7.

    • Rede. Uma sub-rede com regras de firewall que permite o acesso da nuvem privada virtual para hosts da Solução Bare Metal que executam os bancos de dados principal e em espera.

    • Storage. -- Pelo menos 20 GB alocados para o disco de inicialização.

  2. Faça login na VM e verifique se o nome de host SCAN de cada cluster de banco de dados é resolvido no DNS:

    host DBDG_SITE1_SCAN_HOSTNAME
    host DBDG_SITE2_SCAN_HOSTNAME
    

    Se os nomes de host não forem resolvidos, adicione os endereços IP de cada nome de host SCAN ao arquivo /etc/hosts na VM. Substitua os endereços IP de exemplo pelos endereços IP de cada cluster:

    # 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. Instale o RPM do Oracle Database. Instale apenas o software. Não é necessário configurar um banco de dados na VM do observador.

  4. O RPM do Oracle Database instala o software em um diretório predefinido. Adicione as seguintes entradas a /home/oracle/.bash_profile para adicionar a casa do software Oracle ao caminho:

    cat >> /home/oracle/.bash_profile << EOL
    export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
    export PATH=\$PATH:\$ORACLE_HOME/bin
    EOL
    
  5. Crie as variáveis de ambiente da Oracle na sessão de terminal:

    source ~/.bash_profile
    

Configurar a conectividade do banco de dados

  1. Defina as configurações do Oracle Net no arquivo $ORACLE_HOME/network/admin/tsnames.ora:

    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. O Oracle Database versão 12.2 e mais recentes inclui suporte para o observador para ser executado em modo de segundo plano. Para isso, é necessário criar uma carteira para realizar a autenticação sem senha no banco de dados. Para criar uma carteira, faça login como o usuário oracle na VM do observador e:

    1. Adicione as seguintes entradas a $ORACLE_HOME/network/admin/sqlnet.ora:

      WALLET_LOCATION =
         (SOURCE =
            (METHOD = FILE)
            (METHOD_DATA = (DIRECTORY = /home/oracle/wallet))
      )
      SQLNET.WALLET_OVERRIDE = TRUE
      
    2. Crie o diretório da carteira na VM que hospeda o observador:

      mkdir /home/oracle/wallet
      
    3. Inicialize a carteira e forneça uma senha para ela quando solicitado:

      mkstore -wrl /home/oracle/wallet -create
      
    4. Crie uma entrada na carteira para cada banco de dados na configuração do Data Guard. O comando mkstore solicitará a senha do SYS para o banco de dados, seguida pela senha da carteira fornecida na etapa anterior:

      mkstore -wrl /home/oracle/wallet -createCredential DBDG_SITE1 sys
      mkstore -wrl /home/oracle/wallet -createCredential DBDG_SITE2 sys
      
    5. Confirme se a carteira contém credenciais para cada banco de dados na configuração do Data Guard. O argumento -listCredential para mkstore solicitará a senha da carteira:

      mkstore -wrl /home/oracle/wallet -listCredential
      
  3. Faça login na VM do observador como Oracle e, em seguida, teste a conectividade com os bancos de dados principal e em espera. Conecte-se aos bancos de dados principal e secundário com o SQL*Plus usando as credenciais da carteira:

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

    Se a configuração da carteira for bem-sucedida, o comando sqlplus fará login diretamente no banco de dados sem solicitar uma senha.

Configurar e ativar o failover de início rápido

  1. Crie um diretório para armazenar a configuração e os arquivos de registro do observador:

    mkdir /home/oracle/fsfo
    
  2. Conecte-se ao agente do Data Guard no banco de dados principal usando a carteira:

    dgmgrl
    CONNECT /@DBDG_SITE1;
    
  3. Verifique o status do Data Guard para verificar se a configuração está marcada como SUCCESS:

    SHOW CONFIGURATION;
    
  4. Ative o failover de início rápido (FSFO).

    ENABLE FAST_START FAILOVER;
    

    Ativar o FSFO não prepara a configuração para o failover automático. O failover automático requer um observador.

  5. Inicie o 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. Em uma sessão de terminal separada, verifique a configuração:

    SHOW CONFIGURATION VERBOSE;
    

    O exemplo a seguir mostra o modo detalhado do comando show configuration. Se o status da configuração for SUCCESS, significa que a configuração está concluída.

    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