Preparar bases de datos Oracle para el servicio de copia de seguridad y recuperación tras fallos

Antes de empezar, te recomendamos que consultes el artículo Servicio de Backup y DR para Oracle.

Antes de crear copias de seguridad de bases de datos Oracle, debes añadir el servidor Oracle como host al servicio de copia de seguridad y recuperación tras desastres. Para que esto funcione, consulta los requisitos previos para crear copias de seguridad de una base de datos de Oracle y, a continuación, sigue estos pasos de preparación.

Procedimientos de preparación para bases de datos Oracle
Paso Procedimiento de preparación
1 Preparar bases de datos de Oracle en un entorno Linux o
Preparar bases de datos de Oracle en un entorno Windows
2 Preparar una copia de seguridad de una base de datos de Oracle con archivos de datos en un grupo de discos ASM
3 Preparar la autenticación de la base de datos de Oracle
Habilitar el seguimiento de cambios de bloques de la base de datos (opcional)
Proteger de un nodo de Oracle Data Guard
Configurar la conmutación por error transparente de RAC de la copia de seguridad de RMAN a otros nodos
Compresión de registros de archivo de Oracle
Configurar los servicios de la base de datos de Oracle para equilibrar la carga en varios nodos
Aplicar parches a Oracle 12c

Preparar bases de datos de Oracle en un entorno Linux

Antes de proteger una base de datos de Oracle o si fallan los trabajos de protección de bases de datos, asegúrese de que los siguientes ajustes sean correctos en el servidor de bases de datos de Oracle.

  • Cada base de datos de Oracle que se vaya a proteger debe estar activa. Por ejemplo:

    database: actdb
    #ps -ef | grep pmon | grep -i actdb
    oracle   27688     1  0  2015 ?        00:26:24 ora_pmon_actdb
    
  • La base de datos debe ejecutarse en el modo de registro de archivo. Para comprobar que la base de datos se está ejecutando en el modo de registro de archivo, inicia sesión en el servidor de bases de datos como usuario del SO Oracle y define la variable de entorno de la base de datos:

    export ORACLE_HOME=<oracle home path>
    (get this from /etc/oratab)
    export ORACLE_SID=<database instance name> (you can get this through
    ps -ef | grep pmon)
    export PATH=$ORACLE_HOME/bin:$PATH
    

    Inicia sesión en sqlplus:

    #sqlplus / as sysdba
    #SQL> archive log list;
    Database log mode   Archive Mode
    Automatic archival        Enabled
    Archive destination        +FRA
    Oldest online log sequence     569
    Next log sequence to archive   570
    Current log sequence        570
    #SQL>
    
  • La base de datos debe usar spfile. Comprueba que la base de datos se está ejecutando con spfile:

    #sqlplus / as sysdba
    SQL> show parameter spfile
    NAME      TYPE   VALUE
    ------------------ ----------- ------------
    spfile      string  +DATA/ctdb/spfilectdb.ora
    
  • En el caso de la base de datos Oracle RAC, el archivo de control de la instantánea debe estar ubicado en discos compartidos. En el caso de una base de datos Oracle RAC en ASM, el archivo de control de la instantánea debe estar en discos compartidos.

    Para comprobarlo, conéctate a RMAN y ejecuta el comando show all. Configúralo si es necesario:

        rman target /
    

    A continuación, en RMAN:

       show all
    

    Los parámetros de configuración de RMAN de la base de datos con el nombre único de base de datos CTDB son los siguientes:

    CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
    CONFIGURE BACKUP OPTIMIZATION OFF; # default
    CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
    CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
    CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
    CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
    CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/mnt/ctdb/snapcf_ctdb.f';
    

    En este ejemplo se muestra la configuración definida en el sistema de archivos local.

    En un entorno RAC, debe definirse como un grupo de discos ASM compartido. Para colocarlo en el grupo de discos de ASM, usa lo siguiente:

    CONFIGURE SNAPSHOT CONTROLFILE NAME TO '+<DG name>/snap_<DB name>.f';
    

Preparar una copia de seguridad de una base de datos de Oracle con archivos de datos en un grupo de discos de ASM

Disco de almacenamiento provisional de copia de seguridad y recuperación ante desastres en un grupo de discos de ASM

El parámetro ASM diskstring debe definirse y no puede ser nulo. Inicia sesión en el servidor de bases de datos como usuario del SO de ASM y define la variable de entorno de ASM:

    # export ORACLE_HOME=(oracle ASM home path)
    (get this from /etc/oratab)
    #export ORACLE_SID=(ASM instance name) (you
    can get this through ps ?ef | grep pmon)
    #export PATH=$ORACLE_HOME/bin:$PATH

Conectar con sqlplus:

    #sqlplus / as sysasm
    #sql> show parameter asm_diskstring
    NAME      TYPE   VALUE
    ------------------- ----------- ------------------------------
    asm_diskstring      string  ORCL:*, /dev/sdt1, /dev/sdu1

Si el resultado del valor es nulo, obtén el valor de cadena de disco ASM correcto para los discos ASM antes de continuar con la protección de Backup and DR. La copia de seguridad de Backup and DR añade la ruta de cadena de su disco (/dev/Backup and DR/asm/*) para su disco de almacenamiento provisional de copia de seguridad para asignarlo a ASM.

Disco de almacenamiento provisional de copias de seguridad y recuperación ante desastres en el sistema de archivos

Si vas a proteger una base de datos de Oracle ASM en un sistema de archivos, debes definir la opción Convertir ASM en sistema de archivos como en Detalles y configuración de la aplicación. Consulta Detalles y ajustes de la aplicación para bases de datos de Oracle.

Preparar la autenticación de la base de datos de Oracle

Los siguientes pasos de preparación adicionales solo son necesarios si tienes previsto usar la autenticación de base de datos. La autenticación de bases de datos de Oracle se describe en el artículo Copia de seguridad y recuperación ante desastres mediante la autenticación de bases de datos.

  1. Sigue los pasos que se indican en el artículo Preparar bases de datos Oracle en un entorno Linux.

  2. Crea una cuenta de usuario de base de datos para la copia de seguridad de Backup and DR, si no se ha proporcionado:

    create user act_rman_user identified by <password>;
    
  3. Concede acceso a sysdba a todos los nodos de RAC iniciando sesión en sqlplus en todos los nodos y ejecutando el siguiente comando:

    grant create session, resource, sysdba to act_rman_user;
    

    En Oracle 12c, este rol puede ser sysbackup en lugar de of sysdba y el nombre de usuario de la base de datos empieza por #.

  4. Verifica que se ha concedido el rol sysdba en todos los nodos del entorno RAC:

    #sqlplus / as sysasm
    # sql> select * from gv$pwfile_users;
    INST_ID USERNAME SYSDB SYSOP SYSAS
    ---------- --------------  ----- ----- -----
    1 SYS TRUE TRUE FALSE
    2 SYS TRUE TRUE FALSE
    1 ACT_RMAN_USER TRUE TRUE FALSE
    2 ACT_RMAN_USER TRUE TRUE FALSE
    
  5. Prueba el nombre del servicio en función del tipo de entorno siguiendo estas instrucciones:

Crear y verificar el nombre de servicio de Oracle en un entorno que no sea RAC

El nombre de servicio de Oracle solo se usa para la autenticación de la base de datos. No es necesario para la autenticación del SO.

Ejemplo: Nombre de la base de datos: dbstd Nombre de la instancia: dbstd

  1. Si el nombre de servicio de Oracle no aparece en la lista, crea la entrada del nombre de servicio en el archivo tnsnames.ora en $ORACLE_HOME/network/admin o en $GRID_HOME/network/admin añadiendo la entrada:

    act_svc_dbstd =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST
    = (IP of the database server)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = dbstd)
    ) )
    

    Si el archivo tnsnames.ora se encuentra en una ubicación no estándar, proporcione la ruta absoluta a él en Detalles y configuración de la aplicación, tal como se describe en Detalles y configuración de la aplicación para bases de datos Oracle.

  2. Prueba la entrada del nombre del servicio de la base de datos para asegurarte de que está configurada:

    Inicia sesión como usuario del SO Oracle y define el entorno de Oracle:

    TNS_ADMIN=(tnsnames.ora file location)
    tnsping act_svc_dbstd
    
  3. Comprueba la cuenta de usuario de la base de datos para asegurarte de que la copia de seguridad de Backup and DR se puede conectar:

    sqlplus act_rman_user/act_rman_user@act_svc_dbstd as sysdba
    
  4. Proporcione el nombre de servicio creado (act_svc_dbstd) en el ajuste Nombre de servicio de Oracle, en Detalles y configuración de la aplicación, tal como se describe en Detalles y configuración de la aplicación para bases de datos de Oracle.

Crear y verificar el nombre de servicio de Oracle en un entorno RAC

El nombre de servicio de Oracle solo se usa para la autenticación de la base de datos. No es necesario para la autenticación del SO.

Ejemplo de RAC de tres nodos:

  • Nombre de la base de datos: dbrac

  • Nombre de la instancia 1: dbrac1

  • Nombre de Instance2: dbrac2

  • Nombre de la instancia 3: dbrac3. La protección de la base de datos se ha configurado desde el nodo 3 (nombre de la instancia dbrac3):

  1. Crea una entrada servicename en el archivo tnsnames.ora en $ORACLE_HOME/network/admin o en $GRID_HOME/network/admin añadiendo la siguiente entrada:

    act_svc_dbrac3 =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = (IP of the database server)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (INSTANCE_NAME = dbrac3)
    (SERVICE_NAME = dbrac)
    ) ) )
     Where:
     HOST = This can be SCAN IP in a RAC environment or VIP or IP of the node 3 database server.
    SERVICE_NAME = database name
    INSTANCE_NAME = database instance name on node3
    
  2. Prueba el nombre del servicio:

    Inicia sesión como usuario del SO Oracle y define el entorno de Oracle:

    TNS_ADMIN=(tnsnames.ora file location)
    tnsping act_svc_dbrac3
    
  3. Comprueba la cuenta de usuario de la base de datos para asegurarte de que la copia de seguridad de Backup and DR se puede conectar:

    sqlplus act_rman_user/act_rman_user@act_svc_dbrac3 as sysdba
    
  4. Proporcione el nombre del servicio creado (act_svc_dbrac3) en el ajuste Nombre del servicio de Oracle, en Detalles y ajustes de la aplicación descrito en Detalles y ajustes de la aplicación para bases de datos Oracle.

    Si el archivo tnsnames.ora se encuentra en una ubicación no estándar, proporcione la ruta absoluta al archivo tnsnames.ora en el ajuste Oracle TNS_Admin Path en Application Details & Settings (Detalles y ajustes de la aplicación), tal como se describe en Application details & settings for Oracle databases (Detalles y ajustes de la aplicación para bases de datos Oracle).

Habilitar el seguimiento de cambios de bloques de bases de datos (opcional)

El seguimiento de bloques de cambios de bases de datos se describe en el artículo Seguimiento de cambios de bloques de bases de datos de Oracle (BCT).

Para comprobar si el seguimiento de cambios de bloques de la base de datos está habilitado, haz lo siguiente:

sqlplus / as sysdba

En la petición de SQL:

select * from v$block_change_tracking;

Si el seguimiento de cambios de bloques de la base de datos no está habilitado, habilítelo desde sqlplus:

Usar un grupo de discos de ASM

sqlplus / as sysdba

En la petición de SQL:

alter database enable block change tracking using file '+<ASM Disk Group Name>/<database name>/<dbname>.bct';

Usar el sistema de archivos

sqlplus / as sysdba

En la petición de SQL:

alter database enable block change tracking using file '$ORACLE_HOME/dbs/<dbname>.bct';

Protección desde un nodo de Oracle Data Guard

Puedes proteger una base de datos de Oracle desde nodos de la base de datos principal o desde nodos de espera de Oracle Data Guard. Si la protección se ha configurado desde un nodo de Oracle Data Guard, asegúrate de definir las credenciales del nodo principal en Detalles y configuración de la aplicación en la consola de gestión.

Para la autenticación de la base de datos (solo en Linux)

  • Nombre de usuario o contraseña: las credenciales de la cuenta de usuario de la base de datos. Para que esta cuenta de usuario esté disponible en el nodo de Data Guard con acceso sysdba, se debe crear con el privilegio sysdba en el nodo principal (consulta cómo crear una cuenta de usuario de copia de seguridad con acceso sysdba). A continuación, el archivo de contraseñas (en $ORACLE_HOME/dbs/) del nodo principal debe copiarse en el nodo de Data Guard.

Para la autenticación del SO

  • Nombre de usuario o contraseña: en Autenticación del SO, no se requiere el privilegio sysdba. Esta cuenta de usuario de la base de datos necesita el privilegio connect, alter system. Para que esta cuenta de usuario esté disponible en el nodo de Data Guard, debe crearse en el nodo principal.

Si el usuario no tiene el rol sysdba, necesita grant connect, alter system, select on dba_tablespaces.

Para conceder estos privilegios, en la petición de SQL, haz lo siguiente:

    grant connect, alter system, select on dba_tablespaces to act_rman_user;
  • Nombre de servicio del nodo principal de Oracle Data Guard: es el nombre de servicio del archivo tnsnames.ora configurado en el nodo de Data Guard para conectarse al nodo principal desde el nodo de espera. Se requiere el nombre de servicio del nodo principal de Oracle Data Guard para la autenticación del SO y de la base de datos si la copia de seguridad se configura desde el nodo de espera de Data Guard.

Para obtener información detallada sobre todos los detalles y ajustes, consulta Detalles y ajustes de la aplicación para bases de datos de Oracle.

Nodo de base de datos Autenticación del SO Autenticación de la base de datos
Principal No se necesitan credenciales de base de datos. Se necesitan las credenciales de la base de datos. Si no se selecciona ningún rol, se usa sysdba.
En espera Las credenciales de la base de datos son necesarias incluso para la autenticación del SO (para conectarse a la principal y cambiar el registro). Las credenciales de la base de datos no tienen por qué tener el rol sysdba o sysbackup. Si se usa una cuenta sysdba o sysbackup, defina el rol de usuario en Rol de usuario en la base de datos en Detalles y configuración de la aplicación. Se necesitan las credenciales de la base de datos. Las credenciales de la base de datos deben corresponder al rol sysdba o sysbackup, y el valor de Rol de usuario en la base de datos debe ser sysdba o sysbackup en Detalles y configuración de la aplicación. Para configurar la autenticación de base de datos, consulta Habilitar la autenticación de base de datos en un servidor Oracle.

Configurar la conmutación por error transparente de RAC de la copia de seguridad de RMAN a otros nodos

El agente de Backup y recuperación tras desastres debe estar instalado y en ejecución en todos los nodos que quieras que formen parte de la configuración de conmutación por error de la copia de seguridad. La protección se configura desde un solo nodo.

En Detalles y configuración > Nodos de clúster, especifica el nodo de conmutación por error en un entorno de Oracle RAC:

    <Failover choice>:<Node IP>:<Servicename>:<Role>

Donde:

  • Opción de conmutación por error: el orden de los nodos en los que se va a realizar la conmutación por error.

  • IP del nodo: dirección IP del nodo en el que quieres que se ejecute la copia de seguridad

  • Servicename: el nombre del servicio creado y especificado en el archivo tnsnames.ora para la copia de seguridad de RMAN de Backup and DR. Puede ser un servicio dedicado nuevo creado para la copia de seguridad de Backup and DR o el nombre SID (nombre de la instancia) de la base de datos en ese nodo.

  • Rol: F, que indica que es un nodo de conmutación por error

Para crear un nuevo nombre de servicio en el nodo de failover en el archivo tnsnames.ora ($ORACLE_HOME/network/admin/tnsnames.ora o $GRID_HOME/network/admin/tnsnames.ora)

Ejemplo en un entorno de Oracle One Node

RAC One Node consta de dos nodos:

172.15.157.200
172.15.157.201

Tiene una base de datos OneN que se ejecuta solo en uno de los nodos en un momento dado. OneN está protegido de 172.15.157.200, con la configuración de nodo de clúster especificada como 1:172.15.157.201:OneN:F

Si OneN pasa a 172.15.157.201, la copia de seguridad de Backup and DR la sigue e inicia el siguiente trabajo de copia de seguridad desde 172.15.157.201 en lugar de 200. Si se produce una conmutación por error durante un trabajo de copia de seguridad, el trabajo falla y el siguiente usa el nodo de conmutación por error para iniciar una nueva copia de seguridad.

Ejemplo en un entorno de Oracle que no es de un solo nodo:

  • RAC de 2 nodos (dbrac1 y dbrac2)

  • La protección se define mediante el nombre de la base de datos "dbrac" de dbrac1 y la conmutación por error se debe definir en dbrac2.

  • Nombre del servicio en el nodo 2: act_svc_dbrac2

  • IP del nodo 2 o IP de análisis: 172.1.1.0

act_svc_node2 =

  (DESCRIPTION =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 172.1.1.0)(PORT = 1521))
  (CONNECT_DATA =
  (SERVER = DEDICATED)
  (INSTANCE_NAME = dbrac2)
  (SERVICE_NAME = dbrac)
  ) )

En Application Details & Settings (Detalles y configuración de la aplicación), las entradas de los nodos del clúster son las siguientes:

Failoverchoice:NodeIP:Servicename:Role

1:172.1.1.1:act_svc_node2:F

Comportamiento de las entradas de nodos de clúster F y M

F: nodo de conmutación por error, solo participa cuando el nodo de protección no está disponible para realizar la copia de seguridad.

M nodo de mantenimiento. Sustituye al nodo de protección si se valida para poder realizar la copia de seguridad.

Compresión de registros de archivo de Oracle

La copia de seguridad de registros de archivo de copias de seguridad y recuperación tras fallos admite la compresión de conjuntos de copias de seguridad de registros de Oracle. El tipo de compresión que selecciones depende de estos ajustes de configuración de RMAN. Selecciona una opción en función de tu caso práctico.

  • Los ratios de compresión más bajos son los que menos influyen en el rendimiento de las copias de seguridad. Son más adecuados para entornos en los que los recursos de CPU son el factor limitante.

  • Se recomienda la compresión media en la mayoría de los entornos. Ofrecen una buena combinación de relaciones de compresión y velocidad.

  • Los ratios de compresión altos consumen muchos recursos y son más adecuados para copias de seguridad en redes más lentas, donde el factor limitante es la velocidad de la red.

El ajuste predeterminado es Básico. La versión básica no requiere Oracle Advanced Compression.

Para comprobar el tipo de compresión definido en el entorno, ejecuta el comando show all desde la petición de RMAN:

rman target /

    show all

Configurar servicios de bases de datos Oracle para balancear la carga en varios nodos

Este procedimiento solo se aplica a las bases de datos de Oracle ASM. En este ejemplo, se presupone un entorno RAC de cuatro nodos. Los nodos 3 y 4 se van a equilibrar para usarlos como copia de seguridad.

Consulta los siguientes artículos:

Para equilibrar la carga entre los nodos de Oracle RAC, se requiere la autenticación de la base de datos de Oracle.

Configurar una copia de imagen de RMAN paralela desde varios nodos

En un entorno RAC, puede configurar la copia de seguridad para que se ejecute en paralelo desde varios nodos.

  1. Instala el agente de copia de seguridad y recuperación ante desastres en todos los nodos.

  2. Configura la asignación del grupo de discos de ASM a los nodos 3 y 4 mediante los detalles y la configuración de la aplicación.

  3. Crea un servicio de base de datos con srvctl para que se ejecute desde los nodos 3 y 4.

  4. Usa este servicio para especificarlo en Detalles y configuración de la aplicación. Elige Número de canales en Configuración avanzada (número de canales). RMAN distribuye los canales entre los nodos 3 y 4.

  5. Define el nombre de servicio de Oracle y los nodos miembros de RAC.

Configurar servicios de Oracle Database para balancear la carga en varios nodos

  1. Configurar en Detalles y ajustes de la aplicación: Nodos miembros de RAC: IP del nodo 3 e IP del nodo 4.

  2. Crea un servicio de base de datos para que el nodo de mantenimiento lo use Copia de seguridad y recuperación tras fallos para crear copias de seguridad:

    srvctl add service -d <dbname> -s act_service_<dbname>
    -r <dbinstance3>,<dbinstance4> srvctl start service -d <dbname>
    -s act_service_<dbname>
    
  3. Añade la entrada tns del nombre de servicio de Oracle creado en los nodos de copia de seguridad (nodos dbinstance3 y dbinstance4 en este ejemplo) en el archivo tnsnames.ora ($ORACLE_HOME/network/admin/tnsnames.ora o $GRID_HOME/network/admin/tnsnames.ora).

    act_service_<dbname> =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = <SCAN IP>)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = <DATABASE NAME>)
    ) )
    
  4. Prueba el nombre del servicio creado:

    tnsping actservice

  5. Prueba el nombre del servicio y las credenciales de usuario:

    sqlplus act_rman_user/act_rman_user@act_service_<dbname> as sysdba
    
  6. Especifique este nombre de servicio en Application Details & Settings (Detalles y ajustes de la aplicación) > Nombre de servicio de Oracle.

  7. Crea un servicio de copia de seguridad de registros de archivo específico en un nodo protegido (por ejemplo, el nodo 3) que se utilizará para la copia de seguridad:

    srvctl add service -d <dbname> -s act_arc_service_<dbname> -r <dbinstance3>
    srvctl start service -d <dbname> -s act_arc_service_<dbname>
    
  8. Añade la entrada tns del nombre del servicio de copia de seguridad del registro de archivo creado en el archivo tnsnames.ora ($ORACLE_HOME/network/admin/tnsnames.ora o en $GRID_HOME/network/admin/tnsnames.ora).

    act_arc_service_<dbname> =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = <SCAN IP>)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (INSTANCE_NAME = <node 3 instance>)
    (SERVICE_NAME = act_arc_service_<dbname>)
    ) )
    
  9. Prueba el nombre del servicio:

    tnsping act_archservice

  10. Especifica este nombre de servicio en Application Details & Settings (Detalles y configuración de la aplicación) > archive log backup servicename (nombre de servicio de copia de seguridad del registro de archivo).

Parchear Oracle 12c

Es posible que los montajes de aplicaciones de copia de seguridad y recuperación ante desastres fallen si tu instalación de Oracle 12c no incluye este parche, que se puede descargar desde el portal de asistencia de Oracle:

Error de Oracle Database 12c n.º 19404068 (ORA-1610 ON RECOVER DATABASE FOR CREATED CONTROLFILE)

  • (Parche 19404068) Linux x86-64 para Oracle 12.1.0.2.0

Para comprobar si el parche está instalado, ejecuta el siguiente comando:

    $cd $ORACLE_HOME/OPatch
    $./opatch lsinventory -details
    $./opatch lsinventory -details | grep 19404068

Siguientes pasos

Antes de añadir el host de Oracle, continúa con lo siguiente:

  1. (Opcional) Usar Oracle Direct NFS con Backup y DR
  2. Parches de Oracle y problemas conocidos

Guía para administradores de bases de datos de Oracle