Protéger et récupérer des bases de données Oracle dans un environnement Windows

Avant de commencer

Avant de pouvoir découvrir, protéger et monter des bases de données Oracle dans un environnement Windows, assurez-vous de vérifier les points suivants:

  1. Vérifiez les paramètres suivants sur le serveur de base de données:

    1. La base de données Oracle et l'écouteur Oracle sont opérationnels (vérifiez les services Windows).

    2. Vérifiez qu'une entrée tns existe avec le nom SID. Le fichier tnsnames.ora se trouve sous

      %ORACLE_HOME%\network\admin
      
    3. Vérifiez que l'entrée tns est valide en exécutant la commande suivante:

      %ORACLE_HOME%\bin\tnsping <SID>
      
  2. Vérifiez si le mode de journalisation est défini sur "Archive Log" (Journal d'archive) :

    sql> archive log list
    

    Si la base de données est en mode journal sans archivage, rétablissez-la en mode journal d'archivage:

    sql> shutdown immediate;
    sql> startup mount;
    sql> alter database archivelog;
    sql> alter database open;
    
  3. Activez le suivi des blocs de modification de la base de données. Lorsque le BCT de la base de données est désactivé, le temps de sauvegarde incrémentielle est affecté. La fonctionnalité de suivi des modifications de blocs est disponible dans Oracle Enterprise Edition. Exécutez une requête SQL pour vérifier que le suivi des blocs de modifications est activé. Exécutez la requête:

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

Pour activer le suivi des modifications de bloc:

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

Sauvegarder une base de données Oracle dans un environnement Windows

Pour sauvegarder une base de données Oracle dans un environnement Windows, procédez comme suit:

  1. Définissez les informations et paramètres d'application pour les bases de données Oracle.

  2. Appliquez un plan de sauvegarde pour protéger la base de données.

Problème connu

Oracle 19c SQLPlus (sqlplus.exe) se bloque parfois sous Windows lors de l'exécution de la commande de sortie (ID de document 2820655.1). Ce bug est spécifique à Windows. Oracle a confirmé que ce problème se produit dans les versions SQLPlus 19.10, 19.11 et 19.12. Oracle a fourni les solutions suivantes:

  • Utilisez SQL*Plus 21.1 ou version ultérieure (ou)
  • Appliquez le correctif 31466370. Ce correctif est disponible pour les versions 19.11 et 19.13.

Récupérez manuellement les bases de données Oracle dans un environnement Windows à l'aide de RMAN vers un point de sauvegarde planifié si le journal d'archive n'est pas protégé par la sauvegarde et la reprise après sinistre.

Pour récupérer une base de données Oracle entière dans un environnement Windows:

  1. Montez l'instantané de sauvegarde de la base de données à partir de Backup and DR sur le serveur Oracle, comme décrit dans Monter une base de données Oracle en tant que montage standard.

  2. Définissez l'environnement de la base de données et démarrez-la en état de non-montage à l'aide du fichier de paramètres du volume installé Backup and DR (par exemple, pour un volume de base de données installé sur E:):

    sqlplus / as sysdba
    sql> startup nomount pfile='E:\<sid>___backup.ora';
    
  3. Créez un fichier spfile à partir d'un fichier pfile:

    sql> create spfile='%ORACLE_HOME%\database\spfile<sid>.ora'
    from pfile='E:\<sid>___backup.ora';
    
  4. Démarrez la base de données avec le fichier spfile dans l'état nomount:

    sql> shutdown immediate;
    sql> startup nomount;
    
  5. Restaurez le fichier de contrôle à l'aide de RMAN à partir du volume installé pour la sauvegarde et la reprise après sinistre:

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

    rman> alter database mount;
    
  7. Cataloguez le fichier de données et le dossier de fichiers d'archive du volume installé avec Backup and DR dans RMAN:

    rman> run
    {
    catalog start with 'E:\datafile' noprompt;
    catalog start with 'E:\archivelog' noprompt;
    }
    
  8. Restaurez et récupérez la base de données:

    rman> run
    {
    restore database;
    recover database;
    }
    
  9. Ouvrez la base de données avec l'option de réinitialisation du journal:

    rman> alter database open resetlogs;
    

Récupérer manuellement des bases de données Oracle dans un environnement Windows à l'aide de RMAN vers un point de sauvegarde planifié avec un transfert en avant du journal d'archive protégé par Backup and DR

  1. Montez l'image à partir du serveur de base de données source pour effectuer la récupération. Remettez l'instantané de sauvegarde de Backup and DR sur le serveur Oracle, comme décrit dans Monter une base de données Oracle en tant que montage standard.

  2. Définissez l'environnement de la base de données et démarrez-la en état de non-montage à l'aide du fichier de paramètres du volume monté Backup and DR. Dans cet exemple, l'image de sauvegarde de la base de données est montée à: E:\ et le journal d'archive protégé est monté à: Z:.

       sqlplus / as sysdba
    
       startup nomount pfile='E:\<sid>___backup.ora';
    
  3. Créez un fichier spfile à partir d'un fichier pfile:

    sql> create spfile='%ORACLE_HOME%\database\spfile<sid>.ora' from
    pfile='E:\<sid>___backup.ora';
    
  4. Démarrez la base de données avec le fichier spfile dans l'état "nomount" :

    ```sql
    shutdown immediate;
    startup nomount;
    ```
    
  5. Restaurez le fichier de contrôle à l'aide de RMAN à partir de l'image de journal d'archive montée pour la sauvegarde et la reprise après sinistre:

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

    ```rman
    rman> alter database mount;
    ```
    
  7. Cataloguez le fichier de données et le dossier archivelog à partir de l'image de base de données montée pour la sauvegarde et la reprise après sinistre et de l'image de journal d'archive dans RMAN:

    ```rman
    rman> run
    {
    catalog start with 'E:\datafile' noprompt;
    catalog start with 'E:\archivelog' noprompt;
    catalog start with 'Z:\archivelog' noprompt;
    }
    ```
    
  8. Restaurez et récupérez la base de données:

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

    Pour effectuer une récupération à un moment précis, exécutez la commande de récupération comme suit:

    ```rman
    rman> run
     {
      restore database;
      recover database until time "to_date('<time stamp>','yyyymmddhh24mi')";
     }
     ```
    
  9. Ouvrez la base de données avec l'option de réinitialisation du journal:

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

    La base de données est disponible en lecture et en écriture.

Script de surveillance pour surveiller l'installation des volumes de base de données

Si vous créez un montage compatible avec les applications, vous pouvez utiliser un script de surveillance pour afficher les volumes installés à partir de Backup and DR et les processus Oracle en cours d'exécution. Les montages compatibles avec les applications sont décrits dans la section Installer une base de données Oracle en tant qu'application virtuelle.

Lorsque vous effectuez un montage compatible avec les applications, vous pouvez utiliser ce script de surveillance. L'emplacement du script doit être: C:\Program Files\Backup and DR\scripts. Les scripts exécutés sur des hôtes Windows doivent être des fichiers .bat ou .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
    ```

Le résultat se présente comme suit:

    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