Previous Topic: Wiederherstellung von TablespacesNext Topic: Fehlerbehebung


Wiederherstellung von Kontrolldateien

Wenn Datenbank-Kontrolldateien verloren oder beschädigt sind, können Sie sie wiederherstellen, indem Sie eine Wiederherstellung auf Dateiebene ausführen. Nachdem die Wiederherstellung auf Dateiebene erfolgreich war, müssen Sie die Kontrolldateien manuell wiederherstellen.

Folge diesen Schritten:

  1. Melden Sie sich als root-Benutzer beim Zielrechner an.
  2. Fahren Sie die Oracle-Instanz herunter.
    SQL>shutdown abort
    
  3. Starten Sie die Datenbank im "nomount"-Status.
    SQL>startup nomount
    
  4. Listen Sie den Pfad für alle Kontrolldateien auf.
    SQL> Parametersteuerungsdateien anzeigen;
    NAME                                 TYPE       WERT
    ------------------------------------ ----------- ------------------------------
    control_files                        string      /opt/oracle/oradata/lynx/control01.ctl, /opt/oracle/flash_recovery_area/lynx/control02.ctl
    
  5. Stellen Sie die Kontrolldatei mithilfe des Wiederherstellungsassistenten wieder her. Weitere Informationen zum Wiederherstellungsvorgang finden Sie unter "So führen Sie eine Wiederherstellung der Dateiebene unter Linux-Knoten aus".
  6. Geben Sie folgende Informationen im Wiederherstellungs-Assistenten an, und übergeben Sie den Job:
    1. Wenn Sie die Dateien und Ordner auswählen, geben Sie den erforderlichen Namen der Kontrolldatei ein und führen eine Suche durch.. Wiederholen Sie diesen Schritt, bis alle Kontrolldateien ausgewählt sind.

      Beispiel: Geben Sie "control01.ctl" ein, und führen Sie eine Suche durch.

    2. Geben Sie auf der Seite "Zielcomputer" die folgenden Informationen ein:
      • Wählen Sie "Am ursprünglichen Speicherort wiederherstellen" aus.
      • Geben Sie den Hostnamen oder die IP-Adresse des Oracle-Zielservers ein.
      • Geben Sie den root-Benutzernamen und das Kennwort des Oracle-Zielservers ein.
      • Wählen Sie als "Konfliktlösung" die Option "Vorhandene Dateien überschreiben" aus.
  7. Nachdem die Kontrolldateien wiederhergestellt wurden, laden Sie die Datenbank, und öffnen Sie sie.
    $sqlplus / as sysdba
    SQL>alter database mount;
    
  8. Stellen Sie die Datenbank mit dem Befehl RECOVER wieder her, und fügen Sie die Klausel USING BACKUP CONTROLFILE hinzu.
    SQL> RECOVER DATABASE USING BACKUP CONTROLFILE
    
  9. Wenden Sie die aufgeforderten archivierten Protokolle an.

    Hinweis: Wenn das erforderliche archivierte Protokoll fehlt, dann bedeutet dies, dass sich ein notwendiger Redo-Datensatz in den Online-Redo-Protokollen befindet. Dies tritt auf, weil sich unarchivierte Änderungen in den Online-Protokollen befinden, als die Instanz fehlgeschlagen ist. Sie können den vollständigen Pfad einer Online-Redo-Protokolldatei angeben, und drücken Sie die Eingabetaste (möglicherweise müssen Sie dies ein paar Mal probieren, bis Sie das richtige Protokoll finden).

    Beispiel:

    SQL> RECOVER DATABASE USING BACKUP CONTROLFILE 
    ORA-00279: change 1035184 generated at 05/27/2014 18:12:49 needed for thread 1
    ORA-00289: Vorschlag:
    /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
    Geben Sie das Protokoll an: {<RET>=suggested | filename | AUTO | CANCEL}
    /opt/oracle/oradata/lynx/redo03.log
    Log applied.
    Media recovery complete.
    
  10. Öffnen Sie die Datenbank mit der RESETLOGS-Klausel, nachdem Sie den Wiederherstellungsprozess abgeschlossen haben.
    SQL>alter database open resetlogs;
    

Die Kontrolldateien sind erfolgreich wiederhergestellt.