Cold-Backup-Strategie für einen Noarchivelog-Modus Oracle Database 12C

Sie führen eine vom Benutzer verwaltete Cold-Sicherung durch, indem Sie Dateien kopieren, nachdem die Datenbank heruntergefahren wurde. Diese Art der Sicherung wird auch als Offline-Sicherung bezeichnet. Ihre Oracle Database 12C kann sich entweder im Noarchivelog-Modus oder im Archivelog-Modus befinden, wenn Sie ein Cold Backup erstellen.

DBAs neigen dazu, eine kalte Sicherung als Synonym für eine Sicherung einer Datenbank im Noarchivelog-Modus zu betrachten. Das stimmt nicht. Sie können eine kalte Sicherung einer Datenbank im Archivelog-Modus erstellen, und dies ist eine Sicherungsstrategie, die viele Geschäfte anwenden. Die Unterschiede zwischen einem Cold Backup mit der Datenbank im Noarchivelog-Modus und im Archivelog-Modus werden in den folgenden Abschnitten beschrieben.

Erstellen einer Cold-Sicherung einer Datenbank im Noarchivelog-Modus

Ein Hauptgrund für die Erstellung einer Cold-Sicherung einer Oracle Database 12C im Noarchivelog-Modus besteht darin, Ihnen die Möglichkeit zu geben, eine Datenbank zu einem Zeitpunkt in der Vergangenheit wiederherzustellen. Sie sollten diese Art der Sicherung nur verwenden, wenn Sie Transaktionen, die nach der Sicherung aufgetreten sind, nicht wiederherstellen müssen. Diese Art von Sicherungs- und Wiederherstellungsstrategie ist nur akzeptabel, wenn Ihre Geschäftsanforderungen den Verlust von Daten und Ausfallzeiten zulassen. Selten würden Sie diese Art von Sicherungs- und Wiederherstellungslösung für eine Produktionsgeschäftsdatenbank implementieren.

Allerdings gibt es einige gute Gründe, diese Art von Backup zu implementieren. Eine häufige Verwendung besteht darin, eine kalte Sicherung einer Entwicklungs- / Test- / Trainingsdatenbank zu erstellen und die Datenbank regelmäßig auf die Baseline zurückzusetzen. Auf diese Weise können Sie einen Leistungstest oder eine Trainingseinheit mit demselben Zeitpunkt-Snapshot der Datenbank neu starten.

 Bild

 Bild

Tipp Erwägen Sie, die Flashback-Datenbankfunktion zu verwenden, um Ihre Datenbank auf einen Zeitpunkt in der Vergangenheit zurückzusetzen.

Das Beispiel in diesem Abschnitt zeigt Ihnen, wie Sie eine Sicherungskopie aller kritischen Dateien in Ihrer Datenbank erstellen: alle Kontrolldateien, Datendateien, temporären Datendateien und Online-Wiederherstellungsprotokolldateien. Mit dieser Art der Sicherung können Sie Ihre Datenbank problemlos auf den Zeitpunkt der Sicherung zurücksetzen. Die Hauptvorteile dieses Ansatzes sind, dass er konzeptionell einfach und leicht zu implementieren ist. Hier sind die Schritte, die für eine kalte Sicherung einer Datenbank im noarchivelog-Modus erforderlich sind:

  1. Bestimmen Sie, wo die Sicherungsdateien kopiert werden sollen und wie viel Speicherplatz benötigt wird.
  2. Geben Sie die Speicherorte und Namen der zu kopierenden Datenbankdateien an.
  3. Fahren Sie die Datenbank mit der Klausel IMMEDIATE, TRANSACTIONAL oder NORMAL herunter.
  4. Kopieren Sie die Dateien (identifiziert in Schritt 2) an den Backup-Speicherort (bestimmt in Schritt 1).
  5. Starten Sie Ihre Oracle Database 12C neu.

In den folgenden Abschnitten werden diese Schritte näher erläutert.

Schritt 1. Bestimmen Sie, wo die Sicherungsdateien kopiert werden sollen und wie viel Speicherplatz benötigt wird

Idealerweise sollte sich der Sicherungsspeicherort auf einer Reihe von Festplatten befinden, die vom Speicherort Ihrer Live-Datendateien getrennt sind. In vielen Shops haben Sie jedoch möglicherweise keine Wahl und werden möglicherweise darüber informiert, welche Einhängepunkte von der Datenbank verwendet werden sollen. In diesem Beispiel ist der Speicherort der Sicherung das Verzeichnis /u01/cbackup/O12C. Um eine ungefähre Vorstellung davon zu erhalten, wie viel Speicherplatz Sie zum Speichern einer Kopie der Sicherungen benötigen, können Sie diese Abfrage ausführen:

select sum(sum_bytes)/1024/1024 m_bytesfrom(select sum(bytes) sum_bytes from v$datafileunionselect sum(bytes) sum_bytes from v$tempfileunionselect (sum(bytes) * members) sum_bytes from v$loggroup by members);

Mit dem Befehl Linux/Unix df (disk free) können Sie überprüfen, wie viel Speicherplatz auf der Festplatte verfügbar ist. Stellen Sie sicher, dass der im Betriebssystem verfügbare Speicherplatz größer ist als die von der vorherigen Abfrage zurückgegebene Summe:

$ df -h

Schritt 2. Ermitteln der Speicherorte und Namen der zu kopierenden Datenbankdateien

Führen Sie diese Abfrage aus, um die Namen (und Pfade) der Dateien aufzulisten, die in einer Kaltsicherung einer Datenbank im noarchivelog-Modus enthalten sind:

select name from v$datafileunionselect name from v$controlfileunionselect name from v$tempfileunionselect member from v$logfile;

ONLINE-WIEDERHERSTELLUNGSPROTOKOLLE SICHERN (ODER NICHT)

Müssen Sie die Online-Wiederherstellungsprotokolle sichern? Nein; Sie müssen die Online-Wiederherstellungsprotokolle niemals als Teil einer Sicherung sichern. Warum sichern DBAs dann die Online-Wiederherstellungsprotokolle als Teil einer kalten Sicherung? Ein Grund dafür ist, dass es den Wiederherstellungsprozess für das Noarchivelog-Modus-Szenario etwas einfacher macht. Die Online-Wiederherstellungsprotokolle sind erforderlich, um die Datenbank auf normale Weise zu öffnen.

Wenn Sie alle Dateien (einschließlich der Online-Wiederherstellungsprotokolle) sichern, müssen Sie alle Dateien (einschließlich der Online-Wiederherstellungsprotokolle) wiederherstellen und Ihre Datenbank starten, um Ihre Oracle Database 12C wieder in den Zustand zu versetzen, in dem sie sich zum Zeitpunkt der Sicherung befand.

Schritt 3. Datenbank herunterfahren

Stellen Sie eine Verbindung zu Ihrer Datenbank als SYS (oder als SYSDBA-privilegierter Benutzer) her und fahren Sie Ihre Datenbank mit IMMEDIATE, TRANSACTIONAL oder NORMAL herunter. In fast jeder Situation ist die SOFORTIGE Verwendung die bevorzugte Methode. Dieser Modus trennt Benutzer, setzt unvollständige Transaktionen zurück und fährt die Datenbank herunter:

$ sqlplus / as sysdbaSQL> shutdown immediate;

Schritt 4. Erstellen Sie Sicherungskopien der Dateien

Verwenden Sie für jede in Schritt 2 identifizierte Datei ein Betriebssystemdienstprogramm, um die Dateien in ein Sicherungsverzeichnis zu kopieren (in Schritt 1 identifiziert). In diesem einfachen Beispiel befinden sich alle Datendateien, Steuerdateien, temporären Datenbankdateien und Online-Wiederherstellungsprotokolle im selben Verzeichnis. In Produktionsumgebungen haben Sie höchstwahrscheinlich Dateien, die in mehreren verschiedenen Verzeichnissen verteilt sind. In diesem Beispiel wird der Befehl Linux/Unix cp verwendet, um die Datenbankdateien aus /u01/dbfile/O12C in das Verzeichnis /u01/cbackup/O12C zu kopieren:

$ cp /u01/dbfile/O12C/*.* /u01/cbackup/O12C

Schritt 5. Starten Sie Ihre Datenbank neu

Nachdem alle Dateien kopiert wurden, können Sie Ihre Datenbank starten:

$ sqlplus / as sysdbaSQL> startup;

Wiederherstellen eines Cold-Backups im Noarchivelog-Modus mit Online-Wiederherstellungsprotokollen

Im nächsten Beispiel wird erläutert, wie Sie aus einem Cold-Backup einer Datenbank im Noarchivelog-Modus wiederherstellen. Wenn Sie die Online-Wiederherstellungsprotokolle als Teil der Cold-Sicherung einbezogen haben, können Sie sie beim Wiederherstellen der Dateien einbeziehen. Hier sind die Schritte in diesem Verfahren:

  1. Fahren Sie die Instanz herunter.
  2. Kopieren Sie die Datendateien, Online-Wiederherstellungsprotokolle, temporären Dateien und Kontrolldateien aus der Sicherung in die Speicherorte der Live-Datenbankdatendateien.
  3. Starten Sie Ihre Datenbank.

Diese Schritte werden in den folgenden Abschnitten beschrieben.

Schritt 1. Fahren Sie die Instanz herunter

Fahren Sie die Instanz herunter, wenn sie ausgeführt wird. In diesem Szenario spielt es keine Rolle, wie Sie die Oracle Database 12C herunterfahren, da Sie zu einem bestimmten Zeitpunkt wiederherstellen (ohne Wiederherstellung von Transaktionen). Alle Dateien in den Live-Datenbankverzeichnisspeicherorten werden überschrieben, wenn die Sicherungsdateien zurückkopiert werden. Wenn Ihre Instanz ausgeführt wird, können Sie sie abrupt abbrechen. Gehen Sie als SYSDBA-privilegierter Benutzer wie folgt vor:

$ sqlplus / as sysdbaSQL> shutdown abort;

Schritt 2. Kopieren Sie die Dateien aus dem Backup zurück

Dieser Schritt führt das Gegenteil des Backups aus: Sie kopieren Dateien vom Backup-Speicherort in die Live-Datenbankdateispeicherorte. In diesem Beispiel befinden sich alle Sicherungsdateien im Verzeichnis /u01/cbackup/O12C, und alle Dateien werden in das Verzeichnis /u01/dbfile/O12C kopiert:

$ cp /u01/cbackup/O12C/*.* /u01/dbfile/O12C

Schritt 3. Starten Sie die Datenbank

Stellen Sie als SYS (oder ein Benutzer mit SYSDBA-Rechten)eine Verbindung zu Ihrer Datenbank her, und starten Sie Ihre Datenbank:

$ sqlplus / as sysdbaSQL> startup;

Nachdem Sie diese Schritte abgeschlossen haben, sollten Sie eine exakte Kopie Ihrer Datenbank haben, wie sie war, als Sie die kalte Sicherung gemacht haben. Es ist, als würden Sie Ihre Datenbank auf den Zeitpunkt zurücksetzen, zu dem Sie die Sicherung erstellt haben.

Wiederherstellen eines Cold-Backups im Noarchivelog-Modus ohne Online-Wiederherstellungsprotokolle

Wie bereits erwähnt, benötigen Sie die Online-Wiederherstellungsprotokolle beim Wiederherstellen aus einem Cold-Backup nicht. Wenn Sie eine Kaltsicherung Ihrer Datenbank im noarchivelog-Modus erstellt haben und die Online-Wiederherstellungsprotokolle nicht in die Sicherung einbezogen haben, sind die Wiederherstellungsschritte nahezu identisch mit den Schritten im vorherigen Abschnitt. Der Hauptunterschied besteht darin, dass Sie im letzten Schritt Ihre Datenbank mithilfe der OPEN RESETLOGS-Klausel öffnen müssen. Hier sind die Schritte:

  1. Fahren Sie die Instanz herunter.
  2. Kopieren Sie die Steuerungs- und Datendateien aus der Sicherung zurück.
  3. Starten Sie die Datenbank im Mount-Modus.
  4. Öffnen Sie die Datenbank mit der OPEN RESETLOGS-Klausel.

Schritt 1. Fahren Sie die Instanz herunter

Fahren Sie die Instanz herunter, wenn sie ausgeführt wird. In diesem Szenario spielt es keine Rolle, wie Sie die Oracle Database 12C herunterfahren, da Sie zu einem bestimmten Zeitpunkt wiederherstellen. Alle Dateien in den Live-Datenbankverzeichnisspeichern werden überschrieben, wenn die Sicherungen kopiert werden. Wenn Ihre Instanz ausgeführt wird, können Sie sie abrupt abbrechen. Gehen Sie als SYSDBA-privilegierter Benutzer wie folgt vor:

$ sqlplus / as sysdbaSQL> shutdown abort;

Schritt 2. Kopieren Sie die Dateien aus der Sicherung zurück

Kopieren Sie die Steuerdateien und Datendateien vom Speicherort der Sicherung in die Speicherorte der Live-Datendateien:

$ cp <backup directory>/*.* <live database file directory>

Schritt 3. Starten Sie die Datenbank im Einhängemodus

Stellen Sie als SYS oder als Benutzer mit SYSDBA-Rechten eine Verbindung zu Ihrer Datenbank her und starten Sie die Datenbank im Einhängemodus:

$ sqlplus / as sysdbaSQL> startup mount

Schritt 4. Öffnen Sie die Datenbank mit der OPEN RESETLOGS-Klausel

Öffnen Sie die Datenbank zur Verwendung mit der OPEN RESETLOGS-Klausel:

SQL> alter database open resetlogs;

Wenn die Meldung Database altered angezeigt wird, war der Befehl erfolgreich. Möglicherweise wird dieser Fehler jedoch angezeigt:

ORA-01139: RESETLOGS option only valid after an incomplete database recovery

Geben Sie in diesem Fall den folgenden Befehl ein:

SQL> recover database until cancel;

Sie sollten diese Nachricht sehen:

Media recovery complete.

Versuchen Sie nun, Ihre Datenbank mit der OPEN RESETLOGS-Klausel zu öffnen:

SQL> alter database open resetlogs;

Diese Anweisung weist Oracle an, die Online-Wiederherstellungsprotokolle neu zu erstellen. Oracle verwendet Informationen in der Steuerdatei für die Platzierung, den Namen und die Größe der Wiederherstellungsprotokolle. Wenn sich an diesen Speicherorten alte Online-Wiederherstellungsprotokolldateien befinden, werden diese überschrieben.

Wenn Sie Ihre Warnung überwachen.während dieses Vorgangs sehen Sie möglicherweise ORA-00312 und ORA-00313. Dies bedeutet, dass Oracle die Online-Redo-Protokolldateien nicht finden kann; Dies ist in Ordnung, da diese Dateien erst physisch verfügbar sind, wenn sie mit dem Befehl OPEN RESETLOGS neu erstellt wurden.

Scripting a Cold Backup and Restore

Hier erfahren Sie, wie Sie ein Cold Backup skripten. Die Grundidee besteht darin, das Datenwörterbuch dynamisch abzufragen, um die Speicherorte und Namen der zu sichernden Dateien zu bestimmen. Dies ist vorzuziehen, um die Verzeichnisspeicherorte und Dateinamen in einem Skript fest zu codieren. Die dynamische Generierung eines Skripts ist weniger anfällig für Fehler und Überraschungen (z. B. das Hinzufügen neuer Datendateien zu einer Datenbank, aber nicht zu einem alten, fest codierten Sicherungsskript).

 Bild

 Image

Hinweis Die Skripte in diesem Abschnitt sind nicht als produktionsstarke Sicherungs- und Wiederherstellungsskripte gedacht. Vielmehr veranschaulichen sie die grundlegenden Konzepte der Skripterstellung eines Cold-Backups und der anschließenden Wiederherstellung.

Das erste Skript in diesem Abschnitt erstellt ein Cold Backup einer Datenbank. Bevor Sie das Cold Backup-Skript verwenden, müssen Sie diese Variablen im Skript an Ihre Datenbankumgebung anpassen:

  • ORACLE_SID
  • ORACLE_HOME
  • cbdir

Die Variable cbdir gibt den Namen des Speicherorts des Sicherungsverzeichnisses an. Das Skript erstellt eine Datei mit dem Namen coldback.sql, das von SQL*Plus ausgeführt wird, um eine kalte Sicherung der Datenbank zu initiieren:

#!/bin/bashORACLE_SID=O12CORACLE_HOME=/u01/app/oracle/product/12.1.0.1/db_1PATH=$PATH:$ORACLE_HOME/bin#sqlplus -s <<EOF/ as sysdbaset head off pages0 lines 132 verify off feed off trimsp ondefine cbdir=/u01/cbackup/O12Cspo coldback.sqlselect 'shutdown immediate;' from dual;select '!cp ' || name || ' ' || '&&cbdir' from v$datafile;select '!cp ' || name || ' ' || '&&cbdir' from v$tempfile;select '!cp ' || member || ' ' || '&&cbdir' from v$logfile;select '!cp ' || name || ' ' || '&&cbdir' from v$controlfile;select 'startup;' from dual;spo off;@@coldback.sqlEOFexit 0

Diese Datei generiert Befehle, die aus einem SQL * Plus-Skript ausgeführt werden sollen, um eine kalte Sicherung einer Oracle-Datenbank zu erstellen. Sie setzen ein Ausrufezeichen (!) vor dem Unix cp-Befehl, um SQL * Plus anzuweisen, das Betriebssystem zu hosten, um den cp-Befehl auszuführen. Sie setzen auch einen Schrägstrich (\) vor jedes Dollarzeichen ($), wenn Sie auf v $ -Datenwörterbuchansichten verweisen. Dies ist in einem Linux / Unix-Shell-Skript erforderlich. Das \ entgeht dem $ und weist das Shell-Skript an, das $ nicht als Sonderzeichen zu behandeln (das $ bedeutet normalerweise eine Shell-Variable).

Nachdem Sie dieses Skript ausgeführt haben, finden Sie hier ein Beispiel für die in den Coldback geschriebenen Kopierbefehle.sql-Skript:

shutdown immediate;!cp /u01/dbfile/O12C/system01.dbf /u01/cbackup/O12C!cp /u01/dbfile/O12C/sysaux01.dbf /u01/cbackup/O12C!cp /u01/dbfile/O12C/undotbs01.dbf /u01/cbackup/O12C!cp /u01/dbfile/O12C/users01.dbf /u01/cbackup/O12C!cp /u01/dbfile/O12C/tools01.dbf /u01/cbackup/O12C!cp /u01/dbfile/O12C/temp01.dbf /u01/cbackup/O12C!cp /u01/oraredo/O12C/redo02a.rdo /u01/cbackup/O12C!cp /u02/oraredo/O12C/redo02b.rdo /u01/cbackup/O12C!cp /u01/oraredo/O12C/redo01a.rdo /u01/cbackup/O12C!cp /u02/oraredo/O12C/redo01b.rdo /u01/cbackup/O12C!cp /u01/oraredo/O12C/redo03a.rdo /u01/cbackup/O12C!cp /u02/oraredo/O12C/redo03b.rdo /u01/cbackup/O12C!cp /u01/dbfile/O12C/control01.ctl /u01/cbackup/O12C!cp /u01/dbfile/O12C/control02.ctl /u01/cbackup/O12Cstartup;

Während Sie eine kalte Sicherung erstellen, sollten Sie auch ein Skript generieren, das die Befehle zum Kopieren von Datendateien, temporären Dateien, Protokolldateien und Steuerdateien an ihre ursprünglichen Speicherorte bereitstellt. Sie können dieses Skript verwenden, um aus der kalten Sicherung wiederherzustellen. Das nächste Skript in diesem Abschnitt erstellt dynamisch einen Coldrest.SQL-Skript, das Dateien vom Sicherungsspeicherort an die ursprünglichen Speicherorte der Datendatei kopiert. Sie müssen dieses Skript auf die gleiche Weise ändern, wie Sie das Cold Backup-Skript geändert haben (d. h. die Variablen ORACLE_SID, ORACLE_HOME und cbdir an Ihre Umgebung anpassen):

#!/bin/bashORACLE_SID=O12CORACLE_HOME=/u01/app/oracle/product/12.1.0.1/db_1PATH=$PATH:$ORACLE_HOME/bin#sqlplus -s <<EOF/ as sysdbaset head off pages0 lines 132 verify off feed off trimsp ondefine cbdir=/u01/cbackup/O12Cdefine dbname=$ORACLE_SIDspo coldrest.sqlselect 'shutdown abort;' from dual;select '!cp ' || '&&cbdir/' || substr(name, instr(name,'/',-1,1)+1) || ' ' || name from v$datafile;select '!cp ' || '&&cbdir/' || substr(name, instr(name,'/',-1,1)+1) || ' ' || name from v$tempfile;select '!cp ' || '&&cbdir/' || substr(member, instr(member,'/',-1,1)+1) || ' ' || member from v$logfile;select '!cp ' || '&&cbdir/' || substr(name, instr(name,'/',-1,1)+1) || ' ' || name from v$controlfile;select 'startup;' from dual;spo off;EOFexit 0

Dieses Skript erstellt ein Skript mit dem Namen coldrest.sql, das die Kopierbefehle generiert, um Ihre Datendateien, temporären Dateien, Protokolldateien und Steuerdateien an ihren ursprünglichen Speicherorten wiederherzustellen. Nachdem Sie dieses Shell-Skript ausgeführt haben, finden Sie hier einen Ausschnitt des Codes im Coldrest.sql-Datei:

shutdown abort;!cp /u01/cbackup/O12C/system01.dbf /u01/dbfile/O12C/system01.dbf!cp /u01/cbackup/O12C/sysaux01.dbf /u01/dbfile/O12C/sysaux01.dbf!cp /u01/cbackup/O12C/undotbs01.dbf /u01/dbfile/O12C/undotbs01.dbf!cp /u01/cbackup/O12C/users01.dbf /u01/dbfile/O12C/users01.dbf!cp /u01/cbackup/O12C/tools01.dbf /u01/dbfile/O12C/tools01.dbf...!cp /u01/cbackup/O12C/redo03b.rdo /u02/oraredo/O12C/redo03b.rdo!cp /u01/cbackup/O12C/control01.ctl /u01/dbfile/O12C/control01.ctl!cp /u01/cbackup/O12C/control02.ctl /u01/dbfile/O12C/control02.ctlstartup;

Wenn Sie mit diesem Skript aus einem Cold Backup wiederherstellen müssen, melden Sie sich bei SQL*Plus als SYS an und führen Sie das Skript aus:

$ sqlplus / as sysdbaSQL> @coldrest.sql

Вас заинтересует / Für Sie interessant:

 Verwalten von Oracle Database 12C O...

Verwalten der Oracle-Datenbank 12C O… 4931 aufrufe Андрей Волков Sa, 29 Feb 2020, 10:18:11

 Implementierung einer Hot Backup Stra...

Implementieren einer Hot Backup Stra… 6414 aufrufe Андрей Волков Sa, 29 Feb 2020, 10:16:34

 Passende Oracle 12c Tabellentyp...

Übereinstimmender Oracle 12c-Tabellentyp… 1786 aufrufe Di Sa, 18 Aug 2018, 16:59:35

 Stoppen der Oracle-Datenbank 1...

Stoppen der Oracle-Datenbank 1… 976 aufrufe Андрей Волков Sa, 29 Feb 2020, 10:19:28

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.