Benutzer-Werkzeuge

Webseiten-Werkzeuge


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:\\
 +
 +{{:datenbank_ruecksierungen_modus.png|}}
 +
 +
 +====== 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 "verlust“ bestimmen lassen, Nr. merken
 +  * 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: 'D:\ORACLE\ORADATA\ORACLE_SID\USERS01.DBF'
 +ORA-27091: skgfqio: E/A kann nicht in Queue gestellt werden
 +ORA-27070: skgfdisp: Asynchrones Lesen/Schreiben misslungen
 +OSD-04006: ReadFile()-Fehler, aus Datei kann nicht gelesen werden
 +O/S-Error: (OS 38) Ende der Datei (EOF) erreicht.
 +</code>
 +
 +Status der Datendateien prüfen
 +
 +<code plsql>
 +SQL> column name format a60
 +SQL> select file#,name,status from v$datafile;
 +
 +     FILE# NAME                                                         STATUS
 +---------- ------------------------------------------------------------ -------
 +         1 D:\ORACLE\ORADATA\ORACLE_SID\SYSTEM01.DBF                          SYSTEM
 +         2 D:\ORACLE\ORADATA\ORACLE_SID\UNDOTBS01.DBF                         ONLINE
 +         3 D:\ORACLE\ORADATA\ORACLE_SID\INDX01.DBF                            ONLINE
 +         4 D:\ORACLE\ORADATA\ORACLE_SID\TOOLS01.DBF                           ONLINE
 +         5 D:\ORACLE\ORADATA\ORACLE_SID\USERS01.DBF                           RECOVER
 +
 +</code>
 +
 +Die Alert-Log Datei auf den folgenden Eintrag prüfen:
 +<code>
 +...
 +Sat Aug 26 16:55:02 2006
 +Errors in file d:\oracle\admin\ORACLE_SID\bdump\ORACLE_SID_ckpt_4032.trc:
 +ORA-01171: datafile 5 going offline due to error advancing checkpoint
 +ORA-01122: database file 5 failed verification check
 +ORA-01110: data file 5: 'D:\ORACLE\ORADATA\ORACLE_SID\USERS01.DBF'
 +ORA-01251: Unknown File Header Version read for file number 5
 +....
 +</code>
 +
 +Wiederherstellen mit Oracle RMAN
 +<code plsql>
 +cmd> rman
 +Copyright (c) 1995, 2002, Oracle Corporation.  All rights reserved.
 +
 +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:\ORACLE\ORADATA\ORACLE_SID\USERS01.DBF
 +Kanal ORA_DISK_1: Backup-Piece 1 wurde wiederhergestellt
 +Piece-Handle=H:\oracle\flash_recovery_area\ORACLE_SID\BACKUPSET\ORACLE_SID_0DHRN8H1_1_1 Tag=TAG20060826T153457 Parameter=NULL
 +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:\oracle\flash_recovery_area\ORACLE_SID\ARCHIVELOG\ORACLE_SID_1_83.DBF vorhanden
 +Archive-Log-Thread 1 Sequenz 84 bereits auf Platte als Datei H:\oracle\flash_recovery_area\ORACLE_SID\ARCHIVELOG\ORACLE_SID_1_84.DBF vorhanden
 +Archive-Log-Thread 1 Sequenz 85 bereits auf Platte als Datei H:\oracle\flash_recovery_area\ORACLE_SID\ARCHIVELOG\ORACLE_SID_1_85.DBF vorhanden
 +Archive-Log-Thread 1 Sequenz 86 bereits auf Platte als Datei H:\oracle\flash_recovery_area\ORACLE_SID\ARCHIVELOG\ORACLE_SID_1_86.DBF vorhanden
 +Archive-Log-Thread 1 Sequenz 87 bereits auf Platte als Datei H:\oracle\flash_recovery_area\ORACLE_SID\ARCHIVELOG\ORACLE_SID_1_87.DBF vorhanden
 +Archive-Log-Dateiname=H:\oracle\flash_recovery_area\ORACLE_SID\ARCHIVELOG\ORACLE_SID_1_83.DBF Thread=1 Sequenz=83
 +Archive-Log-Dateiname=H:\oracle\flash_recovery_area\ORACLE_SID\ARCHIVELOG\ORACLE_SID_1_84.DBF Thread=1 Sequenz=84
 +Archive-Log-Dateiname=H:\oracle\flash_recovery_area\ORACLE_SID\ARCHIVELOG\ORACLE_SID_1_85.DBF Thread=1 Sequenz=85
 +Wiederherstellung des Datentrõgers beendet
 +Beendet recover um 26.08.06
 +</code>
 +
 +Die Datendatei ist damit wiederhergestellt und nun muss nur noch der Tablespace online gesetzt werden.
 +
 +<code plsql>
 +Cmd>sqlplus "/ as sysdba"
 +SQL> alter tablespace users online;
 +Tablespace wurde geõndert.
 +</code>
 +
 +Anwender Tabelle testen und den Anwender informieren.
 +
 +====== B) DB ist abgestürzt ======
 +
 +Der RMAN kann eine Datenbank nur dann wiederherstellen, wenn die Instance wenigstens im Modus „Nomount“ gestartet ist.\\
 +\\
 +Ist die Datenbank abgestürzt, muss trotzdem zuvor überprüft werden, ob alle Prozesse wirklich beendet sind. \\
 +Ablauf:
 +  * DB komplett stoppen
 +  * Im Alert Log nach der Dateinummer suchen, Nr. merken
 +  * DB im Status „mount“ starten
 +  * Restore/Recover mit RMAN durchführen
 +  * Datenbank öffnen 
 +
 +Dienst stoppen:
 +<code winbatch>
 +cmd>oradim -shutdown -sid ORACLE_SID -SHUTMODE a
 +</code>
 +
 +Dienst für die DB starten !!NUR DIENST!!
 +<code winbatch>
 +cmd>oradim -edit -sid ORACLE_SID -startmode m
 +cmd>oradim -startup -sid ORACLE_SID -starttype srvc
 +</code>
 +
 +Alert Log nach der Dateinummer suchen: 
 +<code>
 +...
 +Sat Aug 26 17:17:55 2006
 +Errors in file d:\oracle\admin\ORACLE_SID\bdump\ORACLE_SID_ckpt_4032.trc:
 +ORA-01243: system tablespace file suffered media failure
 +ORA-01122: database file 1 failed verification check
 +ORA-01110: data file 1: 'D:\ORACLE\ORADATA\ORACLE_SID\SYSTEM01.DBF'
 +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:\oracle\admin\ORACLE_SID\bdump\ORACLE_SID_pmon_3872.trc:
 +ORA-01243: system tablespace file suffered media failure
 +
 +Instance terminated by CKPT, pid = 4032
 +
 +</code>
 +
 +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.  All rights reserved.
 +
 +RMAN> connect target /
 +
 +mit Zieldatenbank verbunden (nicht gestartet)
 +
 +RMAN> startup mount
 +
 +Oracle-Instance gestartet
 +Datenbank angeschlossen
 +
 +Gesamte System Global Area     294723488 Byte
 +
 +Fixed Size                      454560 Byte
 +Variable Size                167772160 Byte
 +Database Buffers             125829120 Byte
 +Redo Buffers                    667648 Byte
 +
 +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:\ORACLE\ORADATA\ORACLE_SID\SYSTEM01.DBF
 +Kanal ORA_DISK_1: Backup-Piece 1 wurde wiederhergestellt
 +Piece-Handle=H:\oracle\flash_recovery_area\ORACLE_SID\BACKUPSET\ORACLE_SID_0DHRN8H1_1_1 Tag=TAG20060826T153457 Parameter=NULL
 +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: alter database open
 +</code>
  
dba/datendatei_defekt.txt · Zuletzt geändert: 2010/04/28 16:43 von 127.0.0.1