Prepara la base de datos principal de Data Guard

Data Guard requiere una base de datos principal y, al menos, una base de datos en espera para funcionar. Antes de configurar Data Guard en la solución Bare Metal, crea la base de datos principal.

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 suspensión

Los servidores de la solución Bare Metal que ejecutan Oracle en esta guía se configuran con las siguientes variables de entorno:

Nombre de variable de entorno Valor
ORACLE_BASE /apps/oracle/oracle_base
ORACLE_HOME /apps/oracle/19.0.0/db_home1

Es posible que debas modificar las rutas de las variables de entorno según la configuración.

Configura la base de datos principal

  1. Accede al primer servidor de la solución Bare Metal que aloja la base de datos principal.

  2. En el archivo /etc/oratab, agrega una entrada a fin de que el comando oraenv pueda establecer variables de entorno para la base de datos principal. Modifica el nombre de la instancia para que coincida con la instancia en ejecución en cada nodo y especifica la ruta completa a la página principal de la base de datos de Oracle:

    DBDG_SITE11:ORACLE_HOME:N
    
  3. Configura la variable de entorno ORACLE_SID para que puedas conectarte a la base de datos principal:

    source oraenv <<< "DBDG_SITE11"
    

    Deberías recibir la respuesta The Oracle base has been set to /apps/oracle/oracle_base.

Configura el registro de la base de datos y habilita la base de datos flashback

  1. Inicia SQL*Plus y, luego, habilita force logging para que se registren los espacios de tabla nologging agregados a la base de datos:

    sqlplus / as sysdba
    
    ALTER DATABASE FORCE LOGGING;
    
  2. Verifica que archivelog mode y flashback database estén activados:

    ARCHIVE LOG LIST;
    SELECT LOG_MODE, FLASHBACK_ON FROM V$DATABASE;
    

    Si archivelog mode y flashback database están desactivados, actívalos con los siguientes comandos de SQL:

    1. Detén la base de datos agrupada en clústeres para poder realizar los cambios necesarios:

       srvctl stop database -d 
      
    2. Ejecuta los comandos de SQL necesarios para activar archivelog mode y flashback database:

       STARTUP MOUNT;
       ALTER DATABASE ARCHIVELOG;
       ALTER DATABASE FLASHBACK ON;
       ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=1440 SID='*' SCOPE=BOTH;
       ALTER DATABASE OPEN;
       SHUTDOWN IMMEDIATE;
       EXIT;
      
    3. Vuelve a iniciar la base de datos agrupada:

       srvctl start database -d DBDG_SITE1
      

Prepara la base de datos para Data Guard

  1. Accede al primer servidor de la solución Bare Metal que aloja la base de datos principal y establece la variable de entorno ORACLE_SID para que puedas conectarte a la base de datos principal:

    source oraenv <<< "DBDG_SITE11"
    

    Deberías recibir la respuesta The Oracle base has been set to /apps/oracle/oracle_base.

  2. Inicia SQL*Plus y, luego, modifica los parámetros de inicialización de la base de datos necesarios para la configuración y los servicios de Data Guard:

    sqlplus / as sysdba
    
    ALTER SYSTEM SET LOG_ARCHIVE_FORMAT='%t_%s_%r.arc' SID='*' SCOPE=SPFILE;
    ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=8 SID='*' SCOPE=BOTH;
    ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SID='*' SCOPE=SPFILE;
    ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO SID='*' SCOPE=BOTH;
    
  3. Comprueba la existencia de registros de rehacer en espera en la base de datos. Cada subproceso debe tener un grupo de registros de rehacer en espera más que la cantidad de grupos de registros de rehacer en línea.

    SELECT 'Logfile groups in thread ' || THREAD# || ': ' || COUNT(*) FROM V$LOG GROUP BY THREAD#
    UNION
    SELECT 'Standby logfile groups in thread ' || THREAD# || ': ' || COUNT(*) FROM V$STANDBY_LOG GROUP BY THREAD#;
    

    En el siguiente ejemplo, hay cuatro registros de rehacer en línea por subproceso y no hay grupos de registros de rehacer en espera creados. Dado que hay cuatro grupos de registros de rehacer en línea, se deben crear cinco grupos de registros de rehacer en espera para cada subproceso:

    Logfile groups in thread 1: 4
    Logfile groups in thread 2: 4
    
  4. Si hay suficientes grupos de registros de rehacer en espera, omite este paso. Los grupos de registros de rehacer en espera deben tener el mismo tamaño que cada grupo de registros de rehacer en línea. Crea la cantidad necesaria de grupos de registros de rehacer en espera con el siguiente código de PL/SQL:

    SET FEEDBACK OFF
    SET SERVEROUTPUT ON
    DECLARE
      CURSOR cur_thread IS
        SELECT THREAD# THREAD, COUNT(*) COUNT FROM V$LOG GROUP BY THREAD#;
      standbylog_count NUMBER := 0;
      standbylog_group NUMBER := 0;
      standbylog_size NUMBER := 0;
      last_group_number NUMBER;
      sqlstmt VARCHAR2(200);
    BEGIN
      SELECT MAX(GROUP#), MAX(BYTES)
    INTO last_group_number, standbylog_size
    FROM V$LOG;
      standbylog_group := last_group_number + 1;
      FOR rec_thread IN cur_thread LOOP
    standbylog_count := rec_thread.count + 1;
    FOR i IN 1..standbylog_count LOOP
      sqlstmt := 'ALTER DATABASE ADD STANDBY LOGFILE THREAD ' || rec_thread.thread || ' GROUP ' || TO_CHAR(standbylog_group) || ' SIZE ' || standbylog_size || ';';
      DBMS_OUTPUT.PUT_LINE( sqlstmt);
      standbylog_group := standbylog_group + 1;
    END LOOP;
      END LOOP;
    END;
    /
    SET FEEDBACK ON
    

    En el siguiente resultado de ejemplo, se indica que debes crear cinco grupos de registro de rehacer en espera para cada uno de los dos subprocesos:

    ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP  9 SIZE 2147483648;
    ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 10 SIZE 2147483648;
    ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 11 SIZE 2147483648;
    ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 12 SIZE 2147483648;
    ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 13 SIZE 2147483648;
    ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 14 SIZE 2147483648;
    ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 15 SIZE 2147483648;
    ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 16 SIZE 2147483648;
    ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 17 SIZE 2147483648;
    ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 18 SIZE 2147483648;
    
  5. Verifica que los registros de rehacer en espera estén configurados correctamente para tu configuración:

    SELECT 'Logfile groups in thread ' || THREAD# || ': ' || COUNT(*) FROM V$LOG GROUP BY THREAD#
    UNION
    SELECT 'Standby logfile groups in thread ' || THREAD# || ': ' || COUNT(*) FROM V$STANDBY_LOG GROUP BY THREAD#;
    

    El siguiente resultado tiene cuatro grupos de registros de rehacer en línea por subproceso y cinco grupos de registros de rehacer en espera por subproceso:

    Logfile groups in thread 1: 4
    Logfile groups in thread 2: 4
    Standby logfile groups in thread 1: 5
    Standby logfile groups in thread 2: 5
    
  6. Sal de SQL*Plus:

    EXIT;
    

Copia los archivos de contraseña y parámetro de la base de datos en los servidores en espera

  1. Crea un archivo de parámetro de base de datos y cópialo en el servidor en espera:

    1. Crea una carpeta para el archivo de parámetro de base de datos en espera (pfile):

      mkdir /home/oracle/backup
      
    2. Inicia SQL*Plus y, luego, crea la base de datos en espera pfile:

      sqlplus / as sysdba
      
      CREATE PFILE='/home/oracle/backup/initDBDG_SITE21.ora' FROM SPFILE;
      
    3. Sal de SQL*Plus y, luego, copia pfile en el primer servidor de la solución Bare Metal en la ubicación en espera:

      EXIT;
      
      scp /home/oracle/backup/initDBDG_SITE21.ora ORACLE_USERNAME@site2db1:/apps/oracle/19.0.0/db_home1/dbs/initDBDG_SITE21.ora
      
  2. Asegúrate de que la contraseña de acceso remoto de SYS se guarde de forma segura. Si no conoces la contraseña, restablécela.

  3. Copia el archivo de contraseña en el clúster en espera:

    1. Obtén la ubicación del archivo de contraseña con el comando srvctl:

      srvctl config database -db DBDG_SITE1 | grep -i password
      

      En el siguiente resultado, se muestra la ubicación de un almacén de archivos de contraseña en ASM:

        Password file: +DATA/DBDG_SITE1/PASSWORD/pwdDBDG_SITE1.287.1086459663
      
    2. Realiza una copia temporal del archivo de contraseña en el sistema de archivos local con el comando asmcmd:

      asmcmd cp +DATA/DBDG_SITE1/PASSWORD/pwdDBDG_SITE1.287.1086459663 /tmp/orapwDBDG_SITE21
      
    3. Copia el archivo de contraseña en el primer servidor de la solución Bare Metal en la ubicación en espera y, luego, borra la copia temporal del servidor de la solución Bare Metal en la ubicación principal:

      scp /tmp/orapwDBDG_SITE21 ORACLE_USERNAME@site2db1:/apps/oracle/19.0.0/db_home1/dbs/orapwDBDG_SITE21
      rm /tmp/orapwDBDG_SITE21
      

Configura la conectividad de la base de datos

Edita el archivo $ORACLE_HOME/network/admin/tsnames.ora en cada servidor de la solución Bare Metal en la ubicación de la base de datos principal para actualizar la configuración del servicio Net. El archivo tiene tres entradas: una para cada base de datos y una entrada temporal usada durante la duplicación de la base de datos que borrarás más adelante:

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)
      )
  )

DBDG_SITE2_FOR_DUPLICATION =
  (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = site2db1)(PORT = 1523))
      (CONNECT_DATA =
          (SERVER = DEDICATED)
          (INSTANCE_NAME = DBDG_SITE21) (UR=A)
      )
  )

La base de datos principal ya está lista para usarse en una configuración de Data Guard.

Próximos pasos

A continuación, crea la base de datos en espera de Data Guard.