Sichern und Wiederherstellen einer Oracle Database-Instanz auf einer Azure Linux-VM mit Azure Files

Gilt für: ✔️ Linux-VMs

Dieser Artikel veranschaulicht die Verwendung von Azure Files als Medium zum Sichern und Wiederherstellen einer Oracle-Datenbank, die auf einer Azure-VM ausgeführt wird. Die Schritte in diesem Artikel wurden für Oracle 12.1 und höher getestet.

In diesem Artikel verwenden Sie Oracle Recovery Manager (RMAN), um die Datenbank in einer Azure-Dateifreigabe zu sichern, die über das SMB-Protokoll (Server Message Block) in eine VM eingebunden ist. Die Verwendung von Azure Files als Sicherungsmedium ist kosteneffektiv und leistungsstark. Bei sehr umfangreichen Datenbanken ist Azure Backup jedoch die bessere Lösung.

Voraussetzungen

  • Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter Schnellstart für Bash in Azure Cloud Shell.

  • Wenn Sie CLI-Referenzbefehle lieber lokal ausführen, installieren Sie die Azure CLI. Wenn Sie Windows oder macOS ausführen, sollten Sie die Azure CLI in einem Docker-Container ausführen. Weitere Informationen finden Sie unter Ausführen der Azure CLI in einem Docker-Container.

    • Wenn Sie eine lokale Installation verwenden, melden Sie sich mithilfe des Befehls az login bei der Azure CLI an. Führen Sie die in Ihrem Terminal angezeigten Schritte aus, um den Authentifizierungsprozess abzuschließen. Informationen zu anderen Anmeldeoptionen finden Sie unter Anmelden mit der Azure CLI.

    • Installieren Sie die Azure CLI-Erweiterung beim ersten Einsatz, wenn Sie dazu aufgefordert werden. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden von Erweiterungen mit der Azure CLI.

    • Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um das Upgrade auf die aktuelle Version durchzuführen.

  • Sie müssen für den Sicherungs- und Wiederherstellungsprozess zuerst eine Linux-VM erstellen, auf der eine Instanz von Oracle Database installiert ist. Es wird empfohlen, mindestens Oracle 12.x zu verwenden.

  • Erstellen Sie eine Oracle-Datenbankinstanz, indem Sie den Schritten unter Erstellen einer Oracle-Datenbankinstanz auf einer Azure-VM folgen.

Vorbereiten der Datenbankumgebung

  1. Erstellen Sie mit dem folgenden Befehl eine SSH-Sitzung (Secure Shell) mit dem virtuellen Computer. Ersetzen Sie <publicIpAddress> durch die öffentliche Adresse Ihrer VM.

    ssh azureuser@<publicIpAddress>
    
  2. Wechseln Sie zum Benutzer root:

    sudo su -
    
  3. Fügen Sie den Benutzer oracle in der Datei /etc/sudoers hinzu:

    echo "oracle   ALL=(ALL)      NOPASSWD: ALL" >> /etc/sudoers
    
  4. Dieser Schritt setzt voraus, dass Sie über eine Oracle-Instanz (Test) verfügen, die auf der VM vmoracle19c ausgeführt wird.

    Wechseln Sie zum Benutzer oracle:

    sudo su - oracle
    
  5. Bevor Sie eine Verbindung herstellen, legen Sie die Umgebungsvariable ORACLE_SID fest:

    export ORACLE_SID=test;
    

    Sie sollten die Variable ORACLE_SID außerdem für zukünftige Anmeldungen der BASHRC-Datei des oracle-Benutzers hinzufügen, indem Sie den folgenden Befehl ausführen:

    echo "export ORACLE_SID=test" >> ~oracle/.bashrc
    
  6. Starten Sie den Oracle-Listener, sofern er noch nicht ausgeführt wird:

    lsnrctl start
    

    Die Ausgabe sollte in etwa wie im folgenden Beispiel aussehen:

    LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 18-SEP-2020 03:23:49
    
    Copyright (c) 1991, 2019, Oracle.  All rights reserved.
    
    Starting /u01/app/oracle/product/19.0.0/dbhome_1/bin/tnslsnr: please wait...
    
    TNSLSNR for Linux: Version 19.0.0.0.0 - Production
    System parameter file is /u01/app/oracle/product/19.0.0/dbhome_1/network/admin/listener.ora
    Log messages written to /u01/app/oracle/diag/tnslsnr/vmoracle19c/listener/alert/log.xml
    Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=vmoracle19c.eastus.cloudapp.azure.com)(PORT=1521)))
    Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
    
    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=vmoracle19c.eastus.cloudapp.azure.com)(PORT=1521)))
    STATUS of the LISTENER
    ------------------------
    Alias                     LISTENER
    Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
    Start Date                18-SEP-2020 03:23:49
    Uptime                    0 days 0 hr. 0 min. 0 sec
    Trace Level               off
    Security                  ON: Local OS Authentication
    SNMP                      OFF
    Listener Parameter File   /u01/app/oracle/product/19.0.0/dbhome_1/network/admin/listener.ora
    Listener Log File         /u01/app/oracle/diag/tnslsnr/vmoracle19c/listener/alert/log.xml
    Listening Endpoints Summary...
     (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=vmoracle19c.eastus.cloudapp.azure.com)(PORT=1521)))
    (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
    The listener supports no services
    The command completed successfully
    
  7. Erstellen Sie den Speicherort für den Bereich für die schnelle Wiederherstellung:

    mkdir /u02/fast_recovery_area
    
  8. Stellen Sie eine Verbindung mit der Datenbank her:

    sqlplus / as sysdba
    
  9. Starten Sie die Datenbank, sofern sie noch nicht ausgeführt wird:

    SQL> startup
    
  10. Legen Sie die Umgebungsvariablen der Datenbank für den Bereich für die schnelle Wiederherstellung fest:

    SQL> alter system set db_recovery_file_dest_size=4096M scope=both;
    SQL> alter system set db_recovery_file_dest='/u02/fast_recovery_area' scope=both;
    
  11. Stellen Sie sicher, dass sich die Datenbank im ARCHIVELOG-Modus befindet, um Onlinesicherungen zu ermöglichen.

    Überprüfen Sie den Protokollarchivstatus:

    SQL> SELECT log_mode FROM v$database;
    
    LOG_MODE
    ------------
    NOARCHIVELOG
    

    Wenn sich das Protokollarchiv im NOARCHIVELOG-Modus befindet, führen Sie die folgenden Befehle in SQL Plus aus:

    SQL> SHUTDOWN IMMEDIATE;
    SQL> STARTUP MOUNT;
    SQL> ALTER DATABASE ARCHIVELOG;
    SQL> ALTER DATABASE OPEN;
    SQL> ALTER SYSTEM SWITCH LOGFILE;
    
  12. Erstellen Sie eine Tabelle zum Testen der Sicherungs- und Wiederherstellungsvorgänge:

    SQL> create user scott identified by tiger quota 100M on users;
    SQL> grant create session, create table to scott;
    SQL> connect scott/tiger
    SQL> create table scott_table(col1 number, col2 varchar2(50));
    SQL> insert into scott_table VALUES(1,'Line 1');
    SQL> commit;
    SQL> quit
    

Sicherung in Azure Files

Führen Sie für die Sicherung in Azure Files die folgenden Schritte aus:

  1. Einrichten von Azure Files
  2. Einbinden der Azure-Dateifreigabe auf Ihrer VM
  3. Sichern Sie die Datenbank.
  4. Wiederherstellen der Datenbank

Einrichten von Azure Files

In diesem Abschnitt sichern Sie die Oracle-Datenbank mithilfe von Oracle RMAN in Azure Files. Azure-Dateifreigaben sind vollständig verwaltete Dateifreigaben, die in der Cloud bleiben. Sie können auf sie zugreifen, indem Sie entweder das SMB-Protokoll oder das NFS-Protokoll (Network File System) verwenden.

In den folgenden Verfahren wird eine Dateifreigabe erstellt, die über das SMB-Protokoll auf der VM eingebunden wird. Informationen zum Einbinden mit NFS finden Sie unter Erstellen einer NFS-Freigabe.

Deaktivieren Sie beim Einbinden der Azure-Dateifreigabe mit der Option cache=none das Zwischenspeichern von Dateifreigabedaten. Um sicherzustellen, dass die*der oracle-Benutzer*in die*der Besitzer*in der in der Freigabe erstellten Dateien ist, legen Sie die Optionen uid=oracle und gid=oinstall fest.

Richten Sie das Speicherkonto ein:

  1. Wählen Sie im Azure-Portal die Option + Ressource erstellen aus. Suchen Sie nach Speicherkonto, und wählen Sie diese Option aus.

    Screenshot, der zeigt, wo Sie eine Ressource erstellen und ein Speicherkonto auswählen

  2. Im Bereich Speicherkonto erstellen:

    1. Wählen Sie bei Ressourcengruppe die vorhandene Ressourcengruppe rg-oracle aus.
    2. Geben Sie unter Name des Speicherkontos den Namen oracbkup1 ein.
    3. Stellen Sie sicher, dass der Standort auf die Region aller anderen Ressourcen in der Ressourcengruppe festgelegt ist.
    4. Setzen Sie den Wert Leistung auf Standard.
    5. Wählen Sie für Kontoart den Wert StorageV2 (general purpose v2) aus.
    6. Wählen Sie für Replikation die Option Lokal redundanter Speicher (LRS) aus.

    Screenshot mit den grundlegenden Informationen zur Erstellung eines Speicherkontos.

  3. Wählen Sie die Registerkarte Erweitert aus, und legen Sie unter Azure Files die Einstellung Große Dateifreigaben auf Aktiviert fest. Klicken Sie auf Review + Create (Überprüfen und erstellen) und dann auf Create (Erstellen).

    Screenshot: Registerkarte zur Aktivierung großer Dateifreigaben

  4. Navigieren Sie nach dem Erstellen des Speicherkontos zu der Ressource, und wählen Sie Dateifreigaben aus.

    Screenshot, der zeigt, wo Sie die Dateifreigaben für eine Ressource auswählen können

  5. Wählen Sie + Dateifreigabe aus und dann im Bereich Neue Dateifreigabe:

    1. Geben Sie unter Name den Namen orabkup1 ein.

    2. Legen Sie Kontingent auf 10240 Gibibytes (GiB) fest.

      Das Kontingent gibt die Obergrenze an, bis zu der die Dateifreigabe erweitert werden kann. Da Sie in diesem Beispiel Standardspeicher verwenden, gilt für Ressourcen nutzungsbasierte Bezahlung, und sie werden nicht bereitgestellt. Wenn Sie das Kontingent auf 10 Tebibytes (TiB) festlegen, fallen also keine Kosten an, die über Ihre Verwendung hinausgehen. Wenn Ihre Sicherungsstrategie mehr Speicher erfordert, legen Sie das Kontingent auf eine entsprechende Ebene fest, um alle Sicherungen speichern zu können.

    3. Wählen Sie unter Ebenen die Option Transaktionsoptimiert aus.

    4. Wählen Sie Erstellen aus.

    Screenshot: Auswahlmöglichkeiten für das Hinzufügen einer neuen Dateifreigabe

  6. Wenn die Dateifreigabe erstellt wird, wählen Sie im Bereich Dateifreigabeeinstellungen die Option orabkup1 aus.

  7. Wählen Sie die Registerkarte Verbinden aus, um den Bereich Verbinden zu öffnen, und wählen Sie dann die Registerkarte Linux aus. Kopieren Sie die angegebenen Befehle zum Einbinden der Dateifreigabe über das SMB-Protokoll.

    Screenshot: Bereich für den Zugriff auf die Befehle zum Verbinden einer Dateifreigabe mit einem Linux-Computer

Einbinden der Azure-Dateifreigabe auf Ihrer VM

  1. Erstellen Sie den Bereitstellungspunkt:

    sudo mkdir /mnt/orabackup
    
  2. Richten Sie die Anmeldeinformationen ein:

    if [ ! -d "/etc/smbcredentials" ]; then
     sudo mkdir /etc/smbcredentials
    fi
    
  3. Führen Sie den folgenden Befehl aus. Ersetzen Sie <Your Storage Account Key1> durch den Speicherkontoschlüssel, den Sie zuvor abgerufen haben.

    if [ ! -f "/etc/smbcredentials/orabackup1.cred" ]; then
      sudo bash -c 'echo "username=orabackup1" >> /etc/smbcredentials/orabackup1.cred'
      sudo bash -c 'echo "password=<Your Storage Account Key1>" >> /etc/smbcredentials/orabackup1.cred'
    fi
    
  4. Ändern Sie die Berechtigungen für die Datei mit den Anmeldeinformationen:

    sudo chmod 600 /etc/smbcredentials/orabackup1.cred
    
  5. Fügen Sie die Bereitstellung der Datei /etc/fstab hinzu:

    sudo bash -c 'echo "//orabackup1.file.core.windows.net/orabackup /mnt/orabackup cifs nofail,vers=3.0,credentials=/etc/smbcredentials/orabackup1.cred,dir_mode=0777,file_mode=0777,serverino,cache=none,uid=oracle,gid=oinstall" >> /etc/fstab'
    
  6. Führen Sie die Befehle aus, um die Azure-Dateifreigabe über das SMB-Protokoll einzubinden:

    sudo mount -t cifs //orabackup1.file.core.windows.net/orabackup /mnt/orabackup -o vers=3.0,credentials=/etc/smbcredentials/orabackup1.cred,dir_mode=0777,file_mode=0777,serverino,cache=none,uid=oracle,gid=oinstall
    

    Wenn Sie eine Fehlermeldung ähnlich der folgenden erhalten, ist das CIFS-Paket (Common Internet File System) möglicherweise nicht auf Ihrem Linux-Host installiert:

    mount: wrong fs type, bad option, bad superblock on //orabackup1.file.core.windows.net/orabackup
    

    Führen Sie den folgenden Befehl aus, um zu überprüfen, ob das CIFS-Paket installiert ist:

    sudo rpm -qa|grep cifs-utils
    

    Wenn der Befehl keine Ausgabe zurückgibt, installieren Sie das CIFS-Paket mit dem folgenden Befehl. Führen Sie dann den mount-Befehl erneut aus, um die Azure-Dateifreigabe einzubinden.

    sudo yum install cifs-utils
    
  7. Überprüfen Sie mit dem folgenden Befehl, ob die Dateifreigabe ordnungsgemäß eingebunden ist:

    df -h
    

    Die Ausgabe sollte in etwa wie das folgende Beispiel aussehen:

    $ df -h
    Filesystem                                    Size  Used Avail Use% Mounted on
    devtmpfs                                      3.3G     0  3.3G   0% /dev
    tmpfs                                         3.3G     0  3.3G   0% /dev/shm
    tmpfs                                         3.3G   17M  3.3G   1% /run
    tmpfs                                         3.3G     0  3.3G   0% /sys/fs/cgroup
    /dev/sda2                                      30G  9.1G   19G  34% /
    /dev/sdc1                                      59G  2.7G   53G   5% /u02
    /dev/sda1                                     497M  199M  298M  41% /boot
    /dev/sda15                                    495M  9.7M  486M   2% /boot/efi
    tmpfs                                         671M     0  671M   0% /run/user/54321
    /dev/sdb1                                      14G  2.1G   11G  16% /mnt/resource
    tmpfs                                         671M     0  671M   0% /run/user/54322
    //orabackup1.file.core.windows.net/orabackup   10T     0   10T   0% /mnt/orabackup
    

Sichern der Datenbank

In diesem Abschnitt verwenden Sie Oracle RMAN, um eine vollständige Sicherung der Datenbank und der Archivprotokolle zu erstellen. Anschließend schreiben Sie die Sicherung als Sicherungssatz in die zuvor eingebundene Azure-Dateifreigabe.

  1. Konfigurieren Sie RMAN für die Sicherung in den Azure Files-Bereitstellungspunkt:

    rman target /
    RMAN> configure snapshot controlfile name to '/mnt/orabkup/snapcf_ev.f';
    RMAN> configure channel 1 device type disk format '/mnt/orabkup/%d/Full_%d_%U_%T_%s';
    RMAN> configure channel 2 device type disk format '/mnt/orabkup/%d/Full_%d_%U_%T_%s';
    
  2. In diesem Beispiel beschränken wir die Größe der RMAN-Sicherung auf 4 GiB. Der maxpiecesize-Wert der RMAN-Sicherung kann jedoch bis zu 4 TiB erreichen, was der Dateigrößenbegrenzung für Azure-Standarddateifreigaben und Premium-Dateifreigaben entspricht. Weitere Informationen finden Sie unter Skalierbarkeits- und Leistungsziele für Azure Files.

    RMAN> configure channel device type disk maxpiecesize 4000G;
    
  3. Bestätigen Sie die Details der Konfigurationsänderung:

    RMAN> show all;
    
  4. Führen Sie die Sicherung aus. Mit dem folgenden Befehl wird eine vollständige Sicherung der Datenbank, einschließlich der Archivprotokolldateien, als Sicherungssatz im komprimierten Format erstellt:

    RMAN> backup as compressed backupset database plus archivelog;
    

Damit haben Sie die Datenbank mithilfe von Oracle RMAN online gesichert, wobei sich die Sicherung in Azure Files befindet. Da Sie die Sicherungen in Azure Files speichern, können Sie von anderen virtuellen Computern aus darauf zugreifen, wenn Sie die Datenbank klonen müssen.

Die Verwendung von RMAN und Azure Files für die Datenbanksicherung hat zwar viele Vorteile, aber die Sicherungs- und Wiederherstellungszeit hängt mit der Größe der Datenbank zusammen. Bei sehr großen Datenbanken können diese Vorgänge viel Zeit in Anspruch nehmen.

Eine Alternative besteht darin, anwendungskonsistente VM-Sicherungen über Azure Backup zu verwenden. Dieser Mechanismus verwendet die Momentaufnahmentechnologie, um schnelle Sicherungen unabhängig von der Datenbankgröße durchzuführen. Die Integration in einen Recovery Services-Tresor bietet Cloudspeicherung Ihrer Oracle Database-Sicherungen, sodass Sie von anderen VMs und anderen Azure-Regionen aus darauf zugreifen können.

Wiederherstellen der Datenbank

  1. Fahren Sie die Oracle-Instanz herunter:

    sqlplus / as sysdba
    SQL> shutdown abort
    ORACLE instance shut down.
    
  2. Entfernen Sie die Datenbankdatendateien:

    cd /u02/oradata/TEST
    rm -f *.dbf
    
  3. Bei den folgenden Befehlen wird RMAN verwendet, um die fehlenden Datendateien und die Datenbank wiederherzustellen:

    rman target /
    RMAN> startup mount;
    RMAN> restore database;
    RMAN> recover database;
    RMAN> alter database open;
    
  4. Überprüfen Sie, ob der Datenbankinhalt vollständig wiederhergestellt wurde:

    RMAN> SELECT * FROM scott.scott_table;
    

Die Sicherung und Wiederherstellung der Oracle Database 19c-Datenbank auf einer Azure-Linux-VM ist damit abgeschlossen.

Löschen der virtuellen Computer

Wenn Sie den virtuellen Computer nicht mehr benötigen, können Sie mit dem folgenden Befehl die Ressourcengruppe, den virtuellen Computer und alle zugehörigen Ressourcen entfernen:

az group delete --name rg-oracle

Nächste Schritte

Erstellen eines hoch verfügbaren virtuellen Computers

Erkunden der Azure CLI-Beispiele für die Bereitstellung virtueller Computer