Oracle Database/Datensicherung

Aus Mikiwiki
Zur Navigation springen Zur Suche springen

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;