Oracle RMAN Backup mit S3 in die eXirius Cloud sichern

Hintergrund und Motivation

Seit einigen Wochen bietet eXirius für seine Kunden den Secure online B@ckup-Dienst an. Dazu betreibt sie einen S3 Speicher in der Cloud, erreichbar über s3.exirius.de. Der hochverfügbare B@ckup-Server steht in einem deutschen Rechenzentrum, ISO 27001 zertifiziert. Wer die Sicherheit weiter erhöhen möchte, kann optional die Daten georedundant in einem anderen deutschen Rechenzentrum spiegeln lassen. In diesem Artikel zeige ich die einzelnen Schritte, die man für ein Oracle Backup in unsere Cloud mit Hilfe von RMAN machen muss. Der Test wurde in einer Dockerumgebung mit der Oracle 23c FREE durchgeführt. Das Image kann hier runtergeladen werden.

Schematische Darstellung der Einrichtung eines Oracle-RMAN-Backups mit S3 in der eXirius-Cloud

Die verwendete Software

S3 ist ein von Amazon entwickelter Objektspeicherdienst, der es Benutzern ermöglicht, eine unbegrenzte Anzahl von Objekten, wie z. B. Dateien und Daten, in sogenannten „Buckets“ zu speichern. Er wird über das HTTPS-Protokoll angesprochen.

Bei entsprechender Download-Geschwindigkeit des Internetzugangs kann ein Restore mit hoher Performance durchgeführt werden. Nutzt man das optionale Oracle Secure Backup Cloud Module, hat man die komplette Backupstrategie von einem Hersteller.

Die Vorgehensweise

Um ein Backup einzurichten, braucht man 

  • einen Access Key ID und Secret Access Key sowie einen Bucket (alles wird von eXirius bereitgestellt)
  • den OSB Installer (osbws_installer.jar) von Oracle. (Dieser wird ab Oracle 19c bei der Installation in Datei osbws_installer.zip in $ORACLE_HOME/lib abgelegt. Diese Datei muss man entpacken. Für ältere Versionen steht die Datei bei Oracle zum Download bereit.)

Nach dem Entpacken von osbws_installer.zip wird ein kleines Installationsprogramm namens „osbws_install.sh“ benötigt.

bash-4.4$ touch osbws_install.sh && chmod 755 osbws_install.sh && editor osbws_install.sh

Darin der folgende Inhalt:

#!/bin/bash
export AWSID=db-backup
export AWSKey=<Secret Key>
export AWSENDPOINT=s3.exirius.de

$ORACLE_HOME/jdk/bin/java -jar /opt/oracle/product/23c/dbhomeFree/lib/osbws_install.jar \
-AWSID ${AWSID} \
-AWSKey ${AWSKey} \
-awsEndpoint ${AWSENDPOINT} \
-awsPort 443 \
-useHttps \
-location "" \
-walletDir ${ORACLE_HOME}/dbs/osbws_wallet \
-libDir $ORACLE_HOME/lib \
"$@" 

Der Server benötigt für die Installation einen Internetzugang. Das Installationsprogramm lädt die Bibliothek entsprechend der Plattform herunter, auf der es ausgeführt wird. Außerdem werden die Bibliothekskonfigurationsdatei und das Oracle Wallet erstellt, in dem die S3-Anmeldeinformationen gespeichert sind.

bash-4.4$ ./osbws_install.sh 
Oracle Secure Backup Web Service Install Tool, build 23.3.0.0.0_2023-09-01
AWS credentials are valid.
Oracle Secure Backup Web Service wallet created in directory /opt/oracle/product/23c/dbhomeFree/dbs/osbws_wallet.
Oracle Secure Backup Web Service initialization file /opt/oracle/product/23c/dbhomeFree/dbs/osbwsFREE.ora created.
Downloading Oracle Secure Backup Web Service Software Library from Oracle Cloud Infrastructure.
Download complete.

Die Datei osbws<ORACLE_SID>.ora wird um den Bucket ergänzt.

OSB_WS_HOST=https://s3.exirius.de
OSB_WS_VIRTUAL_HOST=FALSE
OSB_WS_WALLET='location=file:/opt/oracle/product/23c/dbhomeFree/dbs/osbws_wallet CREDENTIAL_ALIAS=minio_aws'
OSB_WS_BUCKET=db-backup

Anschließend kann man schon den Oracle Recovery Manager konfigurieren.

bash-4.4$ rman target /

RMAN> CONFIGURE DEFAULT DEVICE TYPE TO 'SBT_TAPE';
new RMAN configuration parameters are successfully stored

RMAN > CONFIGURE CHANNEL DEVICE TYPE sbt PARMS 'SBT_LIBRARY=oracle.osbws,ENV=(OSB_WS_PFILE=/opt/oracle/product/23c/dbhomeFree/dbs/osbwsFREE.ora)';
new RMAN configuration parameters are successfully stored

Danach kann man ein Backup in die Cloud durchführen:

RMAN> backup tablespace users;
backup tablespace users;
Starting backup at 06-OCT-23
using target database control file instead of recovery catalog
allocated channel: ORA_SBT_TAPE_1
channel ORA_SBT_TAPE_1: SID=55 device type=SBT_TAPE
channel ORA_SBT_TAPE_1: Oracle Secure Backup Web Services Library VER 23.0.0.1
channel ORA_SBT_TAPE_1: starting full datafile backup set
channel ORA_SBT_TAPE_1: specifying datafile(s) in backup set
input datafile file number=00007 name=/opt/oracle/oradata/FREE/users01.dbf
channel ORA_SBT_TAPE_1: starting piece 1 at 06-OCT-23
channel ORA_SBT_TAPE_1: finished piece 1 at 06-OCT-23
piece handle=012882dq_1_1_1 tag=TAG20231006T103850 comment=API Version 2.0,MMS Version 23.0.0.1
channel ORA_SBT_TAPE_1: backup set complete, elapsed time: 00:00:04
Finished backup at 06-OCT-23

Starting Control File and SPFILE Autobackup at 06-OCT-23
piece handle=c-1418518649-20231006-00 comment=API Version 2.0,MMS Version 23.0.0.1
Finished Control File and SPFILE Autobackup at 06-OCT-23

Zur Sicherheit sollte man am Ende „osbws_install.sh“ löschen, da es den Sicherheitsschlüssel enthält.

Zusammenfassung

Die Einrichtung ist recht einfach. Die Daten sind beim Transport verschlüsselt und von überall aus erreichbar. Mit dem Oracle Secure Backup WebService kann auch das Backup selbst verschlüsselt werden, was sonst nur in der Enterprise Version möglich ist. Das Backup selbst ist Ransomware geschützt. Durch automatisieres Replizieren der Daten in 2 deutschen Rechenzentren ist die Ausfallsicherheit gewährleistet.

Oracle Secure Backup kostet pro Channel aktuell 3.500 Dollar zuzüglich jährliche Wartung, was im Vergleich zu andern Bandsicherungen günstig ist.

Alternativ kann man in einem zweistufigen Verfahren das primäre Backup on premise (z.B. im Dateisystem) ablegen und das sekundäre Backup über rclone ohne benötigte Lizenzen aufsetzen. Das Secure Cloud Modul kann auch on premise eingesetzt werden. Verschiedene Hersteller wie z.B. Purestorage bieten von sich aus einen S3 Speicher an, den wir dann alternativ einbinden können. Wer seine Daten in die Cloud legen möchte, aus Datenschutz- oder aus Kostengründen aber nicht zu Amazon Web Services gehen möchte, dem bieten wir eine Alternative.