dba:datendatei_defekt
no way to compare when less than two revisions
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
— | dba:datendatei_defekt [2010/04/28 16:43] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Szenario 1 -- Eine/oder mehrere Datendatei(en) ist/sind defekt ====== | ||
+ | Für Übungszwecke kann eine geöffnete Datei unter MS Windows mit dem Befehl ocopy „zerstört“ werden, ocopy kann auch geöffnete Dateien kopieren (mit ocopy von Oracle mit ausgeliefert). | ||
+ | |||
+ | Übersicht, wann eine Datenbank in welchem Modus wiederhergestellt werden kann:\\ | ||
+ | |||
+ | {{: | ||
+ | |||
+ | |||
+ | ====== A) DB läuft noch ====== | ||
+ | |||
+ | Die Datenbank kann auch im Modus „offen“ wiederhergestellt werden. \\ | ||
+ | |||
+ | ABER: es darf kein Anwender mit dem defekten Bereich arbeiten. Will die DB dorthin schreiben, neigt die DB dazu, abzustürzen. | ||
+ | |||
+ | Ablauf: | ||
+ | * Im Alert Log nach der Dateinummer suchen, Nr. merken | ||
+ | * SQLPlus V$datafile den " | ||
+ | * Tablespace offline setzen | ||
+ | * Über RMAN die Datendatei wiederherstellen | ||
+ | * Tablespace online setzen | ||
+ | |||
+ | Beispiel: | ||
+ | Anwender versucht aus einer defekten Dateidatei zu lesen | ||
+ | |||
+ | <code plsql> | ||
+ | SQL> select count(*) from infodba.t; | ||
+ | select count(*) from infodba.t | ||
+ | * | ||
+ | FEHLER in Zeile 1: | ||
+ | ORA-01115: EA-Fehler beim Lesen von Block aus Datei 5 (Block Nr. 17) | ||
+ | ORA-01110: Datendatei 5: ' | ||
+ | ORA-27091: skgfqio: E/A kann nicht in Queue gestellt werden | ||
+ | ORA-27070: skgfdisp: Asynchrones Lesen/ | ||
+ | OSD-04006: ReadFile()-Fehler, | ||
+ | O/S-Error: (OS 38) Ende der Datei (EOF) erreicht. | ||
+ | </ | ||
+ | |||
+ | Status der Datendateien prüfen | ||
+ | |||
+ | <code plsql> | ||
+ | SQL> column name format a60 | ||
+ | SQL> select file#, | ||
+ | |||
+ | FILE# NAME | ||
+ | ---------- ------------------------------------------------------------ ------- | ||
+ | 1 D: | ||
+ | 2 D: | ||
+ | 3 D: | ||
+ | 4 D: | ||
+ | 5 D: | ||
+ | |||
+ | </ | ||
+ | |||
+ | Die Alert-Log Datei auf den folgenden Eintrag prüfen: | ||
+ | < | ||
+ | ... | ||
+ | Sat Aug 26 16:55:02 2006 | ||
+ | Errors in file d: | ||
+ | ORA-01171: datafile 5 going offline due to error advancing checkpoint | ||
+ | ORA-01122: database file 5 failed verification check | ||
+ | ORA-01110: data file 5: ' | ||
+ | ORA-01251: Unknown File Header Version read for file number 5 | ||
+ | .... | ||
+ | </ | ||
+ | |||
+ | Wiederherstellen mit Oracle RMAN | ||
+ | <code plsql> | ||
+ | cmd> rman | ||
+ | Copyright (c) 1995, 2002, Oracle Corporation. | ||
+ | |||
+ | RMAN> connect target / | ||
+ | |||
+ | Mit Ziel-Datenbank verbunden: ORACLE_SID (DBID=944794439) | ||
+ | |||
+ | RMAN> restore datafile 5; | ||
+ | |||
+ | Starten restore um 26.08.06 | ||
+ | |||
+ | Kontrolldatei der Zieldatenbank wird anstelle des Recovery-Katalogs verwendet | ||
+ | Zugewiesener Kanal: ORA_DISK_1 | ||
+ | Kanal ORA_DISK_1: SID=18 Gerõtetyp=DISK | ||
+ | Kanal ORA_DISK_1: Wiederherstellung von Datendatei-Backup-Satz beginnt | ||
+ | Kanal ORA_DISK_1: Datendatei(en) werden zum Wiederherstellen aus Backup-Satz angegeben | ||
+ | Datendatei 00005 wird wiederhergestellt zu D: | ||
+ | Kanal ORA_DISK_1: Backup-Piece 1 wurde wiederhergestellt | ||
+ | Piece-Handle=H: | ||
+ | Kanal ORA_DISK_1: Wiederherstellung abgeschlossen | ||
+ | Beendet restore um 26.08.06 | ||
+ | |||
+ | RMAN> recover datafile 5; | ||
+ | |||
+ | Starten recover um 26.08.06 | ||
+ | Kanal ORA_DISK_1 wird benutzt | ||
+ | |||
+ | Starte Wiederherstellung des Datentrõgers | ||
+ | |||
+ | Archive-Log-Thread 1 Sequenz 83 bereits auf Platte als Datei H: | ||
+ | Archive-Log-Thread 1 Sequenz 84 bereits auf Platte als Datei H: | ||
+ | Archive-Log-Thread 1 Sequenz 85 bereits auf Platte als Datei H: | ||
+ | Archive-Log-Thread 1 Sequenz 86 bereits auf Platte als Datei H: | ||
+ | Archive-Log-Thread 1 Sequenz 87 bereits auf Platte als Datei H: | ||
+ | Archive-Log-Dateiname=H: | ||
+ | Archive-Log-Dateiname=H: | ||
+ | Archive-Log-Dateiname=H: | ||
+ | Wiederherstellung des Datentrõgers beendet | ||
+ | Beendet recover um 26.08.06 | ||
+ | </ | ||
+ | |||
+ | Die Datendatei ist damit wiederhergestellt und nun muss nur noch der Tablespace online gesetzt werden. | ||
+ | |||
+ | <code plsql> | ||
+ | Cmd> | ||
+ | SQL> alter tablespace users online; | ||
+ | Tablespace wurde geõndert. | ||
+ | </ | ||
+ | |||
+ | Anwender Tabelle testen und den Anwender informieren. | ||
+ | |||
+ | ====== B) DB ist abgestürzt ====== | ||
+ | |||
+ | Der RMAN kann eine Datenbank nur dann wiederherstellen, | ||
+ | \\ | ||
+ | Ist die Datenbank abgestürzt, | ||
+ | Ablauf: | ||
+ | * DB komplett stoppen | ||
+ | * Im Alert Log nach der Dateinummer suchen, Nr. merken | ||
+ | * DB im Status „mount“ starten | ||
+ | * Restore/ | ||
+ | * Datenbank öffnen | ||
+ | |||
+ | Dienst stoppen: | ||
+ | <code winbatch> | ||
+ | cmd> | ||
+ | </ | ||
+ | |||
+ | Dienst für die DB starten !!NUR DIENST!! | ||
+ | <code winbatch> | ||
+ | cmd> | ||
+ | cmd> | ||
+ | </ | ||
+ | |||
+ | Alert Log nach der Dateinummer suchen: | ||
+ | < | ||
+ | ... | ||
+ | Sat Aug 26 17:17:55 2006 | ||
+ | Errors in file d: | ||
+ | ORA-01243: system tablespace file suffered media failure | ||
+ | ORA-01122: database file 1 failed verification check | ||
+ | ORA-01110: data file 1: ' | ||
+ | ORA-01251: Unknown File Header Version read for file number 1 | ||
+ | |||
+ | Sat Aug 26 17:17:55 2006 | ||
+ | CKPT: terminating instance due to error 1243 | ||
+ | Sat Aug 26 17:17:56 2006 | ||
+ | Errors in file d: | ||
+ | ORA-01243: system tablespace file suffered media failure | ||
+ | |||
+ | Instance terminated by CKPT, pid = 4032 | ||
+ | |||
+ | </ | ||
+ | |||
+ | Mit RMAN Datenbank im Mount Stadium öffnen, Restore und Recover, DB mit SQL öffnen. | ||
+ | <code plsql> | ||
+ | cmd>rman | ||
+ | |||
+ | Recovery Manager: Version 9.2.0.7.0 - Production | ||
+ | |||
+ | Copyright (c) 1995, 2002, Oracle Corporation. | ||
+ | |||
+ | RMAN> connect target / | ||
+ | |||
+ | mit Zieldatenbank verbunden (nicht gestartet) | ||
+ | |||
+ | RMAN> startup mount | ||
+ | |||
+ | Oracle-Instance gestartet | ||
+ | Datenbank angeschlossen | ||
+ | |||
+ | Gesamte System Global Area | ||
+ | |||
+ | Fixed Size 454560 Byte | ||
+ | Variable Size 167772160 Byte | ||
+ | Database Buffers | ||
+ | Redo Buffers | ||
+ | |||
+ | RMAN> restore datafile 1; | ||
+ | |||
+ | Starten restore um 26.08.06 | ||
+ | |||
+ | Kontrolldatei der Zieldatenbank wird anstelle des Recovery-Katalogs verwendet | ||
+ | Zugewiesener Kanal: ORA_DISK_1 | ||
+ | Kanal ORA_DISK_1: SID=14 Gerõtetyp=DISK | ||
+ | Kanal ORA_DISK_1: Wiederherstellung von Datendatei-Backup-Satz beginnt | ||
+ | Kanal ORA_DISK_1: Datendatei(en) werden zum Wiederherstellen aus Backup-Satz angegeben | ||
+ | Datendatei 00001 wird wiederhergestellt zu D: | ||
+ | Kanal ORA_DISK_1: Backup-Piece 1 wurde wiederhergestellt | ||
+ | Piece-Handle=H: | ||
+ | Kanal ORA_DISK_1: Wiederherstellung abgeschlossen | ||
+ | Beendet restore um 26.08.06 | ||
+ | |||
+ | RMAN> recover datafile 1; | ||
+ | |||
+ | Starten recover um 26.08.06 | ||
+ | Kanal ORA_DISK_1 wird benutzt | ||
+ | |||
+ | Starte Wiederherstellung des Datentrõgers | ||
+ | |||
+ | ....... | ||
+ | Wiederherstellung des Datentrõgers beendet | ||
+ | Beendet recover um 26.08.06 | ||
+ | |||
+ | RMAN> sql "alter database open"; | ||
+ | |||
+ | SQL-Anweisung: | ||
+ | </ | ||
dba/datendatei_defekt.txt · Zuletzt geändert: 2010/04/28 16:43 von 127.0.0.1