Oracle Recovery Manager - Backup und Restore


Oracle bietet mir RMAN ein zuverlässiges und praktikables Tool für Backup, Restore und Recovery von Oracle Datenbanken. Durch gute Scripting-Eigenschaften eigent sich RMAN sehr gut für die Automatisierung


Überblick

Der Recovery Manager (RMAN) eigent sich für den Einsatz in allen Backup und Recovery-Szenarien. Trotz der relativ einfachen Konfiguration und den guten Scriptingmöglichkeiten wird RMAN von einigen DBA's nur zögerlich eingesetzt. Dabei beitet RMAN bietet eine Reihe vom Vorteilen

  • Inkrementelle Backups
  • Tablespaces müssen nicht in 'Backup' Mode gesetzt werden, es wird kein zusätzlicher Redo während des Backups erzeugt
  • Block Corruption Dtection
  • Parallelisierung der I/O Operationen
  • automatischen Loggen aller Backup und Recovery Operationen
  • eingebautes Hosekeeping

RMAN kann enweder mit einer Catalog-DB (separate Oracle DB) als Repository genutzt werden oder es schreibt die Repository Informationen in den lokalen Control-File der Instanz. Um RMAN nutzen zu können muss die DB im Archive Log Mode laufen und es sollten keine Nolog-Operationen ausgeführt werden. Im folgende soll ein Beispiel für Backup und Recovery mit lokaler Repository Information betrachtet werden

Beispiel eines Full Backups

Im ersten Schritt werden die notwendigen RMAN Scripte erstellt. In diesem Fall soll der auf der Maschine entstehende Load minimiert werden und das Backup auf bis zu 2 h 'gestreckt' werden. Wichtig ist, das die Backup-Location auf physikalisch anderen Disks bzw auf physikalisch anderen Servern liegt.

run {
   allocate channel d1 type disk;
   CONFIGURE COMPRESSION ALGORITHM 'BASIC';
   CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 3 DAYS;
   CONFIGURE CONTROLFILE AUTOBACKUP ON;
   CONFIGURE BACKUP OPTIMIZATION ON;


   crosscheck backup;
   crosscheck archivelog all;
   delete noprompt force obsolete;
   delete noprompt force expired backup;
   delete noprompt force expired archivelog all;
   configure controlfile autobackup format for device type disk to '/data/oracle/rman_backup/SID/autobackup_controlfile_%d_%F_ctl.bus';

   backup DURATION 2:00 MINIMIZE LOAD full database INCLUDE CURRENT CONTROLFILE  format '/data/oracle/rman_backup/SID/rman_%n_%T_%s_%p.bus';
   backup  CURRENT CONTROLFILE  for standby format '/data/oracle/rman_backup/SID/rman_controlfile_%n_%T_%s_%p.bus';

}

Das RMAN-Script wird dann über ein Shell-Script via Cron eingebunden:

rman nocatalog target / cmdfile='/data/oracle/rman_backup/backup_full.rman' log='/data/oracle/rman_backup/log/rman.log'

Beispiel für Archive Log Backup

Die entstehenden Archive Logs müssen zum Schutz vor physikalischen Ausfällen ebenfalls regelmößig gesichert werden:

run {
   allocate channel d1 type disk;
   backup ARCHIVELOG ALL format '/data/oracle/rman_backup/orapp/arch_%n_%T_%s_%p.bus';
}