Oracle-Datenbanken in einer Windows-Umgebung schützen und wiederherstellen

Hinweise

Bevor Sie Oracle-Datenbanken in einer Windows-Umgebung erkennen, schützen und bereitstellen können, müssen Sie Folgendes prüfen:

  1. Prüfen Sie die folgenden Einstellungen auf dem Datenbankserver:

    1. Die Oracle-Datenbank und der Oracle-Listener sind aktiv (Windows-Dienste prüfen).

    2. Prüfen Sie, ob ein tns-Eintrag mit dem Namen SID vorhanden ist. Die Datei tnsnames.ora befindet sich unter

      %ORACLE_HOME%\network\admin
      
    3. Prüfen Sie, ob der tns-Eintrag gültig ist, indem Sie Folgendes ausführen:

      %ORACLE_HOME%\bin\tnsping <SID>
      
  2. Prüfen Sie, ob der Protokollmodus auf „Archivprotokoll“ gesetzt ist:

    sql> archive log list
    

    Wenn sich die Datenbank im Modus „Kein Archivierungsprotokoll“ befindet, kehren Sie zum Modus „Archivierungsprotokoll“ zurück:

    sql> shutdown immediate;
    sql> startup mount;
    sql> alter database archivelog;
    sql> alter database open;
    
  3. Aktivieren Sie die Block-Verfolgung für Datenbankänderungen. Wenn die Datenbank-BCT deaktiviert ist, wirkt sich das auf die Dauer der inkrementellen Sicherung aus. Die Funktion zum Blockieren von Änderungen ist in der Oracle Enterprise Edition verfügbar. Führen Sie eine SQL-Abfrage aus, um zu prüfen, ob das Blockierungs-Tracking aktiviert ist. Führen Sie die Abfrage aus:

    sqlplus / as sysdba
    sql> select * from v$block_change_tracking;
    

So aktivieren Sie das Blockieren von Änderungen:

    sql> alter database enable block change tracking
    using file '<Oracle home directory>\orcl.bct';

Oracle-Datenbank in einer Windows-Umgebung sichern

So sichern Sie eine Oracle-Datenbank in einer Windows-Umgebung:

  1. Legen Sie die Anwendungsdetails und -einstellungen für Oracle-Datenbanken fest.

  2. Wenden Sie einen Sicherungsplan an, um die Datenbank zu schützen.

Bekanntes Problem

Oracle 19c SQLPlus (sqlplus.exe) hängt unter Windows gelegentlich beim Ausführen des Befehls „exit“ (Doc ID 2820655.1) fest. Dieser Fehler ist nur auf Windows-Systemen zu finden. Oracle hat bestätigt, dass dieses Problem in den SQLPlus-Versionen 19.10, 19.11 und 19.12 auftritt. Oracle hat folgende Lösungen bereitgestellt:

  • SQL*Plus 21.1 oder höher verwenden (oder)
  • Wenden Sie den Patch 31466370 an. Dieser Patch ist für 19.11 und 19.13 verfügbar.

Oracle-Datenbanken in einer Windows-Umgebung manuell mit RMAN an einem geplanten Sicherungspunkt wiederherstellen, wenn das Archive-Log nicht durch Sicherung und Notfallwiederherstellung geschützt ist

So stellen Sie eine vollständige Oracle-Datenbank in einer Windows-Umgebung wieder her:

  1. Verbinden Sie den Snapshot der Datenbanksicherung aus dem Sicherungs- und Notfallwiederherstellungsdienst wieder mit dem Oracle-Server, wie unter Oracle-Datenbank als Standard-Mount bereitstellen beschrieben.

  2. Legen Sie die Datenbankumgebung fest und starten Sie die Datenbank im Zustand „Nicht bereitgestellt“ mithilfe der Parameterdatei aus dem bereitgestellten Volume für die Sicherung und Notfallwiederherstellung (z. B. für ein bereitgestelltes Datenbankvolume auf E:):

    sqlplus / as sysdba
    sql> startup nomount pfile='E:\<sid>___backup.ora';
    
  3. Spfile aus Pfile erstellen:

    sql> create spfile='%ORACLE_HOME%\database\spfile<sid>.ora'
    from pfile='E:\<sid>___backup.ora';
    
  4. Starten Sie die Datenbank mit dem spfile im Status nomount:

    sql> shutdown immediate;
    sql> startup nomount;
    
  5. Stellen Sie die Kontrolldatei mit RMAN aus dem bereitgestellten Volume für die Sicherung und Notfallwiederherstellung wieder her:

    rman target /
    rman> restore controlfile from 'E:\cf-D_<sid>-id_<id>.ctl';
    
  6. Stellen Sie die Datenbank bereit:

    rman> alter database mount;
    
  7. Katalogisieren Sie die Datendatei und den Ordner mit den Archivdateien aus dem bereitgestellten Volume für die Sicherung und Notfallwiederherstellung in RMAN:

    rman> run
    {
    catalog start with 'E:\datafile' noprompt;
    catalog start with 'E:\archivelog' noprompt;
    }
    
  8. So stellen Sie die Datenbank wieder her:

    rman> run
    {
    restore database;
    recover database;
    }
    
  9. Öffnen Sie die Datenbank mit der Option zum Zurücksetzen des Protokolls:

    rman> alter database open resetlogs;
    

Oracle-Datenbanken in einer Windows-Umgebung manuell mit RMAN zu einem geplanten Sicherungspunkt mit Vorwärtswiederherstellung des mit Backup und Notfallwiederherstellung geschützten Archivelogs wiederherstellen

  1. Sie können das Image vom Quelldatenbankserver bereitstellen, um es wiederherzustellen. Verbinden Sie den Sicherungs-Snapshot aus dem Sicherungs- und Notfallwiederherstellungsdienst wieder mit dem Oracle-Server, wie unter Oracle-Datenbank als Standard-Mount bereitstellen beschrieben.

  2. Legen Sie die Datenbankumgebung fest und starten Sie die Datenbank im nicht bereitgestellten Zustand mithilfe der Parameterdatei aus dem bereitgestellten Volume für die Sicherung und Notfallwiederherstellung. In diesem Beispiel wird das Sicherungs-Image der Datenbank unter E:\ und das geschützte Archivprotokoll unter Z:\ bereitgestellt.

       sqlplus / as sysdba
    
       startup nomount pfile='E:\<sid>___backup.ora';
    
  3. Spfile aus Pfile erstellen:

    sql> create spfile='%ORACLE_HOME%\database\spfile<sid>.ora' from
    pfile='E:\<sid>___backup.ora';
    
  4. Starten Sie die Datenbank mit dem spfile im Status „nomount“:

    ```sql
    shutdown immediate;
    startup nomount;
    ```
    
  5. Stellen Sie die Kontrolldatei mit RMAN aus dem bereitgestellten Archiv-Log-Image für die Sicherung und Notfallwiederherstellung wieder her:

    ```rman
    rman target /
    rman> restore controlfile from 'Z:\cf-D_<sid>-id_<id>.ctl';
    ```
    
  6. Stellen Sie die Datenbank bereit:

    ```rman
    rman> alter database mount;
    ```
    
  7. Katalogisieren Sie den Datendatei- und Archivelog-Ordner aus dem bereitgestellten Datenbank- und Archivelog-Image von Sicherung und Notfallwiederherstellung in RMAN:

    ```rman
    rman> run
    {
    catalog start with 'E:\datafile' noprompt;
    catalog start with 'E:\archivelog' noprompt;
    catalog start with 'Z:\archivelog' noprompt;
    }
    ```
    
  8. So stellen Sie die Datenbank wieder her:

    ```rman
    rman> run
    {
    restore database;
    recover database;
    }
    ```
    

    Führen Sie für die Wiederherstellung zu einem bestimmten Zeitpunkt den Befehl „recover“ so aus:

    ```rman
    rman> run
     {
      restore database;
      recover database until time "to_date('<time stamp>','yyyymmddhh24mi')";
     }
     ```
    
  9. Öffnen Sie die Datenbank mit der Option zum Zurücksetzen des Protokolls:

    ```rman
    rman> alter database open resetlogs;
    ```
    

    Die Datenbank ist für Lese- und Schreibvorgänge verfügbar.

Script zum Überwachen der Bereitstellung von Datenbankvolumes

Wenn Sie eine anwendungsspezifische Bereitstellung erstellen, können Sie mit einem Überwachungsscript die Volumes anzeigen, die über „Sicherung und Notfallwiederherstellung“ bereitgestellt werden, und die laufenden Oracle-Prozesse. Anwendungsspezifische Bereitstellungen werden unter Oracle-Datenbank als virtuelle Anwendung bereitstellen beschrieben.

Wenn Sie eine anwendungsspezifische Bereitstellung ausführen, können Sie dieses Überwachungsskript verwenden. Der Speicherort des Scripts muss C:\Programme\Sicherung und Notfallwiederherstellung\scripts sein. Scripts, die auf Windows-Hosts ausgeführt werden, müssen .bat- oder .vbs-Dateien sein.

    ```Windows
    @echo off
    :loop
    echo. > watchtemp
    echo ------------------ >> watchtemp
    echo  Oracle Processes >> watchtemp
    echo ------------------ >> watchtemp
    tasklist /svc | findstr oracle >> watchtemp
    echo. >> watchtemp
    echo ------------------ >> watchtemp
    echo   Backup and DR Mounts >> watchtemp
    echo ------------------ >> watchtemp
    wmic volume get label, name | findstr Backup and DR >> watchtemp
    echo. >> watchtemp
    cls
    type watchtemp
    timeout 2 > null
    goto loop
    ```

Die Ausgabe sieht in etwa so aus:

    Oracle Processes
    ------------------
    oracle.exe                    1492 OracleServiceORCL
    oracle.exe                    3768 OracleServiceTestDB
    oracle.exe                     872 OracleServiceTestDB2
    ------------------
      Backup and DR Mounts
    ------------------
    Backup and DR-Backup-ORCL    D:\mount_1