-
1. Die Bedeutung der Genesung
Wenn wir eine Datenbank verwenden, hoffen wir immer, dass der Inhalt der Datenbank zuverlässig und korrekt ist. Computersystemfehler (Hardwarefehler, Netzwerkfehler, Prozessfehler und Systemfehler) beeinträchtigen jedoch den Betrieb des Datenbanksystems und die Genauigkeit die Daten in der Datenbank sexuell zerstören, sogar die Datenbank zerstören, was dazu führt, dass alle oder ein Teil der Daten in der Datenbank verloren gehen. Wenn der oben genannte Fehler auftritt, besteht daher die Hoffnung, dass eine vollständige Datenbank wiederhergestellt werden kann. Dieser Vorgang wird als Datenbankwiederherstellung bezeichnet. Das Wiederherstellungssubsystem ist ein wichtiger Teil des Datenbankverwaltungssystems. Die Wiederherstellungsverarbeitung variiert je nach der Struktur, die von der Art des aufgetretenen Fehlers betroffen ist.
2. Wiederherstellungsmethode
IMPORT-Methode:
Verwenden Sie IMPORT, um die zuletzt in die neue Datenbank exportierte Datendatei zu IMPORTIEREN. Mit dieser Methode können Sie jedes Datenbankobjekt in den Zustand zurückversetzen, in dem es exportiert wurde, und nachfolgende Änderungen sind irreversibel. Der IMPORT-Befehl kann interaktiv ausgeführt werden. Die spezifische Bedeutung der einzelnen Parameter finden Sie in der ausführlichen Erläuterung der ORACLE EXP/IMP-Parameter. Diese Methode eignet sich für Umgebungen, die keinen Archivmodus verwenden.
Sichere Wiederherstellungsmethoden:
Wenn die Datenbank im Archivmodus ausgeführt wird, kann die Datenbank nach einer Beschädigung durch Kaltsicherung (Hotsicherung) und Archivsicherung in den Haltepunktzustand zurückversetzt werden.
Wiederherstellung der Datenbank-Steuerdatei (vorausgesetzt, alle Steuerdateien werden zerstört):
Die Datenbank basiert auf dem Dateisystem: Verwenden Sie einfach tar, cp und andere Befehle des Betriebssystems.
Die Datenbank basiert auf Rohgeräten: dd if=$ORACLE_BASE/con.bak of=/dev/rdrd/drd1 seek=12
Wiederherstellung von Datenbankdatendateien
Wiederherstellung von Daten- und Indextabellenbereichen und Systemtabellenbereichen:
Kopieren Sie die relevanten Datenbankdateien und alle logischen Protokolldateien zurück, die seit der Sicherung der Datendatei generiert wurden, und führen Sie den folgenden Befehl aus:
svrmgrl > Startup-Mount
svrmgrl > Datenbank automatisch wiederherstellen
Wenn die Steuerdatei beschädigt ist, gehen Sie wie folgt vor: svrmgrl > Datenbankwiederherstellung mithilfe der Sicherungssteuerdatei. Geben Sie nach Aufforderung den Namen der Protokolldatei und der Redolog-Datei ein.
svrmgrl > Datenbank ändern, Resetlogs öffnen;
Wiederherstellung temporärer Datenbankdateien und Rollback-Tabellenbereiche: einfach offline gehen und neu erstellen.
Hinweis: Wenn die Datenbank nicht im Archivmodus ausgeführt wird, kann bei der Wiederherstellung nur der Zustand der letzten Sicherung wiederhergestellt werden. Informationen zu Archivmoduseinstellungen und sicherungsbezogenen Technologien finden Sie unter ORACLE-Datenbanksicherungstechnologie.
3. ORACLE-Lösung zur Wiederherstellung des Tabellenbereichs
(1) Fehlerphänomen im Haushaltstabellenbereich:
Beim Starten der Datenbank tritt ein Fehler auf ORA-01157, ORA-01110 oder auf Betriebssystemebene auf
Fehler wie ORA-07360 führen beim Herunterfahren der Datenbank (mit normalem Herunterfahren oder sofortigem Herunterfahren) zu den Fehlern ORA-01116, ORA-01110 und dem Fehler ORA-07368 auf Betriebssystemebene
lösen:
Im Folgenden gibt es zwei Lösungen:
Lösung 1: Der Tabellenbereich des Benutzers kann einfach neu erstellt werden, d. h. die kürzlich exportierten Objekte sind verfügbar oder die Objekte im Tabellenbereich können einfach neu erstellt werden usw. In diesem Fall ist es am einfachsten, offline zu gehen und die Datendateien zu löschen, den Tablespace zu löschen und den Tablespace und alle Objekte neu zu erstellen.
svrmgrl> Startup-Mount
svrmgrl> Datenbankdatendatei Dateiname offline löschen;
svrmgrl> alter Datenbank öffnen;
svrmgrl> Tabellenbereich Tabellenbereichsname einschließlich Inhalt löschen;
Erstellen Sie den Tablespace und alle Objekte neu.
Lösung 2: Der Tabellenbereich des Benutzers kann nicht einfach wiederhergestellt werden. In den meisten Fällen ist die Wiederherstellung des Tabellenbereichs zu schwierig. Die Methode besteht darin, die Sicherung rückgängig zu machen und eine Medienwiederherstellung durchzuführen Die verlorenen Daten können im Online-Redo-Log wiederhergestellt werden.
Die Schritte sind wie folgt:
1) Stellen Sie die verlorene Datendatei aus einem Backup wieder her
2)svrmgrl> Startup-Mount
3)svrmgrl> select v1.group#,member,sequence#,first_change# from v$log v1,v$logfile v2 where v1.group#=v2.group#;
4) Wenn die Datenbank im NOARCHIVELOG-Modus läuft: svrmgrl> select file#,change# from v$recover_file;
Wenn CHANGE# größer als die minimale FIRST_CHANGE# ist, kann die Datendatei wiederhergestellt werden.
Wenn CHANGE# kleiner als die minimale FIRST_CHANGE# ist, kann die Datendatei nicht wiederhergestellt werden. Stellen Sie die letzte vollständige Sicherung wieder her oder verwenden Sie Option eins.
5)svrmgrl> Datendatei Dateiname wiederherstellen;
6) Bestätigen Sie, dass die Wiederherstellung erfolgreich ist
7)svrmgrl> Datenbank ändern, Resetlogs öffnen;
Für schreibgeschützte Tabellenbereiche ist keine Medienwiederherstellung erforderlich. Stellen Sie einfach die Sicherung wieder her. Die einzigen Ausnahmen sind:
Der Tabellenbereich wurde nach der letzten Sicherung in den Lese-/Schreibmodus geändert. In diesem Fall ist eine Medienwiederherstellung erforderlich.
(2) Temporärer Tabellenbereich Der temporäre Tabellenbereich enthält keine echten Daten. Die Wiederherstellungsmethode besteht darin, den temporären Tabellenbereich zu löschen und neu zu erstellen.
(3) Wenn die Sicherung des Systemtabellenbereichs nicht verfügbar ist, kann die einzige Möglichkeit darin bestehen, die Datenbank neu zu erstellen.
(4) Es gibt zwei Situationen für das Rollback des Tabellenbereichs:
1. Die Datenbank wurde vollständig heruntergefahren (verwenden Sie das sofortige Herunterfahren oder den Befehl zum Herunterfahren).
1) Bestätigen Sie, dass die Datenbank vollständig geschlossen ist
2) Ändern Sie die Datei init.ora und kommentieren Sie „rollback-segment“.
3) svrmgrl> Start-Einschränkungs-Mount
4) svrmgrl> Datenbankdatendatei Dateiname offline löschen ändern;
5) svrmgrl> alter Datenbank öffnen;
Basierend auf den angezeigten Ergebnissen: „Anweisung verarbeitet“ gehen Sie zu (7); „ORA-00604,ORA-00376,ORA-01110“ gehen Sie zu (6)
6) svrmgrl> sofortiges Herunterfahren
Ändern Sie die Datei init.ora und fügen Sie die folgende Zeile hinzu: _corrupted_rollback_segments = (<roll1>,...<rolln>)
svrmgrl> Starteinschränkung
7) svrmgrl> Tabellenbereich Tabellenbereichsname einschließlich Inhalt löschen;
8) Tabellenbereich neu erstellen und Segment zurücksetzen
9) svrmgrl> alter system; eingeschränkte Sitzung deaktivieren;
10) Ändern Sie die Datei init.ora
2. Die Datenbank ist nicht vollständig geschlossen (die Datenbank stürzt ab oder der Befehl zum Abbrechen des Herunterfahrens wird zum Schließen der Datenbank verwendet).
1) Backup wiederherstellen
2) svrmgrl> Startup-Mount
3) svrmgrl> Dateinummer, Name, Status aus v$datafile auswählen;
svrmgrl> Datenbankdatendatei Dateiname online ändern;
4) svrmgrl> select v1.group#,member,sequence#,first_change# from v$log v1,v$logfile v2 where v1.group#=v2.group#;
5) svrmgrl> select file#,change# from v$recover_file; #Siehe Lösung 2-4
6) svrmgrl> Datendatei Dateiname wiederherstellen;
7) svrmgrl> alter Datenbank öffnen;
3. Die Datenbank ist geöffnet
1) Löschen Sie das Rollback-Segment und den Tabellenbereich
2) Tabellenbereich neu erstellen und Segment zurücksetzen (5), Dateiwiederherstellung steuern
1. Alle Kontrolldateien werden zerstört. Für RAW DEVICE (nacktes Gerät) gilt: dd if='con.bak' of='/dev/rdrd/drd1' seen=128
2. Nicht alle Steuerdateien werden zerstört. Verwenden Sie andere Steuerdateien, um die Datenblöcke und die darin enthaltenen Daten zu speichern. Beim Ausführen der ORACLE-Operation tritt ein ORA-1578-Fehler auf geht davon aus, dass Datenblöcke möglicherweise beschädigt sind und aus folgenden Gründen auftreten können:
E/A-Hardware- oder Firmware-Schaden. Betriebssystem-E/A- oder Cache-Fehler. Speicher- oder Seitenaustauschfehler. Ein Teil der Datendatei wird überschrieben. Versuch, auf eine unformatierte Blockfestplatte zuzugreifen. Reparatur. Andere Ursachen. Lösungsschritte:
Überprüfen Sie die Protokoll- und Tracedateien, um festzustellen, ob weitere Fehler oder Positionierungsfehler vorliegen:
sql>select * from v$datafile where file#=<F>;
sql>selectowner,segment_name,segment_type from dba_extents where file_id=<F> and <B> between block_id and block_id+blocks-1;
Basierend auf dem zurückgegebenen segment_type:
Der Segmenttyp ist temporär oder zwischengespeichert oder hat keinen Rückgabewert. Überprüfen Sie, ob die SQL-Anweisung korrekt ist.
Wenn der Segmenttyp ein Rollback-Segment ist, muss der Datenblock wiederhergestellt werden.
Der Segmenttyp ist Index. Überprüfen Sie die Tabelle, in der er sich befindet. Erstellen Sie einfach den Index neu.
sql> Wählen Sie Eigentümer, Tabellenname aus dba_tables aus, wobei Clustername = Name_des_Segments ist
Fehler 1578 tritt weiterhin auf und die Datenbank muss wiederhergestellt werden.
Der Segmenttyp ist eine Tabelle und speichert die Daten in der Tabelle.
Analysieren Sie, ob bei einer Entität eine dauerhafte Datenbeschädigung vorliegt
sql> Tabelle analysieren tabelle.name Struktur überprüfen Kaskade;
sql> Tabelle Clustername analysieren, Struktur kaskadieren validieren;
Hardware-Fehlerbehebungsdatenbank, die im ARCHIVE-Modus ausgeführt wird
OFFLINE entsprechende Datendatei kopieren und Sicherungsdatendatei kopieren
Benennen Sie die Datendatei in einen neuen Speicherort um
Stellen Sie die Datendatei mithilfe des Archivprotokolls wieder her
Die Online-Datendateidatenbank wird im Nicht-ARCHIV-Modus ausgeführt
OFFLINEDie entsprechende Datendatei kopiert die gesicherte Datendatei, benennt die Datendatei um und stellt sie online
Speichern Sie die Daten in der Tabelle, zum Beispiel: sql>select * from bigemp;
FEHLER: ORA-01578: ORACLE DATA-Block beschädigt (Datei Nr. 8, Block Nr. 8147) ORA-00110: Datendatei 8: '/oracle/usr714.dbf' … … beschädigte Datei-ID: 8=8(hex) beschädigte Block-ID : 8147=1fd3(hex) erste Zeilen-ID im beschädigten Block: 0000.1fd3.0000.0008 letzte Zeilen-ID im beschädigten Block: 0000.1fd2.7fff.0008 erste Zeilen-ID für diesen Block: 0000.1fd4.0000.0008
sql > Tabellentemp erstellen als select * from bigemp where 1=2;
sql > insert into temp select * from bigemp /*+rowid(bigemp) */ where rowid >='0000.1fd4.0000.0008';
sql > insert into temp select * from bigemp where rowid <='0000.1fd2.7fff.0008';
Wenn in Versionen vor ORACLE 7.1 kein Zeilen-ID-Bereichsscan vorhanden ist, kann der gleiche Zweck wie oben durch Indizierung erreicht werden.
4. Nachwort
Man kann sagen, dass die Backup- und Wiederherstellungstechnologie von ORACLE umfangreich und tiefgreifend ist und dass sie nicht sehr gründlich ist. Ich hoffe, dass Sie auch Ihre Erfahrungen mit Backups teilen können Sagen Sie mir das Problem, ich werde es organisieren und hier als Referenz für alle DBA-Freunde und Datenadministratoren veröffentlichen, die daran interessiert sind. Vielleicht rettet Ihr kleiner Aufwand ein Unternehmen!
Gleichzeitig möchte ich alle meine Freunde daran erinnern, dass Backups sehr, sehr, sehr, sehr, sehr, sehr, sehr, sehr, sehr wichtig sind. . . Wichtig ist, dass Sie nach Möglichkeit den ARCHIV-Modus verwenden, sonst kann etwas schief gehen und Sie können nicht einmal weinen.