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 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
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>
Wechseln Sie zum Benutzer root:
sudo su -
Fügen Sie den Benutzer
oracle
in der Datei /etc/sudoers hinzu:echo "oracle ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
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
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 desoracle
-Benutzers hinzufügen, indem Sie den folgenden Befehl ausführen:echo "export ORACLE_SID=test" >> ~oracle/.bashrc
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
Erstellen Sie den Speicherort für den Bereich für die schnelle Wiederherstellung:
mkdir /u02/fast_recovery_area
Stellen Sie eine Verbindung mit der Datenbank her:
sqlplus / as sysdba
Starten Sie die Datenbank, sofern sie noch nicht ausgeführt wird:
SQL> startup
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;
Vergewissern Sie sich, 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;
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:
- Einrichten von Azure Files
- Einbinden der Azure-Dateifreigabe auf Ihrer VM
- Sichern Sie die Datenbank.
- 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:
Wählen Sie im Azure-Portal die Option + Ressource erstellen aus. Suchen Sie nach Speicherkonto, und wählen Sie diese Option aus.
Im Bereich Speicherkonto erstellen:
- Wählen Sie bei Ressourcengruppe die vorhandene Ressourcengruppe rg-oracle aus.
- Geben Sie unter Name des Speicherkontos den Namen oracbkup1 ein.
- Stellen Sie sicher, dass der Standort auf die Region aller anderen Ressourcen in der Ressourcengruppe festgelegt ist.
- Setzen Sie den Wert Leistung auf Standard.
- Wählen Sie für Kontoart den Wert StorageV2 (general purpose v2) aus.
- Wählen Sie für Replikation die Option Lokal redundanter Speicher (LRS) aus.
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).
Navigieren Sie nach dem Erstellen des Speicherkontos zu der Ressource, und wählen Sie Dateifreigaben aus.
Wählen Sie + Dateifreigabe aus und dann im Bereich Neue Dateifreigabe:
Geben Sie unter Name den Namen orabkup1 ein.
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 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.
Wählen Sie unter Ebenen die Option Transaktionsoptimiert aus.
Wählen Sie Erstellen aus.
Wenn die Dateifreigabe erstellt wird, wählen Sie im Bereich Dateifreigabeeinstellungen die Option orabkup1 aus.
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.
Einbinden der Azure-Dateifreigabe auf Ihrer VM
Erstellen Sie den Bereitstellungspunkt:
sudo mkdir /mnt/orabackup
Richten Sie die Anmeldeinformationen ein:
if [ ! -d "/etc/smbcredentials" ]; then sudo mkdir /etc/smbcredentials fi
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
Ändern Sie die Berechtigungen für die Datei mit den Anmeldeinformationen:
sudo chmod 600 /etc/smbcredentials/orabackup1.cred
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'
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
Ü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.
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';
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;
Bestätigen Sie die Details der Konfigurationsänderung:
RMAN> show all;
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;
Sie haben 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 viele Vorteile. Die Sicherungs- und Wiederherstellungszeit ist mit der Größe der Datenbank verknüpft. Bei 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
Fahren Sie die Oracle-Instanz herunter:
sqlplus / as sysdba SQL> shutdown abort ORACLE instance shut down.
Entfernen Sie die Datenbankdatendateien:
cd /u02/oradata/TEST rm -f *.dbf
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;
Ü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