Oracle RMAN
Der Oracle Recovery Manager ist das Werkzeug, das Oracle zum Sichern und Wiederherstellen seiner Datenbank Oracle RDBMS verwendet. Zur Benutzung meldet man sich an der RMAN-Shell (analog sqlplus) der entsprechenden DB an.
rman user/password@database
Beispiel: automatisches controlfile-Backup einschalten und RMAN-Standard-Parameter anzeigen
root@server:/root # su - oracle 899 /oracle/bin : restore # rman target / Recovery Manager: Release 11.2.0.3.0 - Production on Thu Nov 28 18:49:16 2013 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. connected to target database: RESTORE (DBID=3006797119) RMAN> configure controlfile autobackup on; using target database control file instead of recovery catalog old RMAN configuration parameters: CONFIGURE CONTROLFILE AUTOBACKUP ON; new RMAN configuration parameters: CONFIGURE CONTROLFILE AUTOBACKUP ON; new RMAN configuration parameters are successfully stored RMAN> show all; RMAN configuration parameters for database with db_unique_name RESTORE are: CONFIGURE RETENTION POLICY TO NONE; ...
Konsistenz
Konsistenzcheck für Datenbank durchführen
run { allocate channel t1 type 'SBT_TAPE'; backup validate check logical database; release channel t1; }
Auflistung korrupter Blöcke
run { allocate channel t1 type 'SBT_TAPE'; blockrecover corruption list; release channel t1; }
Backup
Online Backup
Die Oracle Datenbank kann im laufenden Betrieb, also „online“ gesichert werden. Da die Datendateien bei dieser Art der Sicherung nicht konsistent sind, werden zusätzlich die Transaktionslogs benötigt, die von Beginn bis Ende der Sicherung angefallen sind.
- Vorteil: keine Downtime für Backup nötig
- Nachteil: für Restore ist zusätzlich Recover der Transaktionlogs nötig
RUN { ALLOCATE CHANNEL CH1 TYPE 'SBT_TAPE'; ALLOCATE CHANNEL CH2 TYPE 'SBT_TAPE'; BACKUP FULL FILESPERSET 1 FORMAT '%d_%U' DATABASE INCLUDE CURRENT CONTROLFILE PLUS ARCHIVELOG DELETE INPUT ; RELEASE CHANNEL CH1; RELEASE CHANNEL CH2; }
Archivelog Backup
Die Transaktionslogs werden i.d.R. mehrmals am Tag gesichert. Sie ermöglichen die Transaktions- oder zeitgenaue Wiederherstellung der DB.
RUN { configure controlfile autobackup on; ALLOCATE CHANNEL CH1 TYPE 'SBT_TAPE'; ALLOCATE CHANNEL CH2 TYPE 'SBT_TAPE'; BACKUP ARCHIVELOG ALL DELETE INPUT; RELEASE CHANNEL CH1; RELEASE CHANNEL CH2; }
Offline Backup
Beim Offline Backup wird die Datenbank zunächst gestoppt und dann wieder im mount-Status hochgefahren. Der Zugriff auf die DB ist damit unterbunden, es fallen keinen Logs an. Das Backup wird durchgeführt und die DB wieder gestartet.
- Vorteil: keine Logfiles beim Restore nötig, da Datendateien konsistent gesichert werden.
- Nachteil: Datenbank steht während des Backups nicht zur Verfügung.
RUN { ALLOCATE CHANNEL CH1 TYPE 'SBT_TAPE'; ALLOCATE CHANNEL CH2 TYPE 'SBT_TAPE'; shutdown immediate startup mount BACKUP FULL FILESPERSET 1 FORMAT '%d_%U' DATABASE INCLUDE CURRENT CONTROLFILE PLUS ARCHIVELOG DELETE INPUT ; sql "alter database open"; RELEASE CHANNEL CH1; RELEASE CHANNEL CH2; }
Restore/Recover
Restore/Recover auf letzten Stand
Das ist die einfachste Übung.
run { allocate channel t1 type 'SBT_TAPE'; allocate channel t2 type 'SBT_TAPE'; restore database; recover database; release channel t1; release channel t2; }
Restore/Recover auf letztmöglichen Stand
Wenn die Transaktionslogs eine Lücke aufweisen oder nicht bis zum letzten Stand vorhanden sind klappt das auch.
Bei jedem unvollständigem Recovery wird eine neue „incarnation“ gestartet! (Oracle Datenbanken kennen die Wiedergeburt und ein neuer Zeitstrahl weist den Weg in die Zukunft.)
run { allocate channel t1 type 'SBT_TAPE'; allocate channel t2 type 'SBT_TAPE'; restore database; recover database until cancel; alter database open resetlogs; release channel t1; release channel t2; }
Point in time Recovery (PITR)
Zurücksichern zu einem bestimmten Zeitpunkt – benötigt wird eine Datenbanksicherung inklusive Transaktionslogs bis zum gewünschten Restore-Zeitpunkt.
run { allocate channel t1 type 'SBT_TAPE'; allocate channel t2 type 'SBT_TAPE'; set until time "to_date('Aug 29 2013 09:00:00','Mon DD YYYY HH24:MI:SS')"; restore database; recover database; alter database open resetlogs; release channel t1; release channel t2; }
Incarnation
Es soll ein Restore/Recover auf eine frühere „incarnation“ durchgeführt werden. Deshalb zunächst incarnations anzeigen lassen und die passende wählen.
RMAN> list incarnation; List of Database Incarnations DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time ------- ------- -------- ---------------- --- ---------- ---------- 1 1 RESTORE 932694316 PARENT 1 19.07.12 14:25:48 2 2 RESTORE 932694316 PARENT 19920014424 03.12.12 15:25:58 3 3 RESTORE 932694316 PARENT 21417911938 31.01.13 20:33:51 5 5 RESTORE 932694316 CURRENT 23333063539 28.05.13 18:59:47 4 4 RESTORE 932694316 ORPHAN 23335379910 28.05.13 12:11:41 RMAN> reset database to incarnation 3; database reset to incarnation 3 RMAN>
Danach wird wie beim PITR verfahren.
Dump
Ein Dump ist eigentlich kein Backup, sondern ein Export der Tabellen in eine Textdatei in SQL-Syntax.
exp SYSTEM/password FULL=y FILE=Exportdatei.dmp GRANTS=y ROWS=y
EMC Networker / NMDA
Ich benutze zum Sichern von Oracle DBs die Backup Software Networker bzw. das „Networker module for databases“.
Beispiel: Installation Networker/NMDA auf AIX
installp -ac -d/networker/8.0.2.4/aix LGTOnw.clnt.rte installp -ac -d/networker/8.0.2.4/aix LGTOnw.man.rte /etc/rc.nsr start installp -ac -d/networker/nmda1.5.0.1/aix_64 LGTOnmda.rte su - oracle cd $ORACLE_HOME/lib ln -s /usr/lib/libnsrora.a libobk.a exit nsroraadmin -r list
Egal welche Backup Software man einsetzt – nach der installation muß die Media-Library libobk verlinkt werden.
Die Konfiguration des Backups läuft dann bei EMC über einen Wizard in der NMC (Networker Management Console).