Oracle Database/Datensicherung
Backup - Überblick
Zweck: Ermöglichen der Wiederherstellung einer Datenbank nach einem Media-Fehler
Unterscheidung nach:
- Logische und physische Backups
- Heisse (online) und kalte (offline) Backups
Logischer Backup - Export
- Logische Kopie von Datenbankobjekten in eine Binärdatei
- Daten werden mit Hilfe von SQL gelesen
- Keine zeitpunktgenaue Wiederherstellung möglich, keine Verwendung archivierter Redo- Log-Dateien
- Struktur und Inhalt der Objekte werden gespeichert
- Daten werden in einer dump-Datei gespeichert
Kalte Backups
- Datenbank wird heruntergefahren, danach werden alle erforderlichen Dateien kopiert
- Benutzer haben keinen Zugang mehr zur Datenbank
- Datenbank muss nicht im ARCHIVELOG-Modus betrieben werden
Heisse Backups
- Werden ausgeführt, wenn die Datenbank geöffnet ist und im ARCHIVELOG-Modus läuft
- Einheit eines Online-Backups ist ein Tablespace
- Heisses Backup wird durch den Befehl "begin backup" eingeleitet und durch "end backup" beendet
Archivlog-Modus konfigurieren
- Instanz herunterfahren
- Datenbank mounten
- Archivlogmodus einstellen (ALTER DATABASE ARCHIVELOG)
- Datenbank öffnen
Vollständiges Datenbank-Backup
- Wird bei geschlossener Datenbank durchgeführt
- Einfache Ausführung
- Kaum Benutzereingriffe notwendig
- Datenbank herunterfahren
- Datendateien und Kontrolldateien mit Betriebssystembefehlen kopieren
- Datenbank hochfahren
Backup bei geöffneter Datenbank
- Hohe Datenverfügbarkeit
- Ausführbar auf Tablespace- und Datendatei-Ebene
- Keine Unterbrechung der Geschäftsabläufe
- Datenbank muß sich im Archivelog-Modus befinden
Backup eines Online-Tablespace ausführen
- ALTER TABLESPACE... BEGIN BACKUP
- Datendateien des Tablespace mit Betriebssystembefehl kopieren
- ALTER TABLESPACE ... END BACKUP
Oracle Recovery Manager / RMAN
Der Oracle Recovery Manager / RMAN ist ein Werkzeug zur Vereinfachung der Datensicherungs- und Wiederherstellungsaufgaben.
- Aufruf von der Befehlszeile oder über eine grafische Oberfläche (nur im Oracle Managmenet Server verfügbar).
- Speichert Daten in proprietärem Oracle-Format.
Vorteile
- Protokolliert alle Datensicherungs- und Wiederherstellungs-Operationen
- Ermöglicht die automatisierte Ausführung von Datensicherungen
- Kann defekte Blöcke identifizieren
- RMAN-Skripte sind betriebssystemunabhängig und können somit portiert werden
Interaktiver Modus
- bei Analysen verwenden
- regelmässige Verwendung vermeiden
Batch-Modus
- für automatisierte Jobs
- Bedienerfehler minimieren
- Log-Datei zum Empfang von Informationen konfigurieren
RMAN-Sitzung starten
RMAN-Sitzung starten:
$ rman target system/passwort@orcl Recovery Manager: Release 10.2.0.1.0 - Production on Fr Jun 25 09:32:35 2010 Copyright (c) 1982, 2005, Oracle. All rights reserved. Mit Ziel-Datenbank verbunden: LUNAR61 (DBID=117900773) RMAN>
Befehle wie startup, shutdown usw. sind hier möglich.
Vollständige kalte Sicherung mit RMAN. Dazu darf die Datenbank nicht vollständig heruntergefahren sein (Zustand muss MOUNT sein).
RMAN> shutdown immediate; Kontrolldatei der Zieldatenbank wird anstelle des Recovery-Katalogs verwendet Datenbank geschlossen Datenbank nicht angeschlossen Oracle-Instance heruntergefahren RMAN> startup mount;
RMAN> backup database;
Die Sicherung wird ins Verzeichnis ...flash_recovery_area geschrieben.
Beispiel für Job-Befehl:
RUN{ ALLOCATE CHANNEL c1 TYPE DISK; BACKUP FORMAT 'd:\prog\oracle\oradataßora01\backup_1.dbf' (TABLESPACE userdata);}
Sichern des Tablespace "users" ins vorhandene Verzeichnis "c:\backup-heiss".
RMAN backup format 'd:\backup-heiss\users%t.bkp' (tablespace users);
RMAN-Backups
- Das Recovery Manager-Backup ist ein serververwaltetes Backup
- Der RMAN führt Backups mit Hilfe von Sitzungen auf einem Oracle-Server durch
- Es können neben der gesamten Datenbank alle Dateien in einem Tablespace, ausgewählte Datendateien, Kontrolldateien oder archivierte Redo Log-Dateien gesichert werden
Backup bei geschlossener Datenbank: die Zieldatenbank muß gemountet sein
Backup bei geöffneter Datenbank: Tablespaces dürfen nicht in den Backup-Modus gesetzt werden
Backup-Piece
- Ein logisches Backup-Set umfasst normalerweise nur ein Backup-Piece
- Ein Backup-Piece ist eine physische Datei, die ein oder mehrere physische Dateien enthalten kann
- Ein Backup-Piece kann Blöcke aus mehreren Datendateien enthalten
Media-Recovery
Das Media Recovery dient der Wiederherstellung verloren gegangener oder beschädigter Dateien und muss ausdrücklich aufgerufen werden.
Funktionsweise:
- Dateien werden von Backups zurückgeschrieben
- zurückgeschriebene Dateien werden anhand archivierter Redo Log-Dateien aktualisiert
Vollständige Wiederherstellung
- Beschädigte oder fehlende Dateien werden von einem Backup zurückgeschrieben
- Falls erforderlich, werden Änderungen aus den archivierten Redo Log-Dateien angewendet
- Mit Hilfe der Undo-Blöcke wird ein Rollback der nicht festgeschriebenen Änderungen durchgeführt
Vollständige Wiederherstellung einer geschlossenen Datenbank im ARCHIVELOG-Modus
- Datenbank herunterfahren
- Datei(en) von Backup zurückschreiben
- Datenbank im Mount-Modus hochfahren
- Wiederherstellung durchführen mit RECOVER DATABASE
- Datenbank öffnen
Vollständige Wiederherstellung mit dem RMAN
RMAN starten und folgende Befehle absetzen:
- STARTUP MOUNT
- RESTORE DATABASE
- RECOVER DATABASE
- ALTER DATABASE OPEN
Beispiel:
insert into kunde values (...); commit; select current_scn from v$database; insert into kunde values (...); commit;
Als Skript auszuführen:
RMAN> shutdown immediate; RMAN> startup mount; RMAN> run{ 2> set until scn 828232; 3> restore database; 4> recover database; 5> alter database open resetlogs; 6> }
Unvollständige Wiederherstellung mit RMAN
- Datenbank mounten
- Datendateien zurückschreiben
- Wiederherstellung der Datenbank unter Verwendung von UNTIL TIME oder UNTIL SCN
- Öffnen der Datenbank unter Verwendung von RESETLOGS
Befehl LIST
Zeigt die Inhalte des RMAN-Repositories an
Beispiele:
LIST BACKUP; LIST EXPIRED BACKUP; LIST BACKUP BY FILE; LIST EXPIRED BACKUP BY FILE; LIST BACKUP OF TABLESPACE USER01; LIST BACKUP OF DATABSE; LIST BACKUP OF TABLESPACE “users“ LIST COPY OF TABLESPACE “users“
Befehl REPORT
- Welche Dateien benötigen ein Backup?
- Welche Backups sind alt und können gelöscht werden?
- Daten werden so angezeigt, wie im Repository vermerkt
Welche Datendateien benötigen ein Backup?
REPORT NEED BACKUP;
Welche Datendateien von USER01 benötigen ein Backup?
REPORT NEED BACKUP DAYS = 30 TABLESPACE USER01;
Welche Backups werden nicht mehr benötigt?
REPORT OBSOLETE;
Welche Backups sind älter als 7 Tage?
REPORT OBSOLETE RECOVERY WINDOW OF 7 DAYS;
Welche Backups sind doppelt redundant?
REPORT OBSOLETE REDUNDANCY = 2
Befehl DELETE
Löscht alle nicht mehr benötigten Datensicherungen.
DELETE OBSOLETE;
Flashback Query
- erlaubt die konsistente Abfrage eines Datenbestandes zu verschiedenen Zeitpunkten
- Before-Images werden im UNDO-Tablespace abgespeichert
- Wie weit die Werte in die Vergangenheit reichen hängt vom Parameter UNDO_RETENTION ab
- Abfragen eines alten Wertes:
SELECT * FROM dept AS OF TIMESTAMP to_timestamp('02-03-2004 07:00:00','dd-mm-yyyy hh24:mi:ss');
- Versionen eines Zeitraums und die erfolgten Operationen können abgefragt werden:
SELECT deptno, dname, loc, versions_operation, versions_xid, versions_starttimeFROM scott.dept VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE ORDER BY deptno, versions_starttime;
Tabelle kann auf bestimmten Zeitpunkt zurückgesetzt werden:
FLASHBACK TABLE dept TO TIMESTAMP to_timestamp('02.03.2004 09:30');
Tabellen lassen sich wieder zurückholen mit Until Drop:
FLASHBACK TABLE dept to BEFORE DROP;
Flashback Database
- Gesamte Datenbank wird in einen historischen Zustand zurückgefahren
- Lässt sich nicht auf einzelne Benutzer beschränken
- Datenbank muss im Archivelog-Modus betrieben werden
Konfiguration:
- Datenbank auf flashback on setzen:
- shutdown immediate;
- startup mount;
- alter database flashback on;
- alter database open;
Beispiel:
- Herunterfahren der Datenbank
SHUTDOWN IMMEDIATE;
- Hochfahren in den Mount Modus
STARTUP MOUNT;
- Flashback absetzen
FLASHBACK DATABASE TO TIMESTAMP to_timestamp ('02.03.2004 09:30:00');
- Datenbank öffnen
ALTER DATABASE OPEN RESETLOGS;