DBAtlas · Atlas für Datenbankbetrieb

Oracle-Backup-Strategie und Automatisierung (RMAN + Data Pump)

OracleStufe: MittelDauer: 60–120 Min. (ohne Dauer des ersten Level 0)

Richtet für eine bestehende Datenbank ein dauerhaftes, automatisches Backup-Schema ein (die Wiederherstellung im Fehlerfall behandelt ein eigener Guide: "Restore und Recovery mit RMAN"): wöchentlich Level 0 + täglich Level 1 (oder täglich Full), häufige Archive-Log-Backups, FRA oder eigenes Verzeichnis, Retention, Komprimierung, Verschlüsselung, Block Change Tracking und Parallelität. Zusätzlich ein vollständiger expdp mit Wallet. Vollständige Skripte (Lock, Log, Fehlerprüfung, E-Mail) werden mit cron, systemd-Timer oder DBMS_SCHEDULER zeitgesteuert; wöchentliches RESTORE VALIDATE und Wartung inklusive. Getrennte Wege für Single Instance, Oracle Restart und RAC (FRA und Snapshot-Controlfile in ASM, Job läuft nur auf der ersten offenen Instanz); OL/RHEL 7.9–9. Optional: RMAN Recovery Catalog (CREATE CATALOG, REGISTER, Verbindung über Wallet, Backup des Catalogs selbst) und monatliche Restore-Übung (Job mit RESTORE … VALIDATE + PREVIEW, echter Restore auf einem Testserver).

Topologie: 1 Server (Single Instance oder Oracle Restart) oder RAC (2–8 Nodes)

Vor dem Start

  • Die Datenbank … ist offen und in /etc/oratab eingetragen; ORACLE_HOME ….… Die Datenbank ist in Clusterware registriert (srvctl config database -db …).…
  • Log-Modus und FRA-Einstellung der Datenbank sind bekannt. Ist ARCHIVELOG aus, ist für das Einschalten eine kurze Downtime (Neustart) eingeplant.
  • Genug Plattenplatz: etwa … GB für die FRA (…)…, etwa … GB für das Backup-Verzeichnis (…)……, etwa … GB für das Dump-Verzeichnis (…)…. Die Rechnung ist eine grobe Schätzung (Abschnitt Hinweise); der Backup-Platz muss von den Datenbankplatten getrennt sein.
  • cron (cronie) ist installiert und läuft. Die Jobs laufen über eine root gehörende Datei in /etc/cron.d als Benutzer oracle; PAM (/etc/security/access.conf) blockiert die cron-Jobs von oracle nicht.
  • Das Passwort des Betriebssystembenutzers oracle ist bekannt (für das DBMS_SCHEDULER-Credential), und $ORACLE_HOME/bin/jssu ist setuid root (root.sh wurde ausgeführt).
  • Der Server kann E-Mails versenden: Der lokale MTA (postfix) leitet an einen Relay-Server weiter, oder für mailx ist SMTP konfiguriert.
  • Ein TDE-Keystore ist konfiguriert und geöffnet (v$encryption_wallet → OPEN). Keystore-Passwort und Keystore-Backup liegen an einem sicheren Ort: Geht der Keystore verloren, lassen sich verschlüsselte Backups nicht mehr öffnen.
  • Lizenz passt: …Parallelität und Block Change Tracking gibt es in der Enterprise Edition…; …-Komprimierung erfordert die Advanced Compression Option……; Verschlüsselung von Plattenbackups erfordert die Advanced Security Option……; Data Pump COMPRESSION=ALL erfordert die Advanced Compression Option….…In Standard Edition 2 arbeitet RMAN mit einem Kanal; BASIC-Komprimierung ist verwendbar.…
  • Ein Ort für eine zweite Kopie der Backups steht fest: Band/MML, Object Storage oder ein anderer Server. Die einzige Kopie des Backups darf nicht auf demselben Server wie die Datenbank liegen.
  • OL/RHEL 7.9: für 19c unterstützt; Software wird mit yum installiert. Der Premier Support für OL7 endete im Juni 2024 (Extended Support läuft weiter), für RHEL 7 ist ein Extended-Life-Cycle-Support-Abonnement nötig. Bei neuen Installationen OL/RHEL 8–9 bevorzugen.
  • Die FRA liegt in einer ASM-Diskgruppe (…)… und alle Instanzen sehen dieselbe FRA; Archivziel ist für jede Instanz USE_DB_RECOVERY_FILE_DEST….

Phasen der Anleitung

  • Vorbereitung — Ist-Zustand und Größen messen · Backup-Verzeichnisse anlegen · FRA einrichten · ARCHIVELOG-Modus einschalten · ARCHIVELOG-Modus einschalten (srvctl) · cron und die cron-Berechtigung des Benutzers oracle vorbereiten …
  • Umgebungsdatei und RMAN-Konfiguration — Umgebungsdatei schreiben… (…)… · Block Change Tracking einschalten · RMAN-Konfigurationsdatei schreiben · RMAN-Einstellungen anwenden · control_file_record_keep_time passend zur Retention einstellen
  • Recovery Catalog (optional) — Catalog-Owner in der Catalog-Datenbank anlegen · TNS-Dateien für die Catalog-Verbindung schreiben · Catalog-Anmeldedaten zum Wallet hinzufügen · Catalog-Schema anlegen (CREATE CATALOG) · Datenbank im Catalog registrieren (REGISTER DATABASE) · Catalog-Datenbank sichern
  • RMAN-Befehlsdateien und Backup-Skript — Befehlsdatei für Level 0 schreiben · Befehlsdatei für Level 1 schreiben · Befehlsdatei für Archive Logs schreiben · Datei für wöchentliche Validierung und Wartung schreiben · Datei für die monatliche Restore-Übung schreiben · Backup-Skript schreiben …
  • Data-Pump-Benutzer und Wallet — Export-Benutzer und Directory-Objekt anlegen · Wallet anlegen und Anmeldedaten hinzufügen · Wallet auf die anderen Nodes kopieren · sqlnet.ora schreiben (nur für das Backup-Skript) · tnsnames.ora schreiben (nur für das Backup-Skript)… (…)… · Verbindung ohne Passwort testen
  • Erste Backups (manuelle Ausführung) — Erstes Level-0-Backup erstellen · Archive-Log-Backup testen · Level-1-Backup testen · Ersten Data-Pump-Export erstellen · Backups anhand der RMAN-Einträge prüfen
  • Zeitsteuerung: cron — cron-Datei schreiben · Rechte der cron-Datei setzen, alten crontab-Block entfernen · Manuell mit der cron-Umgebung testen · Prüfen, ob cron die Jobs ausführt
  • Zeitsteuerung: systemd-Timer — Service- und Timer-Dateien schreiben · Timer aktivieren
  • Zeitsteuerung: DBMS_SCHEDULER — Betriebssystem-Credential anlegen · Geplante Jobs anlegen · Einen Job sofort ausführen und testen
  • Wartung und Überwachung — Wöchentliche Validierung und Wartung einmal ausführen · Restore-Übung einmal ausführen · Überwachungsabfragen · Backups vom Server wegkopieren und Wiederherstellung testen · Echten Restore auf einem separaten Testserver durchführen · Backup-Historie im Catalog überwachen
Schritt-für-Schritt-Plan für Ihre Umgebung öffnen →