Wiederherstellung: Fehlen aller Steuerdateien 

Sie haben sämtliche Steuerdateien verloren.

Die normalen Datenbankaktivitäten laufen weiter bis zur nächsten Aktualisierung der Steuerdatei. Wenn dies geschieht (spätestens beim nächsten Redo-Log-Dateiwechsel oder bei einem Checkpoint), stürzt das Datenbanksystem ab.

Eine vollständige Wiederherstellung der Datenbank ist möglich, wenn eine der beiden folgenden Bedingungen erfüllt wird:

Sollte tatsächlich einmal der Fall eintreten, daß alle Steuerdateien (auch die Sicherungen) verlorengegangen sind, müssen Sie zuerst die Steuerdatei wieder aufbauen und können erst dann die Wiederherstellung beginnen. Dieses Verfahren ist wesentlich aufwendiger und komplizierter und nicht in jedem Fall erfolgversprechend. Deshalb hier noch einmal folgender Hinweis, der nicht oft genug wiederholt werden kann:

Halten Sie sich an die SAP-Empfehlung und sichern Sie die Datenbank nach jeder Strukturänderung! So verfügen Sie immer über die Sicherung einer Steuerdatei, die den aktuellen Zustand der Datenbank wiederspiegelt.

Wiederherstellung mit der gesicherten Steuerdatei

In dem nachfolgend beschriebenen Verfahren wird davon ausgegangen, daß Sie die Steuerdatei aus Ihrer letzten Datenbanksicherung zurückladen können.

Um die Datenbank auf den aktuellen Stand zu bringen, müssen die entsprechenden Redo-Log-Dateien vorhanden sein.

Es ist sehr wichtig, daß die gesicherte Steuerdatei der aktuellen Struktur der Datenbank entspricht. Die Pfade für die Daten- und Protokolldateien und der Status der Log-Sequenznummern sind nicht wichtig, jedoch muß die Steuerdatei exakte Informationen über Anzahl der Dateien und indirekt über die Anzahl der Tablespaces in der Datenbank enthalten.

Verfahren Sie bei der Wiederherstellung wie folgt:

  1. Wenn das Datenbanksystem noch in Betrieb ist, fahren Sie alle Instanzen mit folgendem SVRMGR-Kommando herunter:
  2. shutdown abort

    ABORT ist in der Regel nötig, da die Steuerdateien nicht mehr zur Verfügung stehen, um beim Herunterfahren einen Checkpoint aufzunehmen.

  3. Analysieren Sie den Fehler anhand der ALERT- und Trace-Dateien.
  4. Prüfen Sie, ob an der Datenbank keine weiteren Schäden aufgetreten sind: stellen Sie fest, ob alle Datendateien und Online-Redo-Log-Dateien vorhanden und lesbar sind.

    Sichern Sie die Online-Redo-Log-Dateien aller Instanzen (falls vorhanden und lesbar), damit Sie die Datenbankwiederherstellung wiederholen können, falls dabei ein Fehler auftritt.

  5. Stellen Sie die Sicherungskopien der Steuerdatei in die Verzeichnisse oder auf die Raw-Devices, die im Parameter control_files im Profil init.ora angegeben sind.
  6. Wenn weitere D ateien beschädigt wurden, laden Sie die Sicherungskopien dieser Dateien zurück. Unbeschädigte Dateien brauchen Sie aus der Sicherung nicht zurückzuladen. Wenn Sie Datendateien wiederherstellen müssen, müssen Sie auch alle Offline-Redo-Log-Dateien aller Instanzen ins lokale Archivierungsverzeichnis (standardmäßig <ORACLE_HOME>/saparch ) zurückladen, die seit der Sicherung archiviert wurden (für SAP-Datenbanken erfolgt die Sicherung der Offline-Redo-Log-Dateien in den meisten Fällen mittels des Programms BRARCHIVE). Detailinformation zur Wiederherstellung nach Verlust von Redo-Log- oder Datendateien finden Sie in den entsprechenden Abschnitten dieser Dokumentation sowie in Ihrer ORACLE-Dokumentation.

  7. Bringen Sie die lokale Instanz in den Mountzustand. Geben Sie dazu folgende SVRMGR-Kommandos ein:
  8. connect internal

    startup mount

  9. Wenn Sie gesicherte Dateien nicht in ihre ursprünglichen Verzeichnisse laden konnten oder Dateinamen ändern mußten, müssen Sie die Steuerdatei aktualisieren.
  10. Änderungen der Pfadnamen nehmen Sie mit dem folgenden Kommando vor:

    alter database rename file '<Dateiname>' to '<Dateiname>';

    Siehe Steuerdatei aktualisieren.

  11. Wenn die Datendateien der Datenbank beim Herunterfahren auf den Status OFFLINE gesetzt wurden, ändern Sie den Status der Dateien in der Steuerdatei auf ONLINE.
  12. Um OFFLINE-Dateien zu finden, suchen Sie in der ALERT-Datei nach "offline".

    Wenn Sie den Status einer Datendatei in der Steuerdatei ändern möchten, verwenden Sie folgendes Kommando:

    alter database datafile '<Dateiname>' online;

    Siehe Steuerdatei aktualisieren.

  13. Starten Sie die Wiederherstellung mit folgendem SVRMGR-Kommando:
  14. recover database until cancel using backup controlfile;

  15. Wenn Sie danach gefragt werden, geben Sie den vollen Pfadnamen für die Redo-Log-Dateien an, die für die Wiederherstellung erforderlich sind, einschließlich der aktuellen Online-Redo-Log-Datei.
  16. Wenn alle Redo-Log-Dateien verarbeitet sind, beenden Sie die Wiederherstellung mit dem Kommando cancel .
  17. Nach der Meldung recovery canceled können Sie die Datenbank wieder öffnen, indem Sie folgendes SVRMGR-Kommando verwenden:
  18. alter database open resetlogs;

    oder

    alter database open noresetlogs;

    Mit der Option RESETLOGS werden die bestehenden Online-Redo-Log-Dateien initialisiert. Diese Option müssen Sie folglich nur nach einem unvollständigen Recovery verwenden. Konnte das Recovery vollständig durchgeführt werden, sollten Sie diese Option nicht verwenden.

    Die Option NORESETLOGS bewirkt, daß die bestehenden Online-Redo-Log-Dateien in der vorliegenden Form übernommen werden. Die Option setzt also voraus, daß ein vollständiges Recovery durchgeführt wurde.

    Das Datenbanksystem nimmt den Betrieb mit der Log-Sequenznummer wieder auf, die auf die Nummer der zuletzt aktuellen Online-Redo-Log-Datei folgt.

  19. Führen Sie eine Vollsicherung der Datenbank durch.

Die Sicherung ist erforderlich, um die Steuerdatei zu sichern und um eine volle Wiederherstellung der Datenbank zu gewährleisten, wenn ein weiteres Datenbankproblem auftritt. Siehe auch Nachbearbeitung nach einer unvollständigen Wiederherstellung.

DB-Wiederherstellung über eine neue Steuerdatei

Wenn Sie über keine gültige Sicherung der Steuerdatei verfügen, ist eine volle Wiederherstellung trotzdem noch möglich, indem Sie die Steuerdatei wieder aufbauen. Dazu müssen Sie über ein aktuelles Protokoll sämtlicher Datenbankdateien verfügen. Nutzen Sie z.B. das entsprechende BRBACKUP-Protokoll. Achtung: Wenn in der Datenbank nach dieser Sicherung eine Strukturänderung durchgeführt wurde, kann unter Umständen eine Wiederherstellung gar nicht möglich sein (wenn z.B. keine Sicherung der neuen oder geänderten Datendateien vorhanden ist).

Verfahren Sie bei der Wiederherstellung wie folgt:

  1. Wenn das Datenbanksystem noch in Betrieb ist, fahren Sie alle Instanzen mit folgendem SVRMGR-Kommando herunter:
  2. shutdown abort

    ABORT ist in der Regel nötig, da die Steuerdateien nicht mehr zur Verfügung stehen, um beim Herunterfahren einen Checkpoint aufzunehmen.

  3. Analysieren Sie den Fehler anhand der ALERT- und Trace-Dateien.
  4. Prüfen Sie, ob an der Datenbank keine weiteren Schäden aufgetreten sind: stellen Sie fest, ob alle Datendateien und Online-Redo-Log-Dateien vorhanden und lesbar sind.

    Sichern Sie die Online-Redo-Log-Dateien aller Instanzen (falls vorhanden und lesbar), damit Sie die Datenbankwiederherstellung wiederholen können, falls dabei ein Fehler auftritt.

  5. Wenn andere Dateien beschädigt wurden, laden Sie die Sicherungskopien dieser Dateien zurück. Unbeschädigte Dateien brauchen Sie aus der Sicherung nicht zurückzuladen. Wenn Sie Datendateien wiederherstellen müssen, müssen Sie auch alle Offline-Redo-Log-Dateien aller Instanzen ins Archivierungsverzeichnis zurückladen, die seit der Sicherung dieser Datendateien archiviert wurden.
  6. Bringen Sie die Datenbank in den Nomountzustand. Geben Sie dazu folgende SVRMGR-Kommandos ein:
  7. connect internal

    startup nomount

  8. Erstellen Sie die Steuerdatei mit folgendem Kommando (detailliertere Syntaxinformationen entnehmen Sie bitte der ORACLE-Dokumentation):
  9. create controlfile
    database <Name>
    logfile '<Online-Redo-Log-Gruppen>'
    noresetlogs|resetlogs
    maxlogfiles 10
    maxlogmembers <Ihr Wert>
    datafile '<Namen aller Datendateien>'
    maxdatafiles 254
    archivelog;

    Pfadnamen: Die Pfadnamen der Online-Redo-Log-Dateien und Datendateien können Sie über das letzte detaillierte Protokoll des BRBACKUP feststellen.

    Noresetlogs/Resetlogs: Wählen Sie RESETLOGS nur dann, wenn neben der Steuerdatei auch irgendeine Online-Redo-Log-Gruppe verloren ging. Andernfalls sollten Sie immer NORESETLOGS verwenden.

  10. Bringen Sie die Datenbank in den Mountzustand.
  11. alter database mount;

  12. Starten Sie das Recovery (Ein Recovery ist immer notwendig, wenn die Steuerdatei mit der Option RESETLOGS erzeugt wurde oder wenn auch eine Datendatei zurückgeladen wurde. Aber auch in den anderen Fällen sollten Sie zur Sicherheit ein Recovery starten.):
  13. recover database [until cancel] [using backup controlfile];

    Die Option using backup controlfile muß dann gewählt werden, wenn Sie die Steuerdatei mit der Option RESETLOGS erzeugt haben. Durch Wahl von until cancel entscheiden Sie, daß Sie während der Wiederherstellung angeben können, bis zu welcher Datei die vorhandenen Redo-Log-Dateien eingelesen werden sollen. Einschließlich der aktuellen sollten alle Redo-Log-Dateien aller Instanzen, eingegeben werden.

  14. Starten Sie die Datenbank mit dem folgenden SVRMGR-Kommando:
  15. alter database open [noresetlogs/resetlogs];

    – Verwenden Sie alter database open , wenn Sie die Steuerdatei mit NORESETLOGS erzeugt haben und kein oder ein vollständiges Recovery (ohne until cancel ) durchgeführt haben.

    – Verwenden Sie alter database open noresetlogs , wenn Sie die Steuerdatei mit NORESETLOGS erzeugt haben und trotz Verwendung der Option until cancel ein vollständiges Recovery durchgeführt haben.

    – Verwenden Sie alter database open resetlogs , wenn Sie die Steuerdatei mit RESETLOGS erzeugt haben oder wenn Sie ein unvollständiges Recovery durchgeführt haben.

  16. Sie sollten nach der Wiederherstellung unbedingt eine Vollsicherung durchführen, um die wieder aufgebaute Steuerdatei zu sichern und zu gewährleisten, daß eine Wiederherstellung der Datenbank im Fehlerfall möglich ist.