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.
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';
}