Oracle Database/Datensicherung: Unterschied zwischen den Versionen

Aus Mikiwiki
Wechseln zu: Navigation, Suche
(Die Seite wurde neu angelegt: „== Backup - Überblick == Zweck: Ermöglichen der Wiederherstellung einer Datenbank nach einem Media-Fehler Unterscheidung nach: * Logische und physische Backup...“)
 
Zeile 56: Zeile 56:
 
* ALTER TABLESPACE ... END BACKUP
 
* ALTER TABLESPACE ... END BACKUP
  
== Recovery-Manager ==
+
== Oracle Recovery Manager / RMAN ==
  
 
Der <b>Oracle Recovery Manager / RMAN</b> ist ein Werkzeug zur Vereinfachung der Datensicherungs- und Wiederherstellungsaufgaben.
 
Der <b>Oracle Recovery Manager / RMAN</b> ist ein Werkzeug zur Vereinfachung der Datensicherungs- und Wiederherstellungsaufgaben.
* Kann von der Befehlszeile aufgerufen werden oder mit Hilfe einer GUI (nur verfügbar, wenn im Oracle Management Server)
+
* Aufruf von der Befehlszeile oder über eine grafische Oberfläche (nur im Oracle Managmenet Server verfügbar).
* Speichert Daten in einem Oracle-proprietären Format
+
* Speichert Daten in proprietärem Oracle-Format.
  
 
Vorteile
 
Vorteile
* Protokolliert alle Backup und Recovery-Operationen
+
* Protokolliert alle Datensicherungs- und Wiederherstellungs-Operationen
* Ermöglicht die automatisierte Ausführung von Sicherungen
+
* Ermöglicht die automatisierte Ausführung von Datensicherungen
 
* Kann defekte Blöcke identifizieren
 
* Kann defekte Blöcke identifizieren
 
* RMAN-Skripte sind betriebssystemunabhängig und können somit portiert werden
 
* RMAN-Skripte sind betriebssystemunabhängig und können somit portiert werden
Zeile 79: Zeile 79:
 
=== RMAN-Sitzung starten ===
 
=== RMAN-Sitzung starten ===
  
Beispiel:
+
RMAN-Sitzung starten:
  
 
  $ <b>rman target system/passwort@orcl</b>
 
  $ <b>rman target system/passwort@orcl</b>
 +
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).
  
Beispiel für Job-Befehl
+
RMAN> <b>shutdown immediate;</b>
 +
Kontrolldatei der Zieldatenbank wird anstelle des Recovery-Katalogs verwendet
 +
Datenbank geschlossen
 +
Datenbank nicht angeschlossen
 +
Oracle-Instance heruntergefahren
 +
RMAN> <b>startup mount;</b>
 +
 
 +
RMAN> <b>backup database;</b>
 +
 
 +
Die Sicherung wird ins Verzeichnis ...flash_recovery_area geschrieben.
 +
 
 +
Beispiel für Job-Befehl:
  
 
  RUN{
 
  RUN{
 
   ALLOCATE CHANNEL c1 TYPE DISK;
 
   ALLOCATE CHANNEL c1 TYPE DISK;
 
   BACKUP
 
   BACKUP
   FORMAT 'D:\prog\oracle\oradata\ora01\backup01.dbf‘
+
   FORMAT 'd:\prog\oracle\oradataßora01\backup_1.dbf'
   (TABLESPACE userdata);
+
   (TABLESPACE userdata);}
  }
+
 
 +
Sichern des Tablespace "users" ins vorhandene Verzeichnis "c:\backup-heiss".
 +
 
 +
RMAN <b>backup format 'd:\backup-heiss\users%t.bkp' (tablespace users);</b>
  
 
=== RMAN-Backups ===
 
=== RMAN-Backups ===
Zeile 137: Zeile 159:
 
* RECOVER DATABASE
 
* RECOVER DATABASE
 
* ALTER DATABASE OPEN
 
* 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> <b>shutdown immediate;</b>
 +
RMAN> <b>startup mount;</b>
 +
RMAN> <b>run{</b>
 +
2> <b>set until scn 828232;</b>
 +
3> <b>restore database;</b>
 +
4> <b>recover database;</b>
 +
5> <b>alter database open resetlogs;</b>
 +
6> <b>}</b>
  
 
=== Unvollständige Wiederherstellung mit RMAN ===
 
=== Unvollständige Wiederherstellung mit RMAN ===

Version vom 25. Juni 2010, 11:46 Uhr

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;