Configurar un observador de Data Guard en Google Cloud Compute Engine

En función de tus requisitos de alta disponibilidad, puede que quieras automatizar la conmutación por error entre bases de datos. Una vez que hayas validado tu implementación de Data Guard, puedes configurar un observador de Data Guard en Compute Engine para hacerlo. Un observador es un proceso que monitoriza una configuración de Data Guard para iniciar una conmutación por error automática si las condiciones lo justifican.

En esta guía se explica cómo instalar el cliente de la base de datos Oracle 19c en una máquina virtual observadora y cómo configurar la conmutación por error de inicio rápido.

En esta guía se usan los siguientes ejemplos:

Nombre único de la base de datos Nombres de host del servidor Nombres de instancias de RAC Rol
DBDG_SITE1 site1db1, site1db2 DBDG_SITE11, DBDG_SITE12 Principal
DBDG_SITE2 site2db1, site2db2 DBDG_SITE21, DBDG_SITE22 En espera

Instalar el software de cliente de Oracle Database

  1. Crea una máquina virtual en Compute Engine que cumpla los siguientes criterios:

    • Sistema operativo. Red Hat Enterprise Linux 7.

    • Redes. Una subred con reglas de cortafuegos que permitan el acceso desde tu nube privada virtual a los hosts de Solución Bare Metal que ejecuten las bases de datos principal y de espera.

    • Almacenamiento -- Al menos 20 GB asignados al disco de arranque.

  2. Inicia sesión en la VM y comprueba que el nombre de host SCAN de cada clúster de base de datos se resuelve en el DNS:

    host DBDG_SITE1_SCAN_HOSTNAME
    host DBDG_SITE2_SCAN_HOSTNAME
    

    Si los nombres de host no se resuelven, añade las direcciones IP de cada nombre de host SCAN al archivo /etc/hosts de la VM. Sustituye las direcciones IP de ejemplo por las direcciones IP de cada clúster:

    # 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. Instala el RPM de Oracle Database. Instala solo el software. No es necesario configurar una base de datos en la VM observadora.

  4. El RPM de Oracle Database instala el software en un directorio predefinido. Añade las siguientes entradas a /home/oracle/.bash_profile para añadir la ruta de inicio del software de Oracle:

    cat >> /home/oracle/.bash_profile << EOL
    export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
    export PATH=\$PATH:\$ORACLE_HOME/bin
    EOL
    
  5. Obtén las variables de entorno de Oracle en tu sesión de terminal:

    source ~/.bash_profile
    

Configurar la conectividad de la base de datos

  1. Configura los ajustes de Oracle Net en el archivo $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. Oracle Database 12.2 y versiones posteriores permiten que el observador se ejecute en segundo plano. Para ello, se debe crear un monedero para realizar la autenticación sin contraseña en la base de datos. Inicia sesión como usuario de Oracle en la VM observadora y realiza las siguientes tareas para crear un monedero:

    1. Añade las siguientes entradas a $ORACLE_HOME/network/admin/sqlnet.ora:

      WALLET_LOCATION =
         (SOURCE =
            (METHOD = FILE)
            (METHOD_DATA = (DIRECTORY = /home/oracle/wallet))
      )
      SQLNET.WALLET_OVERRIDE = TRUE
      
    2. Crea el directorio de la cartera en la VM que aloja el observador:

      mkdir /home/oracle/wallet
      
    3. Inicializa la cartera y, a continuación, proporciona una contraseña para la cartera cuando se te solicite:

      mkstore -wrl /home/oracle/wallet -create
      
    4. Crea una entrada en el monedero para cada base de datos de la configuración de Data Guard. El comando mkstore solicitará la contraseña SYS de la base de datos, seguida de la contraseña del monedero proporcionada en el paso anterior:

      mkstore -wrl /home/oracle/wallet -createCredential DBDG_SITE1 sys
      mkstore -wrl /home/oracle/wallet -createCredential DBDG_SITE2 sys
      
    5. Confirma que la cartera contiene credenciales para cada base de datos de la configuración de Data Guard. El argumento -listCredential de mkstore solicitará la contraseña de la cartera:

      mkstore -wrl /home/oracle/wallet -listCredential
      
  3. Inicia sesión en la VM observadora como Oracle y, a continuación, prueba la conectividad con las bases de datos principal y de espera. Conéctate a las bases de datos principal y secundaria con SQL*Plus mediante las credenciales del monedero:

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

    Si la configuración de la cartera se realiza correctamente, el comando sqlplus inicia sesión directamente en la base de datos sin pedir una contraseña.

Configurar y habilitar la conmutación por error de inicio rápido

  1. Crea un directorio para almacenar la configuración del observador y los archivos de registro:

    mkdir /home/oracle/fsfo
    
  2. Conéctate al broker de Data Guard en la base de datos principal mediante el archivo wallet:

    dgmgrl
    CONNECT /@DBDG_SITE1;
    
  3. Consulta el estado de Data Guard para comprobar que la configuración esté marcada como SUCCESS:

    SHOW CONFIGURATION;
    
  4. Habilita la conmutación por error de inicio rápido (FSFO):

    ENABLE FAST_START FAILOVER;
    

    Habilitar FSFO no hace que la configuración esté lista para la conmutación por error automática. La conmutación por error automática requiere un observador.

  5. Iniciar 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. En otra sesión de terminal, verifica la configuración:

    SHOW CONFIGURATION VERBOSE;
    

    En el siguiente ejemplo se muestra el modo detallado del comando show configuration. Si el estado de la configuración es SUCCESS, significa que la configuración se ha completado.

    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