oracle-consulting.de

Oracle Recovery Manager - Backup und Restore

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

Überblick

Der Recovery Manager (RMAN) eignet 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 bietet RMAN eine Reihe von 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 Detection
  • Parallelisierung der I/O Operationen
  • automatischen Loggen aller Backup und Recovery Operationen
  • eingebautes Housekeeping

RMAN kann entweder 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 Folgenden 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.

SQL / PL/SQL
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:

SQL / PL/SQL
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:

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