Rubrique précédente: Restauration d'espaces disque logiquesRubrique suivante: Dépannage


Restauration de fichiers de contrôle

Si des fichiers de contrôle de base de données sont perdus ou endommagés, vous pouvez les restaurer en effectuant une récupération de niveau fichier. Une fois la récupération de niveau fichier réussie, vous devez récupérer les fichiers de contrôle manuellement.

Procédez comme suit:

  1. Connectez-vous à l'ordinateur cible en tant qu'utilisateur root.
  2. Arrêtez l'instance d'Oracle.
    SQL>shutdown abort
    
  3. Démarrez la base de données dans l'état nomount.
    SQL>startup nomount
    
  4. Répertorie le chemin de tous les fichiers de contrôle.
    SQL> show parameter control_files;
    NOM                                 TYPE        VALEUR
    ------------------------------------ ----------- ------------------------------
    control_files                        string      /opt/oracle/oradata/lynx/control01.ctl, /opt/oracle/flash_recovery_area/lynx/control02.ctl
    
  5. Restaurez les fichiers de contrôle à l'aide de l'assistant de restauration. Pour plus d'informations sur le processus de restauration, reportez-vous à la rubrique Récupération de niveau fichier sur des nœuds Linux.
  6. Spécifiez les informations suivantes dans l'assistant de restauration et soumettez le job :
    1. Lors de la sélection des fichiers et dossiers, entrez le nom du fichier de contrôle requis et lancez la recherche. Répétez cette étape jusqu'à avoir sélectionné tous les fichiers de contrôle.

      Exemple : Entrez control01.ctl et lancez la recherche.

    2. Sur la page Ordinateur cible, entrez les informations suivantes :
      • Sélectionnez Restaurer vers l'emplacement d'origine.
      • Entrez le nom d'hôte ou l'adresse IP du serveur Oracle cible.
      • Entrez le nom d'utilisateur root et le mot de passe du serveur Oracle cible.
      • Sélectionnez Ecraser les fichiers existants pour l'option Résolution des conflits.
  7. Une fois que tous les fichiers de contrôle ont été restaurés, montez la base de données et ouvrez-la.
    $sqlplus / as sysdba
    SQL>alter database mount;
    
  8. Récupérez la base de données avec la commande RECOVER et ajoutez la clause USING BACKUP CONTROLFILE.
    SQL> RECOVER DATABASE USING BACKUP CONTROLFILE
    
  9. Appliquez les journaux archivés demandés.

    Remarque : Si le journal archivé requis est manquant, cela signifie qu'un enregistrement de journalisation nécessaire figure parmi les fichiers de journalisation en ligne. Cela s'explique par le fait que les modifications non archivées se trouvaient dans les journaux en ligne lorsque l'instance a échoué. Vous pouvez spécifier le chemin complet d'un fichier de journalisation en ligne et appuyer sur Entrée (vous devrez peut-être effectuer plusieurs essais avant de trouver le journal souhaité).

    Exemple :

    SQL> RECOVER DATABASE USING BACKUP CONTROLFILE 
    ORA-00279: change 1035184 generated at 27/05/14 18:12:49 needed for thread 1
    ORA-00289: suggestion :
    /opt/oracle/flash_recovery_area/LYNX/archivelog/2014_05_27/o1_mf_1_6_%u_.arc
    ORA-00280: change 1035184 for thread 1 is in sequence #6
    Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
    /opt/oracle/oradata/lynx/redo03.log
    Log applied.
    La récupération du média est terminée.
    
  10. Une fois la récupération terminée, ouvrez la base de données à l'aide de la clause RESETLOGS.
    SQL>alter database open resetlogs;
    

Les fichiers de contrôle ont bien été récupérés.