Autonome RMAN Backups auf Disk

By | 6. Juli 2017

Manchmal kann es zweckmäßig sein, dass man neben der regulären RMAN Sicherung auf Tape (SBT), eine extra RMAN Sicherung auf Disk erzeugen möchte. Dafür kann es verschiedene Gründe geben. Vielleicht möchte man das Backup auf einen anderen Server kopieren, um dort einen Klon via RMAN DUPLICATE aus dem Backup zu erstellen (duplicate … backup location..). Vorstellbar ist auch, dass man ein Datenbankbackup für eine Langzeitarchivierung erzeugen und diese, abweichend von der eingestellten RMAN Retention Policy, auf einem anderen Datenträger aufbewahren möchte.

RMAN Backup

Eine Herausforderung ist dabei, RMAN das Backup auf Disk schreiben zu lassen, ohne, dass die bestehende RMAN Konfiguration verändert wird. Außerdem muss man dafür Sorge tragen, dass der Sicherungseintrag anschließend aus dem RMAN Catalog gelöscht wird, damit die Sicherung nicht versehentlich über die eingestellte RMAN Retention Policy durch nachfolgende Jobs wieder gelöscht oder sie für die Wiederherstellung der Datenbank genutzt wird.

Im diesem Artikel möchte ich zeigen, wie man dies mit einem geeigneten RMAN Script erreichen kann. In meinem angenommenen Szenario wird taglich eine Onlinesicherung auf Tape durchgeführt. Dazu wurde eine entsprechende persistente RMAN Channel Konfigurationen angelegt. Es wird keine RMAN Catalog Datenbank verwendet. Es soll eine zusätzliche RMAN Sicherung auf die lokale Platte in das Verzeichnis /u01/rman_backp geschrieben werden, um sie später zu Erstellung einer physikalischen Datenbankkopie auf einem zweiten Server nutzen zu können.

Beispiel RMAN Backup-Script

Die folgenden Befehle erzeugen eine zusätzliche und autonome Sicherung einer Oracle Datenbank auf Disk.

RMAN Aufruf:

rman target / cmdfile=rman_full_backup_disk.rman log=/u01/rman_bkp/rman_full_backup_disk_`date +"%d.%m.%Y"`.log

Anmerkung: Das RMAN Logfile sollte ebenfalls in das Sicherungsverzeichnis geschrieben und mit der Sicherung aufbewahrt werden, da es essentielle Informationen über die Sicherung enthält. Dies kann bei der Wiederherstellung nützlich sein, falls man z.B. das Controlfile oder Spfile aus einem konkreten Backuppiece wiederherstellen möchte.

 

RMAN Commandfile:  rman_full_backup_disk.rman

run {
allocate channel c1 device type disk format="/u01/rman_bkp/DB_FULL_%d_%T_%U";
sql 'alter system archive log current';
backup as compressed backupset tag=DB_FULL_DISK database current controlfile spfile plus archivelog;
}

list backup tag DB_FULL_DISK;
change backuppiece tag DB_FULL_DISK uncatalog;

Anmerkung: Für den Fall, dass neben den regulären Backups auch noch regelmäßig Archivelogsicherungen zwischenzeitlich eingeplant sind, so muss sichergestellt sein, dass diese nicht während der Disksicherung parallel laufen. Ansonsten kann es passieren, dass die Archivelogs, die man sichern möchte, bereits durch einen anderen Sicherungsjob gelöscht worden sind.

Tipp: Ich empfehle vor der Sicherung auf Disk noch eine reguläre Sicherung der Archivelogs auf Tape durchzuführen (mit anschließender Löschung der gesicherten Archive), um die Anzahl der Archivelogs im Disk-Backup auf das notwendige Minimum zu begrenzen. Archivelogs, die vor dem Disk-Backup erzeugt wurden, sind nicht relevant für die automome Sicherung.

Erläuterungen zum RMAN-Script

allocate channel c1 device type disk format="/u01/rman_bkp/DB_FULL_%d_%T_%U";

Hiermit wird festgelegt, dass die Sicherung, unabhängig von der bisherigen RMAN Konfiguration, auf Disk geschrieben wird. Außerdem wird ein Backupdateiformat gewählt, welches den Datenbanknamen und einen Zeitstempel enthält (%d, %T).

 

sql 'alter system archivelog current';

Dadurch wird sichergestellt, dass der Inhalt des aktuellen Redolog in ein Archivelog geschrieben wird, welches dann ebenfalls Bestandteil der Sicherung wird.

 

...as compressed backupset...

Die RMAN Basic Compression wird genutzt, folglich belegen die Sicherungsdateien wesentlich weniger Platz. Falls die Sicherung zuviel Last auf dem System erzeugt, sollte diese Option weggelassen werden.

 

tag=DB_FULL_DISK

Durch das Setzen eines Tags lässt sich die Sicherung eindeutig identifizieren. Dies vereinfacht das anschließende Deregistrieren der Sicherung.

 

... current controlfile spfile plus archivelogs;

Damit sich die Datenbank aus der Sicherung auch auf einem fremden Server wiederherstellen lässt, muß das Controlfile und das Spfile ebenfalls gesichert werden. Und da dies eine Onlinesicherung ist, müssen die Archivelogs ebenfalls Bestandteil der Sicherung sein.

 

list backup tag DB_FULL_DISK;

In das RMAN Logfile wird am Anschluß an die Sicherung eine Backupübersicht protokolliert.

 

change backuppiece tag DB_FULL_DISK uncatalog;

Der Befehl sorgt dafür, dass die Informationen zu der zuvor erstellen Sicherung aus dem RMAN Catalog (hier Controlfile) wieder gelöscht werden.

 

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.