Benutzer-Werkzeuge

Webseiten-Werkzeuge


dba:controlfile_verlust

Verlust der Controldateien der Datenbank

Der Verlust aller Controldateien der Datenbank bedeutet fast immer viel Ärger, prüfen Sie daher regelmäßig ob Sie diese Dateien auch wirklich sichern

Backup der Controldateien vorhanden

Vorrausetzung 9i:DB ID bestimmen!

Entweder wurde zuvor diese Nummer aufgeschrieben oder über den Namen des Autobackups ermitteln (im Beispiel: 944794439).

Erklärung für das Format Autobackup %F.
This variable format translates into c-IIIIIIIIII-YYYYMMDD-QQ, where:

  • IIIIIIIIII stands for the DBID
  • YYYYMMDD is a time stamp of the day the backup is generated
  • QQ is the hex sequence that starts with 00 and has a maximum of FF

Zuvor gelegentlich prüfen, ob es überhaupt ein Controlfile Backup gibt und ob das Backup vom Controlfile auch mitgesichert wird!.

RMAN> list backup OF controlfile;

Ablauf:

  • DB kompletta alle Prozesse stoppen
  • DB im Status „nomount“ starten
  • DB-ID setzen
  • Format Autobackup setzen
  • restore controlfile mit RMAN durchführen
  • DB im Status „mount“ starten
  • DB Recover
  • Datenbank mit „open ResetLogs“ öffnen

Dienst stoppen:

cmd>oradim -shutdown -sid ORACLE_SID -SHUTMODE a

Dienst für die DB starten !!NUR DEN DIENST!!

cmd>oradim -edit -sid ORACLE_SID -startmode m
cmd>oradim -startup -sid ORACLE_SID -starttype srvc

Alert-Log-Eintrag:

Sat Aug 26 17:45:26 2006
Errors in file d:\oracle\admin\ORACLE_SID\bdump\ORACLE_SID_lgwr_1852.trc:
ORA-00227: corrupt block detected in controlfile: (block 1, # blocks 1)
ORA-00202: controlfile: 'D:\ORACLE\ORADATA\ORACLE_SID\CONTROL01.CTL'

LGWR: terminating instance due to error 227
Instance terminated by LGWR, pid = 1852

Mit RMAN die DB im nomount-Stadium öffnen und die Controlfiles wiederherstellen, Datenbank im Mount-Stadium öffnen, Datenbank recover und Datenbank starten mit open RESETLOGS.

RMAN>CONNECT target /
RMAN>startup nomount
RMAN> SET DBID 944794439;
RMAN> RUN {
          SET CONTROLFILE AUTOBACKUP FORMAT 
          FOR DEVICE TYPE DISK TO 'H:\oracle\flash_recovery_area\ORACLE_SID\backupset\ORACLE_SID_%F';
    RESTORE CONTROLFILE FROM AUTOBACKUP;
    }
Befehl wird ausgef³hrt: SET CONTROLFILE AUTOBACKUP FORMAT
Kontrolldatei der Zieldatenbank wird anstelle des Recovery-Katalogs verwendet
 
Starten restore um 26.08.06
 
Zugewiesener Kanal: ORA_DISK_1
Kanal ORA_DISK_1: SID=14 Gerõtetyp=DISK
Kanal ORA_DISK_1: Suche nach autom. Backup an Tag: 20060826
Kanal ORA_DISK_1: autom. Backup gefunden: H:\oracle\flash_recovery_area\ORACLE_SID\backupset\ORACLE_SID_c-944794439-20060826-09
Kanal ORA_DISK_1: Wiederherstellung von Kontrolldatei aus autom. Backup abgeschlossen
Kontrolldatei wird repliziert
Eingabedateiname=D:\ORACLE\ORADATA\ORACLE_SID\CONTROL01.CTL
Ausgabedateiname=D:\ORACLE\ORADATA\ORACLE_SID\CONTROL02.CTL
Ausgabedateiname=D:\ORACLE\ORADATA\ORACLE_SID\CONTROL03.CTL
Beendet restore um 26.08.06
 
RMAN> SQL "alter database mount";
 
RMAN> recover database;
 
Starten recover um 26.08.06
Kanal ORA_DISK_1 wird benutzt
 
Starte Wiederherstellung des Datentrõgers
 
Archive-Log-Thread 1 Sequenz 84 bereits auf Platte als Datei D:\ORACLE\ORADATA\ORACLE_SID\REDO03.LOG vorhanden
Archive-Log-Thread 1 Sequenz 85 bereits auf Platte als Datei D:\ORACLE\ORADATA\ORACLE_SID\REDO01.LOG vorhanden
Archive-Log-Dateiname=D:\ORACLE\ORADATA\ORACLE_SID\REDO03.LOG Thread=1 Sequenz=84
Archive-Log-Dateiname=D:\ORACLE\ORADATA\ORACLE_SID\REDO01.LOG Thread=1 Sequenz=85
Wiederherstellung des Datentrõgers beendet
Beendet recover um 26.08.06
 
RMAN>SQL "alter database open resetlogs";
 
SQL-Anweisung: ALTER database OPEN resetlogs

Fazit: Nie Controlfiles verlieren!

Keine Backup der Controlfiles vorhanden

A) Datendateien komplett vorhanden

Geht keine der Datendateien verloren, kann über den Create Controlfile Befehl ein neues Controlfile angelegt werden.

Die Syntax und alle DB Einstellung im Controlfile müssen aber exact getroffen werden.

Auch hier ist es hilfreich zuvor mit dem „alter database backup controlfile to trace“ Befehl eine Textdatei mit diesen Informationen angelegt zuhaben.

Fehlt auch dies:

  • Gibt es eine Datenbank mit gleicher oder sehr ähnlicher Struktur, dann aus dieser Datenbank einen Vorlage erstellen mit dem trace Befehl erstellen
  • Aus den Informationen in den Alert Logfiles die Pfade und Einstellung erraten und create Befehl von Hand anlegen

A) Auch keine Datendateien mehr vorhanden

Exisitieren auch keine Datendateien mehr (Auffall einer Lun etc.) kann kein passendes Controlfile mehr erzeugt werden.

Ohne Controlfile kann aber auch der RMAN nicht verwendet werden, um die Datendateien zurück zuschreiben.

Ohne Controlfile KEIN Backup und kein RESTORE auf einfache Art möglich!


1. Lösung:

Exisitiert eine Testdatenbank als 1zu1 Clone mit der selben DBID oder gibt es ein Fileystem Backup der DB aus der Vergangenheit?

JA: Für das Anlegen das Controlfile diese Dateien in die Produktion kopieren und verwenden, nach dem Anlegen per RMAN Backup dann wieder überschreiben

2. Lösung:

Mit dem DBMS_RESTORE PL/SQL Packge per Hand die Datendateien auspacken, siehe RMAN Backups manuell entpacken und lesen

Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
"Autor: Gunther Pipperr"
dba/controlfile_verlust.txt · Zuletzt geändert: 2013/09/11 16:11 von Gunther Pippèrr