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

Antes de empezar

Antes de poder detectar, proteger y montar bases de datos de Oracle en un entorno de Windows, asegúrate de que se cumplen los siguientes requisitos:

  1. Comprueba los siguientes ajustes en el servidor de la base de datos:

    1. La base de datos de Oracle y el Listener de Oracle están en funcionamiento (comprueba los servicios de Windows).

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

      %ORACLE_HOME%\network\admin
      
    3. Comprueba que la entrada tns sea válida ejecutando el siguiente comando:

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

    sql> archive log list
    

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

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

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

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

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

Crear 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 Windows, sigue estos pasos:

  1. Define 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

Oracle 19c SQLPlus (sqlplus.exe) se bloquea ocasionalmente en Windows al ejecutar el comando exit (ID de documento 2820655.1). Este error es específico de Windows. Oracle ha confirmado que este problema se produce en las versiones 19.10, 19.11 y 19.12 de SQLPlus. Oracle ha proporcionado estas 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.

Recuperar manualmente bases de datos de Oracle en un entorno de Windows mediante RMAN en un punto de copia de seguridad programado si el archivo de registro no está protegido mediante Backup and DR

Para recuperar una base de datos de Oracle completa en un entorno de Windows, sigue estos pasos:

  1. Monta la instantánea de la copia de seguridad de la base de datos de Backup and DR en el servidor de Oracle, tal como se explica en el artículo Montar una base de datos de Oracle como un montaje estándar.

  2. Define el entorno de la base de datos e inicia la base de datos en estado sin montar con el archivo de parámetros del volumen montado de Backup and DR (por ejemplo, para un volumen de base de datos montado en E:):

    sqlplus / as sysdba
    sql> startup nomount pfile='E:\<sid>___backup.ora';
    
  3. Crear 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 el archivo spfile en el estado nomount:

    sql> shutdown immediate;
    sql> startup nomount;
    
  5. Restaura el archivo de control mediante RMAN desde el volumen montado de Backup and DR:

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

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

    rman> run
    {
    catalog start with 'E:\datafile' noprompt;
    catalog start with 'E:\archivelog' noprompt;
    }
    
  8. Restaura 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;
    

Recuperar manualmente bases de datos de Oracle en un entorno de Windows mediante RMAN hasta un punto de copia de seguridad programado con la restauración de los archivelogs protegidos por Backup and DR

  1. Monta la imagen desde el servidor de la base de datos de origen para recuperarla. Monta la captura de la copia de seguridad de Backup and DR en el servidor de Oracle, tal como se explica en el artículo Montar una base de datos de Oracle como un montaje estándar.

  2. Define el entorno de la base de datos e inicia la base de datos en el estado sin montar con el archivo de parámetros del volumen montado de Backup and DR. En este ejemplo, la imagen de backup de la base de datos se monta en E:\ y el registro de archivo protegido se monta en Z:.

       sqlplus / as sysdba
    
       startup nomount pfile='E:\<sid>___backup.ora';
    
  3. Crear 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;
    startup nomount;
    ```
    
  5. Restaura el archivo de control mediante RMAN desde la imagen del registro de archivado montado de Backup and DR:

    ```rman
    rman target /
    rman> restore controlfile from 'Z:\cf-D_<sid>-id_<id>.ctl';
    ```
    
  6. Monta 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 la imagen del registro de archivo montadas de Backup and 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. Restaura y recupera la base de datos:

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

    Para restaurar a un momento dado específico, ejecuta el comando de recuperación 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 lectura y escritura.

Secuencia de comandos para monitorizar el montaje de volúmenes de bases de datos

Si creas un montaje compatible con aplicaciones, puedes usar un script de monitorización para mostrar los volúmenes que se están montando desde Backup and DR y los procesos de Oracle que se están ejecutando. Los montajes que tienen en cuenta las aplicaciones se describen en Montar una base de datos de Oracle como una aplicación virtual.

Cuando realices un montaje compatible con aplicaciones, puedes usar este script de monitorización. La ubicación de la secuencia de comandos debe ser C:\Archivos de programa\Backup and DR\scripts. Los scripts 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
    ```

Se generará 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