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