Preparar la base de datos principal de Data Guard

Para que Data Guard funcione, se necesita una base de datos principal y al menos una base de datos de reserva. Antes de configurar Data Guard en 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 espera

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

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

Es posible que tengas que modificar las rutas de las variables de entorno en función de tu configuración.

Configurar la base de datos principal

  1. Inicia sesión en el primer servidor de Bare Metal Solution que aloja la base de datos principal.

  2. En el archivo /etc/oratab, añade una entrada para que el comando oraenv pueda definir variables de entorno para la base de datos principal. Modifica el nombre de la instancia para que coincida con la instancia en ejecución de cada nodo y especifica la ruta completa al directorio principal de la base de datos Oracle:

    DBDG_SITE11:ORACLE_HOME:N
    
  3. Define 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.

Configurar el registro de bases de datos y habilitar la recuperación de bases de datos

  1. Inicia SQL*Plus y, a continuación, habilita force logging para que se registren los espacios de tabla nologging que se añadan a la base de datos:

    sqlplus / as sysdba
    
    ALTER DATABASE FORCE LOGGING;
    
  2. Comprueba 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 SQL:

    1. Detén la base de datos agrupada para poder hacer los cambios necesarios:

       srvctl stop database -d 
      
    2. Ejecuta los comandos 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 en clústeres:

       srvctl start database -d DBDG_SITE1
      

Preparar la base de datos para Data Guard

  1. Inicia sesión en el primer servidor de Solución Bare Metal que aloja la base de datos principal y define la variable de entorno ORACLE_SID para poder 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, a continuación, 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 si hay registros de rehacer de reserva en la base de datos. Cada hilo debe tener un grupo de registros de rehacer de reserva más que el número de grupos de registros de rehacer online.

    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 archivos de rehacer online por hilo y no se ha creado ningún grupo de archivos de rehacer de reserva. Como hay cuatro grupos de registro de rehacer online, se deben crear cinco grupos de registro de rehacer en espera para cada hilo:

    Logfile groups in thread 1: 4
    Logfile groups in thread 2: 4
    
  4. Si hay suficientes grupos de registros de rehacer en espera, omita este paso. Los grupos de registros de rehacer de reserva deben tener el mismo tamaño que cada grupo de registros de rehacer online. Crea el número necesario de grupos de registro de rehacer en espera con el siguiente código 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 ejemplo de salida se le indica que cree cinco grupos de archivos de rehacer de reserva para cada uno de los dos hilos:

    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 de reserva 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#;
    

    La siguiente salida tiene cuatro grupos de registro de rehacer online por hilo y cinco grupos de registro de rehacer en espera por hilo:

    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. Salir de SQL*Plus:

    EXIT;
    

Copiar los archivos de parámetros y contraseñas de la base de datos en los servidores de espera

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

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

      mkdir /home/oracle/backup
      
    2. Inicia SQL*Plus y, a continuación, 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 copia el archivo pfile en el primer servidor de Bare Metal Solution de la ubicación de 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 inicio de sesión remoto de SYS se guarde de forma segura. Si no sabes la contraseña, cámbiala.

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

    1. Obtén la ubicación del archivo de contraseñas 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ñas en ASM:

        Password file: +DATA/DBDG_SITE1/PASSWORD/pwdDBDG_SITE1.287.1086459663
      
    2. Haz una copia temporal del archivo de contraseñas 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 de la ubicación de espera y, a continuación, elimina la copia temporal del servidor de la solución Bare Metal de 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
      

Configurar la conectividad de la base de datos

Edita el archivo $ORACLE_HOME/network/admin/tsnames.ora en cada servidor de Bare Metal Solution de la ubicación de la base de datos principal para actualizar la configuración del servicio de red. El archivo contiene tres entradas: una para cada base de datos y una entrada temporal que se usa durante la duplicación de la base de datos y que se eliminará 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 se puede usar en una configuración de Data Guard.

Pasos siguientes

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