Proteger y recuperar bases de datos de Oracle en un entorno de Windows

Antes de comenzar

Antes de descubrir, proteger y activar bases de datos de Oracle en un entorno de Windows, asegúrate de verificar lo siguiente:

  1. Verifica la siguiente configuración en el servidor de bases de datos:

    1. La base de datos de Oracle y el objeto de escucha de Oracle están en funcionamiento (consulta los servicios de Windows).

    2. Confirma que haya una entrada tns con el nombre SID. El archivo tnsnames.ora se encuentra en

      %ORACLE_HOME%\network\admin
      
    3. Ejecuta el siguiente comando para verificar que la entrada de tns sea válida:

      %ORACLE_HOME%\bin\tnsping <SID>
      
  2. Verifica si el modo de registro está configurado en el modo de registro de archivo:

    sql> archive log list
    

    Si la base de datos está en modo de registro sin archivo, vuelve a establecerla en el modo de registro de archivo:

    sql> shutdown immediate;
    sql> startup mount;
    sql> alter database archivelog;
    sql> alter database open;
    
  3. Habilita el seguimiento de bloques de cambios de la base de datos. Si la BCT de la base de datos está desactivada, se verá afectado el tiempo de la copia de seguridad incremental. La función de seguimiento de bloqueo de cambios está disponible en Oracle Enterprise Edition. Ejecuta una consulta en SQL para verificar que el seguimiento de bloqueo de cambios esté habilitado. Ejecuta la siguiente consulta:

    sqlplus / as sysdba
    sql> select * from v$block_change_tracking;
    

Para habilitar el seguimiento de bloqueo de cambios, sigue estos pasos:

    sql> alter database enable block change tracking
    using file '<Oracle home directory>\orcl.bct';

Crea una copia de seguridad de una base de datos de Oracle en un entorno de Windows

Para crear una copia de seguridad de una base de datos de Oracle en un entorno de Windows, sigue estos pasos:

  1. Establece los detalles y la configuración de la aplicación para las bases de datos de Oracle.

  2. Aplica un plan de copia de seguridad para proteger la base de datos.

Problema conocido

En ocasiones, Oracle 19c SQLPlus (sqlplus.exe) se bloquea en Windows cuando se ejecuta el comando de salida (ID de documento 2820655.1). Este error es específico de Windows. Oracle confirmó que este problema ocurre en las versiones 19.10, 19.11 y 19.12 de SQLPlus. Oracle proporcionó las siguientes soluciones:

  • Usa SQL*Plus 21.1 o una versión posterior
  • Aplica el parche:31466370. Este parche está disponible para las versiones 19.11 y 19.13.

Recupera bases de datos de Oracle en un entorno de Windows de forma manual con RMAN en un punto de copia de seguridad programado si el archivo de registro no está protegido a través de la copia de seguridad y la DR

Para recuperar una base de datos de Oracle completa en un entorno de Windows, haz lo siguiente:

  1. Activa la instantánea de la copia de seguridad de la base de datos de Backup and DR en el servidor de Oracle, como se detalla en Cómo activar una base de datos de Oracle como activación estándar.

  2. Configura el entorno de la base de datos y comienza la base de datos en estado sin activar con el archivo de parámetros del volumen activado de la copia de seguridad y DR (por ejemplo, para un volumen de base de datos activado en E:):

    sqlplus / as sysdba
    sql> startup nomount pfile='E:\<sid>___backup.ora';
    
  3. Crea un archivo spfile a partir de un archivo pfile:

    sql> create spfile='%ORACLE_HOME%\database\spfile<sid>.ora'
    from pfile='E:\<sid>___backup.ora';
    
  4. Inicia la base de datos con spfile en el estado nomount:

    sql> shutdown immediate;
    sql> startup nomount;
    
  5. Restablece el archivo de control con RMAN desde el volumen activado de Backup and DR:

    rman target /
    rman> restore controlfile from 'E:\cf-D_<sid>-id_<id>.ctl';
    
  6. Activa la base de datos:

    rman> alter database mount;
    
  7. Cataloga el archivo de datos y la carpeta del archivo de almacenamiento en RMAN desde el volumen activado de Backup and DR:

    rman> run
    {
    catalog start with 'E:\datafile' noprompt;
    catalog start with 'E:\archivelog' noprompt;
    }
    
  8. Restablece y recupera la base de datos:

    rman> run
    {
    restore database;
    recover database;
    }
    
  9. Abre la base de datos con la opción de restablecer el registro:

    rman> alter database open resetlogs;
    

Recupera bases de datos de Oracle en un entorno de Windows de forma manual con RMAN en un punto de copia de seguridad programado con la transferencia de copia de seguridad y el registro protegido por DR

  1. Activa la imagen del servidor de la base de datos de origen para recuperarla. Activa la instantánea de la copia de seguridad de Backup and DR en el servidor de Oracle, como se detalla en Cómo activar una base de datos de Oracle como activación estándar.

  2. Establece el entorno de la base de datos y, luego, iníciala en estado sin activar con el archivo de parámetros del volumen activado de Backup and DR. En este ejemplo, la imagen de la copia de seguridad de la base de datos se activa en E:\ y el registro de archivo protegido se activa en Z:.

       sqlplus / as sysdba
    
       startup nomount pfile='E:\<sid>___backup.ora';
    
  3. Crea un archivo spfile a partir de un archivo pfile:

    sql> create spfile='%ORACLE_HOME%\database\spfile<sid>.ora' from
    pfile='E:\<sid>___backup.ora';
    
  4. Inicia la base de datos con spfile en el estado sin activar:

    ```sql
    shutdown immediate;
    startup nomount;
    ```
    
  5. Restablece el archivo de control con RMAN desde la imagen de registro de archivo del archivo de copia de seguridad y DR:

    ```rman
    rman target /
    rman> restore controlfile from 'Z:\cf-D_<sid>-id_<id>.ctl';
    ```
    
  6. Activa la base de datos:

    ```rman
    rman> alter database mount;
    ```
    
  7. Cataloga el archivo de datos y la carpeta de registro de archivo de la imagen de la base de datos y el registro de archivo montados de la copia de seguridad y la DR en RMAN:

    ```rman
    rman> run
    {
    catalog start with 'E:\datafile' noprompt;
    catalog start with 'E:\archivelog' noprompt;
    catalog start with 'Z:\archivelog' noprompt;
    }
    ```
    
  8. Restablece y recupera la base de datos:

    ```rman
    rman> run
    {
    restore database;
    recover database;
    }
    ```
    

    Para realizar una recuperación de un momento determinado, ejecuta el comando recover de la siguiente manera:

    ```rman
    rman> run
     {
      restore database;
      recover database until time "to_date('<time stamp>','yyyymmddhh24mi')";
     }
     ```
    
  9. Abre la base de datos con la opción de restablecer el registro:

    ```rman
    rman> alter database open resetlogs;
    ```
    

    La base de datos está disponible para operaciones de lectura y escritura.

Mira la secuencia de comandos para detectar si se activan volúmenes de la base de datos

Si creas una activación compatible con la aplicación, puedes usar una secuencia de comandos de supervisión para mostrar los volúmenes que se activan desde Backup and DR y los procesos de Oracle que se ejecutan. Los activaciones compatibles con aplicaciones se describen en Cómo activar una base de datos de Oracle como una aplicación virtual.

Cuando realices una activación compatible con la aplicación, puedes usar esta secuencia de comandos de vigilancia. La ubicación de la secuencia de comandos debe ser: C:\Program Files\Backup and DR\scripts. Las secuencias de comandos que se ejecutan en hosts de Windows deben ser archivos .bat o .vbs.

    ```Windows
    @echo off
    :loop
    echo. > watchtemp
    echo ------------------ >> watchtemp
    echo  Oracle Processes >> watchtemp
    echo ------------------ >> watchtemp
    tasklist /svc | findstr oracle >> watchtemp
    echo. >> watchtemp
    echo ------------------ >> watchtemp
    echo   Backup and DR Mounts >> watchtemp
    echo ------------------ >> watchtemp
    wmic volume get label, name | findstr Backup and DR >> watchtemp
    echo. >> watchtemp
    cls
    type watchtemp
    timeout 2 > null
    goto loop
    ```

Esto produce un resultado como el siguiente:

    Oracle Processes
    ------------------
    oracle.exe                    1492 OracleServiceORCL
    oracle.exe                    3768 OracleServiceTestDB
    oracle.exe                     872 OracleServiceTestDB2
    ------------------
      Backup and DR Mounts
    ------------------
    Backup and DR-Backup-ORCL    D:\mount_1