DR für Oracle-Datenbank über Protokollversand
Die Replikationsverfahren für eine Oracle-Datenbank sind im Wesentlichen dieselben wie die Backup-Verfahren. Die primäre Anforderung besteht darin, dass die Snapshots, die ein wiederherstellbares Backup darstellen, auf das Remote-Speichersystem repliziert werden müssen.
Wie bereits in der Dokumentation zur lokalen Datensicherheit beschrieben, kann ein wiederherstellbares Backup mit dem Hot-Backup-Prozess oder mithilfe von Snapshot-optimierten Backups erstellt werden.
Die wichtigste Anforderung ist die Isolierung der Datendateien in einem oder mehreren dedizierten Volumes. Sie müssen durch einen anderen Dateityp nicht kontaminiert sein. Der Grund dafür ist, sicherzustellen, dass die Datendateireplikation völlig unabhängig von der Replikation anderer Datentypen wie Archivprotokollen ist. Weitere Informationen zu Dateilayouts und wichtige Details zur Sicherstellung, dass das Speicherlayout Snapshot-freundlich ist, finden Sie unter "Datenlayout".
Angenommen, die Datendateien sind in dedizierten Volumes eingekapselt. Die nächste Frage ist, wie die Wiederherstellungsprotokolle, Archivprotokolle und Steuerdateien gemanagt werden. Am einfachsten ist es, alle diese Datentypen in einem einzelnen Volume zu platzieren. Der Vorteil dabei ist, dass replizierte Wiederherstellungsprotokolle, Archivprotokolle und Steuerdateien perfekt synchronisiert sind. Es besteht keine Notwendigkeit für unvollständige Wiederherstellung oder die Verwendung einer Backup-controlfile, obwohl es wünschenswert sein könnte, auch Skript-Erstellung von Backup-controlfiles für andere potenzielle Recovery-Szenarien.
Zwei-Volumes-Layout
Das einfachste Layout ist in der folgenden Abbildung dargestellt.

Dies ist der häufigste Ansatz. Aus der Perspektive eines DBAs mag es ungewöhnlich erscheinen, alle Kopien der Wiederherstellungs- und Archivprotokolle auf demselben Volume zu vermengen. Allerdings bietet Trennung keinen besonderen Schutz, wenn die Dateien und LUNs sich alle noch auf derselben zugrunde liegenden Laufwerkgruppe befinden.
Layout mit drei Volumes
Gelegentlich ist eine Trennung von Wiederherstellungsprotokollen erforderlich, da Bedenken hinsichtlich der Datensicherung bestehen oder Redo-Log-I/O über Controller verteilt werden müssen. In diesem Fall wird das in der Abbildung unten abgebildete Layout mit drei Volumes für die Replikation verwendet, während gleichzeitig die Notwendigkeit einer unvollständigen Wiederherstellung vermieden oder auf Backup-Controller-Dateien angewiesen ist.

Dies ermöglicht das Striping der Redo-Protokolle und Steuerdateien über unabhängige Sätze von Spindeln und Controllern auf der Quelle. Die Archivprotokolle und ein Satz von Steuerdateien und Wiederherstellungsprotokollen können jedoch weiterhin in einem synchronisierten Zustand mit den Archivprotokollen repliziert werden.
In diesem Modell wird das Redo-Protokoll-B-Volume nicht repliziert.
Disaster-Recovery-Verfahren – Hot-Backups
Gehen Sie wie folgt vor, um eine Disaster Recovery mithilfe von Hot Backups durchzuführen:
Voraussetzungen
-
Oracle Binärdateien werden auf dem Disaster Recovery Server installiert.
-
Datenbankinstanzen sind in aufgeführt
/etc/oratab. -
Der
passwdUndpfileOderspfileDie Instanz muss sich im befinden$ORACLE_HOME/dbsVerzeichnis. .
Disaster Recovery
-
Brechen Sie die Spiegelungen für die Datendateien und das gemeinsame Protokoll-Volume auf.
-
Stellen Sie die Datendatei-Volumes auf den neuesten Hot-Backup-Snapshot der Datendateien wieder her.
-
Wenn SAN verwendet wird, aktivieren Sie Volume-Gruppen und/oder mounten Sie Dateisysteme.
-
Geben Sie Archivprotokolle bis zum gewünschten Punkt wieder.
-
Wiederholen Sie die aktuellen Wiederherstellungsprotokolle, wenn eine vollständige Wiederherstellung gewünscht wird.
Die Verwendung von NFS vereinfacht diesen Vorgang erheblich, da die NFS-Filesysteme für Datendateien und Protokolldateien jederzeit auf den Disaster Recovery-Server gemountet werden können. Wenn die Spiegelungen beschädigt sind, wird es zu Lesen/Schreiben.
Disaster Recovery-Verfahren – Snapshot optimierte Backups
Die Wiederherstellung von Snapshot-optimierten Backups ist mit dem Hot-Backup-Recovery-Verfahren mit den folgenden Änderungen fast identisch:
-
Brechen Sie die Spiegelungen für die Datendateien und das gemeinsame Protokoll-Volume auf.
-
Stellen Sie die Datendatei-Volumes auf einem Snapshot wieder her, der vor dem aktuellen Replikat des Protokollvolumes erstellt wurde.
-
Wenn SAN verwendet wird, aktivieren Sie Volume-Gruppen und/oder mounten Sie Dateisysteme.
-
Geben Sie Archivprotokolle bis zum gewünschten Punkt wieder.
-
Wiederholen Sie die aktuellen Wiederherstellungsprotokolle, wenn eine vollständige Wiederherstellung gewünscht wird.
Diese Unterschiede vereinfachen das gesamte Recovery-Verfahren, da nicht sichergestellt werden muss, dass ein Snapshot ordnungsgemäß auf der Quelle erstellt wurde, während sich die Datenbank im Hot Backup-Modus befand. Das Disaster-Recovery-Verfahren basiert auf den Zeitstempeln der Snapshots auf dem Disaster-Recovery-Standort. Der Zustand der Datenbank, zu dem die Snapshots erstellt wurden, ist nicht wichtig.
Disaster Recovery mit Hot-Backup-Snapshots
Dies ist ein Beispiel für eine Disaster-Recovery-Strategie, die auf der Replizierung von Hot-Backup-Snapshots basiert. Er ist auch ein Beispiel für eine einfache und skalierbare lokale Backup-Strategie.
Die Beispieldatenbank befindet sich in einer grundlegenden Architektur mit zwei Volumes. /oradata Enthält Datendateien und /oralogs Wird für kombinierte Redo-Logs, Archivprotokolle und Steuerdateien verwendet.
[root@host1 ~]# ls /ora* /oradata: dbf /oralogs: arch ctrl redo
Es sind zwei Zeitpläne erforderlich, einer für die nächtlichen Datendatei-Backups und einer für die Protokolldatei-Backups. Diese werden Mitternacht bzw. 15 Minuten genannt.
Cluster01::> job schedule cron show -name midnight|15minutes Name Description ---------------- ----------------------------------------------------- 15minutes @:00,:15,:30,:45 midnight @0:00 2 entries were displayed.
Diese Zeitpläne werden dann innerhalb der Snapshot-Richtlinien verwendet NTAP-datafile-backups Und NTAP-log-backups, Wie unten gezeigt:
Cluster01::> snapshot policy show -vserver vserver1 -policy NTAP-* -fields schedules,counts vserver policy schedules counts --------- --------------------- ---------------------------- ------ vserver1 NTAP-datafile-backups midnight 60 vserver1 NTAP-log-backups 15minutes 72 2 entries were displayed.
Diese Snapshot-Richtlinien werden schließlich auf die Volumes angewendet.
Cluster01::> volume show -vserver vserver1 -volume vol_oracle* -fields snapshot-policy vserver volume snapshot-policy --------- ---------------------- --------------------- vserver1 vol_oracle_datafiles NTAP-datafile-backups vserver1 vol_oracle_logs NTAP-log-backups
Dadurch wird der Backup-Zeitplan der Volumes definiert. Datendatei-Snapshots werden um Mitternacht erstellt und für 60 Tage aufbewahrt. Das Protokollvolumen enthält 72 Snapshots, die in 15-Minuten-Intervallen erstellt wurden, was bis zu 18 Stunden Abdeckung ergibt.
Stellen Sie dann sicher, dass sich die Datenbank im Hot-Backup-Modus befindet, wenn ein Datendatei-Snapshot erstellt wird. Dies wird mit einem kleinen Skript gemacht, das einige grundlegende Argumente akzeptiert, die den Backup-Modus auf der angegebenen SID starten und stoppen.
58 * * * * /snapomatic/current/smatic.db.ctrl --sid NTAP --startbackup 02 * * * * /snapomatic/current/smatic.db.ctrl --sid NTAP --stopbackup
Dieser Schritt stellt sicher, dass sich die Datenbank während eines vierminütigen Fensters um den Mitternacht-Snapshot im Hot Backup-Modus befindet.
Die Replikation zum Disaster Recovery-Standort ist wie folgt konfiguriert:
Cluster01::> snapmirror show -destination-path drvserver1:dr_oracle* -fields source-path,destination-path,schedule source-path destination-path schedule -------------------------------- ---------------------------------- -------- vserver1:vol_oracle_datafiles drvserver1:dr_oracle_datafiles 6hours vserver1:vol_oracle_logs drvserver1:dr_oracle_logs 15minutes 2 entries were displayed.
Das Ziel des Protokollvolumes wird alle 15 Minuten aktualisiert. Somit wird eine RPO von etwa 15 Minuten erzielt. Das genaue Update-Intervall variiert ein wenig abhängig vom Gesamtvolumen der Daten, die während der Aktualisierung übertragen werden müssen.
Das Ziel des Datendatei-Volumes wird alle sechs Stunden aktualisiert. Dies hat keine Auswirkung auf RPO oder RTO. Wenn eine Disaster-Recovery erforderlich ist, besteht einer der ersten Schritte darin, das Datendateivolume wieder auf einen Hot-Backup-Snapshot wiederherzustellen. Der Zweck des häufigeren Aktualisierungsintervalls besteht darin, die Übertragungsrate dieses Volumens zu glätten. Wenn die Aktualisierung einmal pro Tag geplant ist, müssen alle Änderungen, die während des Tages angesammelt wurden, gleichzeitig übertragen werden. Bei häufigeren Updates werden die Änderungen schrittweise im Laufe des Tages repliziert.
Im Falle eines Ausfalls besteht der erste Schritt darin, die Spiegelungen für beide Volumes zu unterbrechen:
Cluster01::> snapmirror break -destination-path drvserver1:dr_oracle_datafiles -force Operation succeeded: snapmirror break for destination "drvserver1:dr_oracle_datafiles". Cluster01::> snapmirror break -destination-path drvserver1:dr_oracle_logs -force Operation succeeded: snapmirror break for destination "drvserver1:dr_oracle_logs". Cluster01::>
Die Replikate sind jetzt Lese-/Schreibzugriff. Im nächsten Schritt wird der Zeitstempel des Protokoll-Volumes überprüft.
Cluster01::> snapmirror show -destination-path drvserver1:dr_oracle_logs -field newest-snapshot-timestamp source-path destination-path newest-snapshot-timestamp -------------------------- ---------------------------- ------------------------- vserver1:vol_oracle_logs drvserver1:dr_oracle_logs 03/14 13:30:00
Die neueste Kopie des Logvolumens ist der 14. März um 13:30:00.
Identifizieren Sie als Nächstes den Hot-Backup-Snapshot, der unmittelbar vor dem Status des Protokollvolumes erstellt wurde. Dies ist erforderlich, da die Protokollwiedergabe alle Archivprotokolle erfordert, die im Hot Backup-Modus erstellt wurden. Das Replikat des Protokollvolumes muss daher älter als die Hot-Backup-Images sein, da sonst die erforderlichen Protokolle nicht enthalten wären.
Cluster01::> snapshot list -vserver drvserver1 -volume dr_oracle_datafiles -fields create-time -snapshot midnight* vserver volume snapshot create-time --------- ------------------------ -------------------------- ------------------------ drvserver1 dr_oracle_datafiles midnight.2017-01-14_0000 Sat Jan 14 00:00:00 2017 drvserver1 dr_oracle_datafiles midnight.2017-01-15_0000 Sun Jan 15 00:00:00 2017 ... drvserver1 dr_oracle_datafiles midnight.2017-03-12_0000 Sun Mar 12 00:00:00 2017 drvserver1 dr_oracle_datafiles midnight.2017-03-13_0000 Mon Mar 13 00:00:00 2017 drvserver1 dr_oracle_datafiles midnight.2017-03-14_0000 Tue Mar 14 00:00:00 2017 60 entries were displayed. Cluster01::>
Der zuletzt erstellte Snapshot ist midnight.2017-03-14_0000. Hierbei handelt es sich um das neueste Hot-Backup-Image der Datendateien, das wie folgt wiederhergestellt wird:
Cluster01::> snapshot restore -vserver drvserver1 -volume dr_oracle_datafiles -snapshot midnight.2017-03-14_0000 Cluster01::>
In dieser Phase kann die Datenbank nun wiederhergestellt werden. Wenn es sich um eine SAN-Umgebung handelt, würde der nächste Schritt die Aktivierung von Volume-Gruppen und das Mounten von Dateisystemen umfassen, ein einfach automatisierter Prozess. Da in diesem Beispiel NFS verwendet wird, sind die Dateisysteme bereits gemountet und wurden in Schreib- und Lesezugriff eingebunden, ohne dass in dem Moment, in dem die Spiegelungen beschädigt wurden, eine weitere Bereitstellung oder Aktivierung erforderlich war.
Die Datenbank kann jetzt bis zum gewünschten Zeitpunkt wiederhergestellt werden, oder sie kann in Bezug auf die Kopie der replizierten Wiederherstellungsprotokolle vollständig wiederhergestellt werden. Dieses Beispiel zeigt den Wert des kombinierten Archivprotokolls, der Steuerdatei und des Wiederherstellungsprotokolls. Der Recovery-Prozess ist drastisch einfacher, da es keine Notwendigkeit, auf Backup-Steuerdateien oder Reset-Protokolldateien verlassen.
[oracle@drhost1 ~]$ sqlplus / as sysdba
Connected to an idle instance.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 1610612736 bytes
Fixed Size 2924928 bytes
Variable Size 1090522752 bytes
Database Buffers 503316480 bytes
Redo Buffers 13848576 bytes
Database mounted.
SQL> recover database until cancel;
ORA-00279: change 1291884 generated at 03/14/2017 12:58:01 needed for thread 1
ORA-00289: suggestion : /oralogs_nfs/arch/1_34_938169986.dbf
ORA-00280: change 1291884 for thread 1 is in sequence #34
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: change 1296077 generated at 03/14/2017 15:00:44 needed for thread 1
ORA-00289: suggestion : /oralogs_nfs/arch/1_35_938169986.dbf
ORA-00280: change 1296077 for thread 1 is in sequence #35
ORA-00278: log file '/oralogs_nfs/arch/1_34_938169986.dbf' no longer needed for
this recovery
...
ORA-00279: change 1301407 generated at 03/14/2017 15:01:04 needed for thread 1
ORA-00289: suggestion : /oralogs_nfs/arch/1_40_938169986.dbf
ORA-00280: change 1301407 for thread 1 is in sequence #40
ORA-00278: log file '/oralogs_nfs/arch/1_39_938169986.dbf' no longer needed for
this recovery
ORA-00279: change 1301418 generated at 03/14/2017 15:01:19 needed for thread 1
ORA-00289: suggestion : /oralogs_nfs/arch/1_41_938169986.dbf
ORA-00280: change 1301418 for thread 1 is in sequence #41
ORA-00278: log file '/oralogs_nfs/arch/1_40_938169986.dbf' no longer needed for
this recovery
ORA-00308: cannot open archived log '/oralogs_nfs/arch/1_41_938169986.dbf'
ORA-17503: ksfdopn:4 Failed to open file /oralogs_nfs/arch/1_41_938169986.dbf
ORA-17500: ODM err:File does not exist
SQL> recover database;
Media recovery complete.
SQL> alter database open;
Database altered.
SQL>
Disaster Recovery mit Snapshot-optimierten Backups
Der Disaster-Recovery-Vorgang mithilfe von Snapshot optimierten Backups ist nahezu identisch mit dem Disaster-Recovery-Verfahren für Hot Backups. Wie beim Hot Backup Snapshot Verfahren ist es auch im Grunde eine Erweiterung einer lokalen Backup-Architektur, in der die Backups für die Disaster Recovery repliziert werden. Das folgende Beispiel zeigt das detaillierte Konfigurations- und Wiederherstellungsverfahren. Dieses Beispiel nennt auch die wichtigsten Unterschiede zwischen Hot Backups und Snapshot optimierten Backups.
Die Beispieldatenbank befindet sich in einer grundlegenden Architektur mit zwei Volumes. /oradata Enthält Datendateien, und /oralogs Wird für kombinierte Redo-Logs, Archivprotokolle und Steuerdateien verwendet.
[root@host2 ~]# ls /ora* /oradata: dbf /oralogs: arch ctrl redo
Es sind zwei Zeitpläne erforderlich: Eine für die nächtlichen Datendatei-Backups und eine für die Protokolldatei-Backups. Diese werden Mitternacht bzw. 15 Minuten genannt.
Cluster01::> job schedule cron show -name midnight|15minutes Name Description ---------------- ----------------------------------------------------- 15minutes @:00,:15,:30,:45 midnight @0:00 2 entries were displayed.
Diese Zeitpläne werden dann innerhalb der Snapshot-Richtlinien verwendet NTAP-datafile-backups Und NTAP-log-backups, Wie unten gezeigt:
Cluster01::> snapshot policy show -vserver vserver2 -policy NTAP-* -fields schedules,counts vserver policy schedules counts --------- --------------------- ---------------------------- ------ vserver2 NTAP-datafile-backups midnight 60 vserver2 NTAP-log-backups 15minutes 72 2 entries were displayed.
Diese Snapshot-Richtlinien werden schließlich auf die Volumes angewendet.
Cluster01::> volume show -vserver vserver2 -volume vol_oracle* -fields snapshot-policy vserver volume snapshot-policy --------- ---------------------- --------------------- vserver2 vol_oracle_datafiles NTAP-datafile-backups vserver2 vol_oracle_logs NTAP-log-backups
Dadurch wird der ultimative Backup-Plan der Volumes gesteuert. Snapshots werden um Mitternacht erstellt und 60 Tage aufbewahrt. Das Protokollvolumen enthält 72 Snapshots, die in 15-Minuten-Intervallen erstellt wurden, was bis zu 18 Stunden Abdeckung ergibt.
Die Replikation zum Disaster Recovery-Standort ist wie folgt konfiguriert:
Cluster01::> snapmirror show -destination-path drvserver2:dr_oracle* -fields source-path,destination-path,schedule source-path destination-path schedule -------------------------------- ---------------------------------- -------- vserver2:vol_oracle_datafiles drvserver2:dr_oracle_datafiles 6hours vserver2:vol_oracle_logs drvserver2:dr_oracle_logs 15minutes 2 entries were displayed.
Das Ziel des Protokollvolumes wird alle 15 Minuten aktualisiert. Dadurch wird ein RPO von ca. 15 Minuten erreicht, wobei das genaue Update-Intervall etwas variiert, je nach dem Gesamtvolumen der Daten, die während der Aktualisierung übertragen werden müssen.
Das Datendatei-Volume-Ziel wird alle 6 Stunden aktualisiert. Dies hat keine Auswirkung auf RPO oder RTO. Wenn eine Disaster Recovery erforderlich ist, müssen Sie das Datendatei-Volume zunächst auf einem Hot-Backup-Snapshot wiederherstellen. Der Zweck des häufigeren Aktualisierungsintervalls besteht darin, die Übertragungsrate dieses Volumens zu glätten. Wenn die Aktualisierung einmal pro Tag geplant wurde, müssen alle Änderungen, die sich während des Tages angesammelt haben, gleichzeitig übertragen werden. Bei häufigeren Updates werden die Änderungen schrittweise im Laufe des Tages repliziert.
Im Falle eines Ausfalls besteht der erste Schritt darin, die Spiegelungen für alle Volumes zu unterbrechen:
Cluster01::> snapmirror break -destination-path drvserver2:dr_oracle_datafiles -force Operation succeeded: snapmirror break for destination "drvserver2:dr_oracle_datafiles". Cluster01::> snapmirror break -destination-path drvserver2:dr_oracle_logs -force Operation succeeded: snapmirror break for destination "drvserver2:dr_oracle_logs". Cluster01::>
Die Replikate sind jetzt Lese-/Schreibzugriff. Im nächsten Schritt wird der Zeitstempel des Protokoll-Volumes überprüft.
Cluster01::> snapmirror show -destination-path drvserver2:dr_oracle_logs -field newest-snapshot-timestamp source-path destination-path newest-snapshot-timestamp -------------------------- ---------------------------- ------------------------- vserver2:vol_oracle_logs drvserver2:dr_oracle_logs 03/14 13:30:00
Die neueste Kopie des Logvolumens ist der 14. März um 13:30. Identifizieren Sie als nächstes den Datendatei-Snapshot, der unmittelbar vor dem Status des Protokoll-Volumes erstellt wurde. Dies ist erforderlich, da für die Protokollwiedergabe alle Archivprotokolle von kurz vor dem Snapshot zum gewünschten Wiederherstellungspunkt erforderlich sind.
Cluster01::> snapshot list -vserver drvserver2 -volume dr_oracle_datafiles -fields create-time -snapshot midnight* vserver volume snapshot create-time --------- ------------------------ -------------------------- ------------------------ drvserver2 dr_oracle_datafiles midnight.2017-01-14_0000 Sat Jan 14 00:00:00 2017 drvserver2 dr_oracle_datafiles midnight.2017-01-15_0000 Sun Jan 15 00:00:00 2017 ... drvserver2 dr_oracle_datafiles midnight.2017-03-12_0000 Sun Mar 12 00:00:00 2017 drvserver2 dr_oracle_datafiles midnight.2017-03-13_0000 Mon Mar 13 00:00:00 2017 drvserver2 dr_oracle_datafiles midnight.2017-03-14_0000 Tue Mar 14 00:00:00 2017 60 entries were displayed. Cluster01::>
Der zuletzt erstellte Snapshot ist midnight.2017-03-14_0000. Diesen Snapshot wiederherstellen.
Cluster01::> snapshot restore -vserver drvserver2 -volume dr_oracle_datafiles -snapshot midnight.2017-03-14_0000 Cluster01::>
Die Datenbank kann nun wiederhergestellt werden. Wenn es sich um eine SAN-Umgebung handelt, würden Sie dann Volume-Gruppen aktivieren und Filesysteme mounten, ein einfach automatisierter Prozess. In diesem Beispiel wird jedoch NFS verwendet, d. h. die Dateisysteme sind bereits gemountet und wurden in Lese- und Schreibzugriff überführt. In dem Moment, in dem die Spiegelungen beschädigt wurden, ist keine weitere Bereitstellung oder Aktivierung erforderlich.
Die Datenbank kann jetzt bis zum gewünschten Zeitpunkt wiederhergestellt werden, oder sie kann in Bezug auf die Kopie der replizierten Wiederherstellungsprotokolle vollständig wiederhergestellt werden. Dieses Beispiel zeigt den Wert des kombinierten Archivprotokolls, der Steuerdatei und des Wiederherstellungsprotokolls. Der Wiederherstellungsvorgang ist wesentlich einfacher, da keine Notwendigkeit besteht, sich auf Backup-Steuerdateien oder Reset-Protokolldateien zu verlassen.
[oracle@drhost2 ~]$ sqlplus / as sysdba SQL*Plus: Release 12.1.0.2.0 Production on Wed Mar 15 12:26:51 2017 Copyright (c) 1982, 2014, Oracle. All rights reserved. Connected to an idle instance. SQL> startup mount; ORACLE instance started. Total System Global Area 1610612736 bytes Fixed Size 2924928 bytes Variable Size 1073745536 bytes Database Buffers 520093696 bytes Redo Buffers 13848576 bytes Database mounted. SQL> recover automatic; Media recovery complete. SQL> alter database open; Database altered. SQL>