Hochverfügbarkeit

Werbung
Ausgewählte Themen zur ORACLEDatenbankadministration in der Praxis
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 1
Leistungsspektrum der GISA GmbH
Zahlen und Fakten auf einem
Blick:
Geschäftsführer:
Michael Krüger
Dr. Bernd Tigges
Umsatz 2006: 64,3 Mio. €
Mitarbeiter 2007: 383
Gründungsjahr: 1993
Gesellschafter:
• envia Mitteldeutsche Energie AG
(64,9%)
• Stadtwerke Halle GmbH (25,1%)
• Mitteldeutsche Gasversorgung
GmbH (10 %)
Beteiligungen:
• ICS adminservice GmbH (100%)
• SASKIA Informationssysteme
GmbH (90%)
Mehr als Standard. Überzeugen Sie sich!
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 2
Kunden der GISA
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 3
Agenda
Oracle Datensicherung
Hochverfügbarkeit
Sichere Konfiguration von Oracle-Datenbanken
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 4
ORACLE Datensicherung
Grundlagen und Vorüberlegungen
Backup-Methoden
Sicherungsstrategie
Verwendung von OSL-Storagecluster
Einsatz von Oracle RMAN
ASM (Automatic Storage Management)
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 5
Grundlagen und Vorüberlegungen
Ziele der Datensicherung
 Hauptziel: „Keep the system running“
Schutz der Datenbank vor verschiedenen Fehlertypen
Mean-Time-Between-Failures (MTBF) erhöhen
Mean-Time-To –Recover (MTTR) vermindern
Datenverluste minimieren
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 6
Grundlagen und Vorüberlegungen
ORACLE Überblick (1)
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 7
Grundlagen und Vorüberlegungen
ORACLE Überblick (2)
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 8
Grundlagen und Vorüberlegungen
Konzept der Archive-Logs
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 9
Grundlagen und Vorüberlegungen
Fehlerkategorien (1)
 Anweisungsfehler (Statement Failure)
 Benutzer-Prozess-Fehler (User Process Failure)
 Benutzer-Fehler (User Error)
 Instanz-Fehler (Instance Failure)
 Media-Fehler (Media Failure)
 Netzwerk-Fehler (Network Failure)
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 10
Grundlagen und Vorüberlegungen
Fehlerkategorien (2)
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 11
Grundlagen und Vorüberlegungen
Tägliche Aufgaben
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 12
Grundlagen und Vorüberlegungen
Logische vs. Physikalische Datenstruktur
Logische Datenstruktur

Extent
Jedes Segment besteht aus einer Reihe von einem oder
mehreren Extents. Kommt ein Segment an seine
Kapazitätsgrenze, erzeugt die Datenbank einen neuen Extent.
Ein Extent ist die kleinste Einheit bei der Reservierung von
Speicherplatz

Segment
Reservierter Bereich für Tabellen.
Jede Tabelle besitzt genau 1 Daten-Segment und jeder Index
besitzt ein Index-Segment. Desweiteren gibt es
Rollbacksegmente und temporäre Segmente

Tablespace
Alle Segmente werden in Tablespaces zusammengefaßt. Ein
Tablespace ist die logische Einheit zur Speicherzuteilung. Ein
Tablespace umfaßt mindestens eine Datenbankdatei.

Datenbank
Eine Datenbank besteht aus einem oder mehreren
Tablespaces. Ein DBMS kann mehrere Datenbanken
(Instanzen) verwalten.
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 13
Physikalische Datenstruktur

Blöcke
Jede Datei besteht aus einer Anzahl von Oracle-Blöcken.
Jeder Oracle Block besteht aus einem oder mehreren
Plattenblöcken.

Datenbankdateien
In einer Datenbankdatei sind z.B. Tabellen der Datenbank
abgelegt.
Darüberhinaus gibt es Dateien mit speziellen Aufgaben (z.B.
Tracefile, Controlfile)
Backup-Methoden
Logische Sicherung
 Export der Datenbank ist ein „Schnappschuss“ des aktuellen Zustandes
 bei einer logischen Sicherung werden keine Dateien kopiert, sondern die Daten
aus der Datenbank ausgelesen und in einer speziellen binären DUMP-Datei
abgelegt
 für einen Export wird das Kommandozeilenprogramm exp benutzt
 das Programm kann sowohl interaktiv als auch mit Parametern gesteuert
werden. Zum Sichern einer gesamten Datenbank eignet sich z.B. die folgende
Vorgehensweise:
exp userid=system/manager file=full_export.dmp full=yes
rows=y consistent=yes
 der Datenbestand in der Export-Datei umfasst ausschliesslich die Daten zum
Zeitpunkt zu Beginn des Exports
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 14
Backup-Methoden
Physikalische Sicherung (Cold Backup)
 einfachstes Verfahren für Sicherung einer Datenbank
 nach Herunterfahren der Datenbank werden alle Dateien der
Tablespaces (ausser TEMP-Tablespace), Controlfiles, OnlineRedologs und weitere (z.B. INIT.ORA) kopiert
 Nachteil: Datenbank ist Offline
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 15
Backup-Methoden
Physikalische Sicherung (Hot Backup) - Überblick
 ARCHIVELOG-Modus wird verwendet, wenn es nicht akzeptabel
ist, Daten zu verlieren (z.B. Ausfall einer Festplatte)
 Controlfiles, Online-Redos und Archivelogs sollten gespiegelt
sein
 Unvollständiges Recovery möglich (PITR)
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 16
Backup-Methoden
Physikalische Sicherung (Hot Backup) - Schritte
1. Strukturen bestimmen:
aus Oracle die Liste aller Tablespaces und Datenfiles herausbekommen (v$datafile)
die Ablage der Archived Redologs herausfinden (z.B. v$archived_log, Parameter:
log_archive_dest)
den Speicherort der Controlfiles herausfinden (Parameter: control_files)
2. in einer Schleife Tablespaces in Backup-Modus bringen und Daten kopieren: jeden
Tablespace seriell:
in den Backup- Modus versetzen (alter tablespace [name] begin backup) und
die Daten an einen anderen Platz kopieren und
Backup-Modus für Tablespace wieder ausschalten (alter tablespace [name] end
backup).
3. Nacharbeiten (Sicherung zusätzlicher Dateien)
einen Switch der Online-Redologs auslösen (alter system switch logfile)
Controlfile mit dem Befehl sichern (alter database backup controlfile to …)
Controlfile kopieren
aktuelle Online-Redologs kopieren (v$logfile)
alle Archivelogs sichern, die bis zu diesem Backupvorgang nicht gesichert wurden
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 17
Backup-Methoden
Physikalische Sicherung (Hot Backup) – Ergebnis = Redundanz-Set
 den kompletten Satz aus Dateien, die man nach einem Oracle-Ausfall
besitzten sollte, nennt man ein Redundanz-Set
 ein Redundanz-Set besteht aus:
dem letzten Backup aller Datenbankdateien
allen archivierten Redologs nach dem letzten Backup
einer Kopie der Online Redologs
einer Kopie des aktuellen Controlfiles
den aktuellen Konfigurationsdateien wie Initialisierungsdatei (INIT.ORA),
eventuell auch LISTENER.ORA, SQLNET.ORA, und Exportdumps
 Speicherort des Redundanz-Set
auf Band sichern
mindestens eine Kopie auf der Platte behalten
wenn die Datenbank auf einem RAID-System sitzt, sollte das RedundanzSet nicht auf demselben RAID sitzen
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 18
Sicherungsstrategie
Überlegungen zur Sicherungshäufigkeit und der Backup-Methode
 Warum, wie oft und wie soll meine Datenbank gesichert
werden?
 Ist es akzeptabel, Daten zu verlieren, wenn eine Festplatte
versagt und dadurch Datenbankdateien beschädigt werden?
 Muss man vielleicht irgendwann einmal einen vorherigen
Zustand wiederherstellen können?
 Muss die Datenbank rund um die Uhr verfügbar sein?
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 19
Sicherungsstrategie
Sicherungshäufigkeit und Sicherungsobjekte
 Vollständiges Datenbankbackup
nach Erstellung einer Datenbank als Basis für weitere Backups
nach Datenbankoperationen, für die nologging eingeschaltet wird
nach einem Öffnen der Datenbank mit der RESETLOGS-Option

Backups nach strukturellen Änderungen der Datenbank
Tablespaces werden angelegt oder gelöscht
Datendateien werden zu Tablespace hinzugefügt oder entfernt
Änderungen der Online-Redologs (Anzahl Member, Gruppen)
 die Backuphäufigkeit
hängt von folgenden Änderungen in der Datenbank ab
Menge der hinzugefügten oder gelöschten Tabellen
(Daten-) Menge der hinzugefügten oder gelöschten Tabellenzeilen
Updatehäufigkeit der Tabellen
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 20
Sicherungsstrategie
Wahl der Sicherungsstrategie (1)
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 21
Sicherungsstrategie
Wahl der Sicherungsstrategie (2) - Verfügbarkeit
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 22
Sicherungsstrategie
Wahl der Sicherungsstrategie (3) – Bedeutung der Archivelogs
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 23
Sicherungsstrategie
Wahl der Sicherungsstrategie (4) – Empfehlungen (SAP)
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 24
Sicherungsstrategie
Wahl der Sicherungsstrategie (3) - Bestimmung Bandkapazität
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 25
Sicherungsstrategie
Crontab eines DB-Servers
oracle@host1:/export/home/oracle>crontab -l
0 20 * * 6
/var/opt/oracle/scripts/export.sh ORCL1
0 21 * * 1,3,5 /var/opt/oracle/scripts/backup.sh SID=ORCL1 MODE=H
0 22 * * 1,3,5 /var/opt/oracle/scripts/backup.sh SID=ORCL2 MODE=H
0 23 * * 1,3,5 /var/opt/oracle/scripts/backup.sh SID=ORCL3 MODE=H
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 26
Verwendung von OSL Storage Cluster
Was ist OSL
 Integration verschiedenster RAIDSysteme in den Storage Pool
 keine zusätzliche Hardware nötig
 Storage kann online erweitert werden
(bzw. SAN-Umbau während Dialogzeit)
 Anwendungssteuerung und
Hochverfügbarkeit
 Konzept der Universen
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 27
Verwendung von OSL Storage Cluster
Datensicherung mit OSL Mitteln
Server A
Oracle DB
ORCL1
Speichersystem 1
Datanbank ORCL1
/var/opt/oradata/ORCL1/
Gerät /dev/dsk/av0/orcl1data
O
S
L
Datenbank ORCL2
/var/opt/oradata/ORCL2/
Gerät /dev/dsk/av0/orcl2data
Speichersystem 2
Server B
Oracle DB
ORCL2
Datenbank ORCL1
/var/opt/oradata/ORCL1/
Gerät /dev/dsk/av1/orcl1data
O
S
L
Datenbank ORCL2
/var/opt/oradata/ORCL2/
Gerät /dev/dsk/av1/orcl2data
Datenbank ORCL3
/var/opt/oradata/ORCL3/
Gerät /dev/dsk/av0/orcl3data
Server C
Oracle DB
ORCL2 (TEST)
Oracle DB
ORCL3 (TEST)
Backup Server
O
S
L
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 28
O
S
L
Tape-Library
Verwendung von OSL Storage Cluster
Steuerung der OSL-Software (Beispiel)
oracle@host1:/var/opt/oracle>df –k
Filesystem
kbytes
used
/dev/dsk/av0/orcldata 122891472
avail
95704285 25958273
capacity
79%
Mounted on
/var/opt/oradata/ORCL1
root@host1 # avmirror -q |grep orcldata
0 orcldata (simple, 1 piece) MASTER SOURCE s---- synchronized
1 orcldata (simple, 1 piece) image target s---- synchronized
root@host1 # avmirror -u1 -d orcldata -L
INFO (avmirror): "1 orcldata" disconnected from mirror (io logging).
root@host1 # avmirror -q |grep orcldata
0 orcldata (simple, 1 piece) MASTER SOURCE s-1-- synchronized
1 orcldata (simple, 1 piece) image s0123 disconnected
root@host1 # avmirror -u1 -c orcldata
INFO (avmirror): "1 orcldata" connected as mirror instance, starting sync.
root@host1 # avmirror -q |grep orcldata
0 orcldata (simple, 1 piece) MASTER SOURCE s-1-- synchronized
1 orcldata (simple, 1 piece) image target s0123 synchronizing (1.0%)
root@host1 #
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 29
Einsatz von Oracle RMAN
Überblick
Recovery Manager
RMAN>
Recovery
KatalogDatenbank
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 30
Ziel-Datenbank
Einsatz von Oracle RMAN
Backup-Typen

Image Kopie (auf Platte)
ImageKopie

Backup Set (auf Platte oder Tape)
Datenbankdateien

Full Backup
sichert alle benutzten Datenbankblöcke

Datei
Inkrementelles Backup
sichert alle seit der letzten Sicherung
geänderten Datenbankblöcke
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 31
Backup Set
Einsatz von Oracle RMAN
Vor- und Nachteile
Vorteile:
 vollständige Integration in Oracle (kein begin|end backup)






Integration in OEM
nur benutzte Oracle Blöcke werden gesichert
höhere Flexibilität (z.B. Read Only Tablespaces überspringen)
Erkennung korrupter Blöcke
einfacheres TSPITR
arbeitet (angeblich) mit jeder Backup Software
Nachteile:
 Kompatibilitätsprobleme (eventuell mehrere KatalogDatenbanken notwendig)
 Oracle Kenntnisse und initialer Administrationsaufwand nötig
 „Information Hiding“
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 32
Automatic Storage Management
Problematik beim physischen Layout einer Datenbank
 Abschätzung des benötigten Plattenplatzes (einschliesslich der
Schätzung des Wachstumsrate)
 Verteilung der Datenbankdateien (Datafiles, Redologs, usw.) auf
Devices
 Layout des Storagesubsystems (RAID-Sets, LUNs) – in der
Verantwortung der Storageadministratoren
 Anlegen von Logical Volumes und Filesystemen – in der
Verantwortung der Systemadministratoren
 Anlegen von Datenbanken (und all ihren Dateien)
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 33
Automatic Storage Management
Eigenschaften
 ab Oracle 10g verfügbar (kostenlos)
 Oracle-Funktionen zur Unterstützung der Festplatten und TablespaceAdministration (autom. Rebalancing, Redundanzdefinitionen/Spiegelungen)
 ASM verbindet die Funktionalität eines Filesystems und eines Volume-Managers
im Oracle-Kernel (die Administration wird so vom Systemadministrator zum DBA
verlagert)
 Speicherung folgender Oracle-Dateien: Controlfiles, Online-Redologs und
Archivelogs, Datenfiles
 Gruppierung von physischen Festplatten zu logischen Diskgruppen
 zusätzliche Funktionen zur Verwaltung und Administration von OracleDatenbanken
 wird über zusätzliche Instanz (+ASM) verwaltet
 Oracle-DBs, die mit ASM arbeiten, können nur mit RMAN gesichert werden
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 34
Automatic Storage Management
Anlegen einer Diskgroup
SQL> CREATE DISKGROUP prod_01 NORMAL REDUNDANCY
2
FAILGROUP disk_set_01 DISK ´/dev/md/dsk/d0´ NAME asm_disk_01,
3
4
´/dev/md/dsk/d1´ NAME asm_disk_02
FAILGROUP disk_set_02 DISK ´/dev/md/dsk/d2´ NAME asm_disk_03,
5
6
´/dev/md/dsk/d3´ NAME asm_disk_04
/
Diskgroup created.
SQL> SELECT name, state, type, total_mb, free_mb from v$asm_diskgroup;
NAME
STATE
TYPE
TOTAL_MB
FREE_MB
------------------- ---------- -------- ------------ -----------PROD_01
MOUNTED
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 35
NORMAL
3072
2968
Automatic Storage Management
Anlegen eines ASM-Tablespaces
 ASM übernimmt die Verwaltung für alle Datenbankinstanzen
 der Oracle Datenbankkern kann die ASM-Filesystemstruktur direkt benutzen
SQL> CREATE TABLESPACE data01
2
DATAFILE ´+prod_01/data01.dbf´ SIZE 500 MB
3
/
Tablespace created.
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 36
Agenda
Oracle Datensicherung
Hochverfügbarkeit
Sichere Konfiguration von Oracle-Datenbanken
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 37
Hochverfügbarkeit
Begriffsbestimmung
Hochverfügbarkeit mit Oracle
Zusammenfassung
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 38
Begriffsbestimmung
Definition
Ein System gilt als hochverfügbar, wenn eine Anwendung auch im
Fehlerfall weiterhin verfügbar ist und ohne unmittelbaren
menschlichen Eingriff weiter genutzt werden kann. In der
Konsequenz heißt dies, dass der Anwender keine oder nur eine
kurze Unterbrechung wahrnimmt. Hochverfügbarkeit (abgekürzt
auch HA, abgeleitet von engl. High Availability) bezeichnet also
die Fähigkeit eines Systems, bei Ausfall einer seiner
Komponenten einen uneingeschränkten Betrieb zu
gewährleisten.“
Quelle: Held, Andrea: Oracle 10g Hochverfügbarkeit, AddisonWesley 2004
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 39
Begriffsbestimmung
Definition
Die Verfügbarkeit eines Systems oder einer Systemkomponente ist
definiert als prozentualer Zeitanteil, in dem dieses System bzw. die
Komponente fehlerfrei funktioniert.
Downtime
Verfügbarkeit  1 
Uptime
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 40
Begriffsbestimmung
Einteilung in Verfügbarkeitsklassen (1)
 mit dieser Formel wird die Verfügbarkeit im Zeitraum eines
Jahres berechnet
 anhand der Anzahl der Neunen teilt man die Verfügbarkeitswerte
in Verfügbarkeitsklassen ein
 die Nummer der Klasse ist dabei die Anzahl der Neunen
 ein System mit weniger als 53 Minuten Downtime pro Jahr ist
damit mindestens in der Verfügbarkeitsklasse 4
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 41
Begriffsbestimmung
Einteilung in Verfügbarkeitsklassen (2)
Verfügbarkeit
Downtime [Jahr]
Verfügbarkeitsklasse
95 %
18 Tage, 6 Stunden
1
99 %
3 Tage, 15 Stunden, 36 Minuten
2
99,9 %
8 Stunden, 46 Minuten
3
99,99 %
53 Minuten
4
99,999 %
5 Minuten
5
99,9999 %
< 1 Minute
6
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 42
Begriffsbestimmung
Einteilung der HV durch die Harvard Research Group (HRG) in 6 Klassen
(Availability Environment Classification)
HRGKlasse
Bezeichnung Erklärung
AEC-0
Conventional
Funktion kann unterbrochen werden, Datenintegrität ist nicht
essentiell.
AEC-1
Highly Reliable
Funktion kann unterbrochen werden, Datenintegrität muss
jedoch gewährleistet sein.
AEC-2
High Availability
Funktion darf nur innerhalb festgelegter Zeiten oder zur
Hauptbetriebszeit minimal unterbrochen werden.
AEC-3
Fault Resilient
Funktion muss innerhalb festgelegter Zeiten oder während
der Hauptbetriebszeit ununterbrochen aufrechterhalten
werden.
AEC-4
Fault Tolerant
Funktion muss ununterbrochen aufrechterhalten werden, 24*7
Betrieb (24 Stunden, 7 Tage die Woche) muss gewährleistet
sein.
AEC-5
Disaster Tolerant
Funktion muss unter allen Umständen verfügbar sein.
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 43
Begriffsbestimmung
Ungeplante Ausfälle
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 44
Begriffsbestimmung
Wie erreicht man Hochverfügbarkeit?
 Hochverfügbare Hardware (Clustersystem z.B. RAC, Mirroring)
 Redundantes Netzwerk (Router, Switches, mehrere Anschlusspunkte an
öffentliches Netz, redundantes öffentliches Netz)
 Redundante Datenhaltung (Spiegelung, Oracle Advanced Replikation,
Oracle Streams, Standby-Datenbank)
 Messung der Verfügbarkeit (SLA, Application Performance Monitoring)
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 45
Hochverfügbarkeit mit ORACLE
Übersicht
 Flashback (ab Oracle 9i, einige Funktionen ab 10g)
 Oracle Data Guard Physical Standby (Data Guard ab Oracle 8.1.7)
 Oracle Data Guard Logical Standy (ab Oracle 9i)
 Oracle Streams (ab Oracle 9i) (nur zur Info)
Oracle Advanced Replication (ab Oracle 7) (nur zur Info)
 Virtualisierung der ORACLE-Datenbankinstanz mittels OSLStorage-Cluster
 Oracle Fail Safe
 RAC (nur zur Info)
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 46
Hochverfügbarkeit mit ORACLE
Flashback
 Flashback Query (Abfrage historischer Zustände)
 Flashback Table (Zurücksetzen ganzer Tabellen)
 Flashback Drop (Wiederherstellen gelöschter Tabellen)
 Flashback Database (Zurücksetzen gesamte Datenbank)
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 47
Hochverfügbarkeit mit ORACLE
Flashback
Flashback Query (Beispiel)
SQL> SELECT * FROM test AS OF TIMESTAMP
to_timestamp(´30.01.2008 11:00:00´,´dd.mm.yyy
hh24:mi:ss´);
Flashback Table (ab 10g, benutzt UNDOTBS)
SQL> FLASHBACK TABLE test TO TIMESTAMP
to_timestamp(´30.01.2008 11:00:00´,´dd.mm.yyy
hh24:mi:ss´);
Flashback Drop (ab 10g, benutzt UNDOTBS)
SQL> FLASHBACK TABLE test TO BEFORE DROP;
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 48
Hochverfügbarkeit mit ORACLE
Flashback
Flashback Database
-- Herunterfahren der Datenbank
SQL> SHUTDOWN IMMEDIATE;
-- Hochfahren in den Mount Modus
SQL> STARTUP MOUNT;
-- Flashback absetzen
SQL> FLASHBACK DATABASE TO TIMESTAMP to_timestamp(´30.01.2008
11:00:00´,´dd.mm.yyy hh24:mi:ss´);
-- Datenbank öffnen
SQL> ALTER DATABASE OPEN RESETLOGS;
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 49
Hochverfügbarkeit mit ORACLE
Übersicht Standby-DB
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 50
Hochverfügbarkeit mit ORACLE
Data Guard Physical Standby-DB
Vorteile
Nachteile
kostenlos in der EE
nicht in der SE
geringer Administrationsaufwand
Oracle Lizenzen notwendig
automatische Übertragung aller
Änderungen (DDL und DML)
keine Nutzung der zusätzlichen Hardund Software möglich
kein Einfluss auf die Anwendung
gleiche Hardware und Betriebssysteme
„No-Data-Loss“-Konfiguration möglich
gleiche Oracle Releasestände
einfaches Switchover
Master-Slave-Prinzip
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 51
Hochverfügbarkeit mit ORACLE
Data Guard Logical Standby-DB
Vorteile
Nachteile
kostenlos in der EE
nicht in der SE
zusätzliche Hard- und Software kann
genutzt werden (Trennung OLTP und
Reporting möglich)
Oracle Lizenzen notwendig
geringer Administrationsaufwand
unterschiedliche Oracle Releasestände
ab 10.1.0.3 möglich
automatische Übertragung aller
Änderungen (DDL und DML)
gleiche Hardware und Betriebssysteme
geringer Einfluss auf die Anwendung
Master-Slave-Prinzip
„No-Data-Loss“-Konfiguration möglich
einfaches Switchover
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 52
Hochverfügbarkeit mit ORACLE
Oracle Streams
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 53
Hochverfügbarkeit mit ORACLE
Oracle Streams
Vorteile
Nachteile
kostenlos in der EE
nicht in der SE
zusätzliche Hard- und Software kann
genutzt werden (Trennung OLTP und
Reporting möglich)
hoher Administrationsaufwand
beteiligte Datenbanken sind
gleichberechtigt
Beeinflussung der produktiven
Umgebung durch Queue-Tabellen
automatische Übertragung aller
Änderungen (DDL und DML)
Konflikte müssen programmtechnisch
gelöst werden
keine Abhängigkeit von Hardware und
Betriebssystem
Abhängigkeit von Oracle-Version
kein manueller Eingriff für Umschaltung
nötig
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 54
Hochverfügbarkeit mit ORACLE
Oracle Advanced Replication
Vorteile
Nachteile
kostenlos in der EE
nicht in der SE
zusätzliche Hard- und Software kann
genutzt werden (Trennung OLTP und
Reporting möglich)
hoher Administrationsaufwand
beteiligte Datenbanken sind
gleichberechtigt
Produktionsumgebung muss angepasst
werden (Materialized View Logs)
bidirektionale Replikation möglich
Konfliktpotential (programmtechnische
Lösung erforderlich)
kaum Abhängigkeiten bezüglich
Hardware und Betriebssystem
kein manueller Eingriff für Umschaltung
nötig
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 55
Hochverfügbarkeit mit ORACLE
Virtualisierung der ORACLE-Datenbankinstanz mittels OSL-Storage-Cluster
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 56
Hochverfügbarkeit mit ORACLE
Oracle Fail Safe
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 57
Hochverfügbarkeit mit ORACLE
RAC-Architektur
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 58
Zusammenfassung
 Hochverfügbarkeit ist nicht auf die Datenbank beschränkt
 Software- und Anwendungsfehler sind die häufigsten
Fehlerursachen
 Anwender unterscheiden nicht zwischen keine oder
eingeschränkte Verfügbarkeit
 Service Level Agreements (SLA) sollten sich immer auf die
Gesamtanwendung beziehen
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 59
Agenda
Oracle Datensicherung
Hochverfügbarkeit
Sichere Konfiguration von Oracle-Datenbanken
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 60
Sichere Konfiguration von ORACLE Datenbanken
Einführung
Benutzer- und Passwortverwaltung
Schutz der Daten (Rollenkonzept, Schutz des DD, VPD)
Überwachung von Zugriffen (Auditing)
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 61
Einführung
Marketingaussagen von Oracle
 Einbruchsicher
(Die Sicherheit von Oracle beweisen 14 unabhängige
Sicherheitszertifikate)
 Unschlagbar zuverlässig
(Oracle erfüllt 14 Sicherheitsstandards)
 Ausfallsicher
(Keine Ausfallzeiten mehr und auf jede mögliche Überraschung
vorbereitet)
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 62
Einführung
Allgemeine Grundsätze - Vertraulichkeit
Empfänger
Sender
Abhören
Der Sender muss sicher sein, dass nur
sein Partner, der Empfänger, die Mitteilung
lesen kann. Eine Drittperson, die den
Transportweg abhört, darf diese
Information nicht verwerten können.
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 63
Einführung
Allgemeine Grundsätze - Integrität
Sender
Empfänger
Modifizieren
Der Sender und der Empfänger
müssen sicher sein, dass ihre Mitteilung
nicht durch eine Drittperson inhaltlich
verändert wurde.
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 64
Einführung
Allgemeine Grundsätze - Authentizität
Sender
Empfänger
Fälschen
Der Empfänger muss sicher sein, dass
die Nachricht auch vom Sender
kommt und nicht nur in dessen Namen
verfasst wurde.
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 65
Einführung
Allgemeine Grundsätze - Nichtabstreitbarkeit
?
Wer hat recht?
Sender
Nicht versendet
Empfänger
Erhalten
Der Sender behauptet:
Ich habe keine Nachricht versendet!
Der Empfänger behauptet:
Ich habe eine Nachricht vom Sender erhalten!
Wer hat recht?
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 66
Benutzer- und Passwortverwaltung
Wer hat mit DBA-Rechten Zugriff auf die Datenbank
 DBA
 Hinterlegte Passwörter (Safe)
 Unix und Windows Administratoren
 Jeder mit physikalischem oder Remotezugriff auf die
Arbeitsplätze der DBA (Hausmeister, Reinigungspersonal,
Sicherheitsdienst)
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 67
Benutzer- und Passwortverwaltung
Standardbenutzer
 Je höher die Oracle-Version, desto mehr neue Benutzerkonten
werden automatisch eingerichtet
 Waren es bei Oracle7 die Benutzer SYS und SYSTEM, bei welchen
man das Standardpasswort (change_on_install, manager)
ändern musste, sind es bei Oracle 9i je nach installierten Features
über 20 Benutzerkonten
 Diese Benutzerkonten sind zum Teil sehr hoch privilegiert (DBA, all
privileges, …), da Oracle immer mehr Features in eigene Schemata
auslagert
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 68
Benutzer- und Passwortverwaltung
Standardbenutzer – Übersicht (10g)
Konto
CTXSYS
DBA
RESOURCE
(unlimited
tablespace)
execute
any
procedure
select
any
table
select any
dictionary





exempt
access
policy
alter
system


DBSNMP
LBACSYS



OLAPDBA



OLAPSVR



OLAPSYS



ORDPLUGINS

ORDSYS

OUTLN


MDSYS






WKSYS






XDB
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 69


Benutzer- und Passwortverwaltung
Eigenschaften guter Passwörter
 möglichst lang (max. 30 Zeichen)
 Oracle erlaubt keine Sonderzeichen, aber mit "…" möglich
 möglichst Zahlen und Buchstaben mischen
 einen Merksatz bilden:
z.B. „Ich wohne seit 1999 in Leipzig“ -> Iws1999iL
 an den "Faktor Mensch" denken …
(Passworte während Telefonat, auf Zetteln)
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 70
Benutzer- und Passwortverwaltung
Alle Authentifizierungsarten
 Datenbankauthentifizierung (Überprüfung des Benutzers und
Passworts erfolgt autonom durch die DB)
 Externe Authentifizierung (Überprüfung des Benutzers durch
Datenbank, Überprüfung des Passworts durch Betriebssystem
oder Netzwerk)
 Globaler Benutzer (Authentifizierung durch Secure Socket
Layer)
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 71
Benutzer- und Passwortverwaltung
Betriebssystemauthentifizierte Benutzer
 Oracle hat schon seit Version 5 die Möglichkeit eingebaut, bei der
Anmeldung auf die Passworteingabe zu verzichten:
SQL> connect /
 sobald Oracle diese Syntax erkennt, wird der BetriebssystemBenutzername gelesen und diesem folgender INIT.ORA-Parameter
vorangestellt:
OS_AUTHENT_PREFIX = "OPS$" # Default
REMOTE_OS_AUTHENT = TRUE
# Default = FALSE
 wenn sich also der Benutzer MUELLER anmeldet, wird getestet, ob es
einen Oracle-Benutzer OPS$MUELLER gibt, wenn ja, wird dieser ohne
Passwort-Abfrage angemeldet
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 72
Benutzer- und Passwortverwaltung
Betriebssystemauthentifizierte Benutzer - Sicherheitshinweise

nach dem Aufruf (von Routinen) mit username/password Syntax läßt sich das Passwort gut in der Prozessliste finden
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 73
Benutzer- und Passwortverwaltung
Betriebssystemauthentifizierte Benutzer - Sicherheitshinweise

deshalb Nutzung von OPS$-Benutzern
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 74
Benutzer- und Passwortverwaltung
Passwort-Policies
 Standardmäßig sind bei Oracle keine Passwortrichtlinien aktiv,
das heißt, ein Benutzer ist nicht gezwungen, sein Passwort jemals
zu ändern
 Es sind keine Komplexitätsregeln festgelegt, so dass ein
beliebiges Passwort (beliebige Länge, beliebiger
Schwierigkeitsgrad, …) benutzt werden kann
 Ein Benutzer kann sich beliebig oft mit falschem Passwort
anmelden, ohne gesperrt zu werden
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 75
Benutzer- und Passwortverwaltung
Passwort-Policies
 ab Oracle 8 besteht die Möglichkeit, Passwort-Profiles zu
erzeugen, die den Benutzern zugeordnet werden können
 Zum Teil können die geforderten Werte direkt im EnterpriseManager (oder per SQL-Befehl) erfasst werden, zum Teil ist
PL/SQL-Programmierung notwendig
 Oracle liefert ein Beispielscript mit, welches als Vorlage benutzt
werden kann: $ORACLE_HOME/rdbms/admin/utlpwdmg.sql
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 76
Benutzer- und Passwortverwaltung
Passwort-Policies – Passwortprofiles im Enterprise Manager
Das Passwort muss nach
30 Tagen geändert
werden
Wird das Passwort nicht
geändert, wird das Konto
unendlich lang gesperrt
Das Passwort darf nach
365 Tagen wieder
verwendet werden
Nach 3 fehlerhaften
Anmeldeversuchen wird
das Konto 10 Tage
gesperrt
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 77
Benutzer- und Passwortverwaltung
Angriffsmöglichkeiten über Startup Dateien
 Einige Clients erlauben es, automatisch und versteckt bei jedem
Start, SQL-Befehle im Hintergrund auszuführen
 SQL*Plus: glogin.sql oder login.sql
(unter $ORACLE_HOME\sqlplus\admin)
 TOAD: toad.ini
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 78
Benutzer- und Passwortverwaltung
Angriffsmöglichkeiten über Startup Dateien – Beispiel glogin.sql
-------------- glogin.sql ---------------Create user hacker identified by hacker;
Grant dba to hacker;
-------------- glogin.sql ----------------
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 79
Benutzer- und Passwortverwaltung
Angriffsmöglichkeiten über Startup Dateien – Beispiel glogin.sql
-------------- glogin.sql ----------------
set term off
create user hacker identified by hacker;
grant dba to hacker;
set term on
-------------- glogin.sql ----------------
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 80
Schutz der Daten
Rollenkonzept
 User / Rolle
Einem User werden Objekt und Systemprivilegien vergeben, zur
Berechtigung von SQL-statements (DDL, DML)
Eine Rolle ist eine Gruppierung von Objekt-und oder
Systemprivilegien oder eine Gruppierung von Rollen (nested
Roles)
 Bei der Erstellung des Data Dictionary werden außer Objekten auch
Standardbenutzer und
Standardrollen angelegt.
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 81
Schutz der Daten
Rollenkonzept
 nur wenig Rollen als default role vergeben, denn auch
eine Passwort geschützte Rolle – solange sie default role
ist – wird ohne Passwortabfrage aktiviert
 setzen der Rollen zum benötigten Zeitpunkt durch die
Applikation
 Schreiben von Package-Procedures für INSERT, UPDATE,
DELETE etc. auf Tabellen von HR
 Grants der EXECUTE Privileges auf diese Package-Procedures
an die Application-User
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 82
Schutz der Daten
Schutz des Data Dictionary (1)

O7_DICTIONARY_ACCESSIBILITY
neu ab Oracle 9.0.x ist DEFAULT = FALSE (vorher DEFAULT = TRUE für
Abwärtskompatibilität mit Oracle 7)
Parameter im init<SID>.ora Parameter-File oder, ab Oracle9i im
sp<SID>.ora Server-Parameter-File
Parameter ist NICHT dynamisch änderbar, die Datenbank muss neu
gestartet werden
ein User mit %ANY% Privileges kann somit alle Objekte des DataDictionarys lesen UND verändern

O7_DICTIONARY_ACCESSIBILITY= FALSE setzen
nur SYSDBA hat Zugriff auf Data-Dictionary, DBA nicht
ein User mit %ANY% Privilegien kann Objekte des Data-Dictionarys nicht
mehr verändern noch einsehen
es ist aber möglich, einzelnen Usern direkte Objekt-Privilegien auf Objekte
des Data-Dictionarys zu geben
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 83
Schutz der Daten
Schutz des Data Dictionary (2)
 O7_DICTIONARY_ACCESIBILITY = TRUE
 EXECUTE ANY PROCEDURE
User OUTLN/OUTLN (gibt es seit Oracle 8.1.5, Stored Outlines)
CONNECT outln/outln
CREATE OR REPLACE PROCEDURE grant_dba_to_scott
IS
cur INTEGER;
BEGIN
cur := DBMS_SQL.open_cursor;
-- uid 0 = SYS
SYS.DBMS_SYS_SQL.PARSE_AS_USER(cur, 'GRANT DBA TO SCOTT',
DBMS_SQL.native,0);
DBMS_SQL.close_cursor (cur);
END;
/
EXECUTE grant_dba_to_scott;
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 84
Schutz der Daten
Schutz des Data Dictionary (3)
 O7_DICTIONARY_ACCESIBILITY = FALSE
 EXECUTE ANY PROCEDURE
Benutzer OUTLN/OUTLN wurde nicht gesperrt
Connected.
Warning: Procedure created with compilation errors.
BEGIN grant_dba_to_scott; END;
*
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00905: object OUTLN.GRANT_DBA_TO_SCOTT is invalid
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 85
Schutz der Daten
Virtual Private Database (1)
 Probleme traditioneller Rechteverwaltung:
kein Rollenkonzept für Zeilen, nur für Objekte
Hilfskonstrukt VIEW ist zu aufwendig bei grossen
Nutzergruppen mit vielen Tabellen
 VPD war bis Oracle 8i unter dem Namen Security Policy
bekannt
 ab Oracle 9i erweitert und nur in der Enterprise Edition verfügbar
 Steuerung des Zugriffs auf Datenbankebene (Bezeichnung:
Fine-Grained Access Control oder Row Level Security)
 Erweiterung ist Label Security (Vereinfachung der VPD) durch
Label die an Benutzer und Tabellenzeilen vergeben werden
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 86
Schutz der Daten
Virtual Private Database (2)

Vorgabe: Tabelle darf nur von bestimmten Personen gelesen werden
Wenn Verkäufer, dann 1=1 (TRUE)
Wenn Kunde, dann 0=1 (FALSE)

SELECT * FROM Aufträge WHERE name=´Mitropa´
Verkäufer: SELECT * FROM Aufträge WHERE name=´Mitropa´ and (1=1)
NAME
MENGE
PREIS
Mitropa
10000
148
Mitropa
7300
172
Mitropa
7400
171
Kunde: SELECT * FROM Aufträge where NAME=´Mitropa´ and (0=1)
NAME
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 87
MENGE
PREIS
Schutz der Daten
Virtual Private Database (3)
es muss eine PL/SQL Funktion geschrieben werden, die eine
Zeichenkette als Ergebnis liefert (1=1 oder 0=1)
Diese Zeichenkette wird als zusätzliche WHERE-Bedingung an jeden
Befehl angehängt
diese Policy-Funktion wird mit einer Tabelle oder View durch eine
Policy (aus Package dbms_rls) verbunden
SQL wird danach optimiert und ausgeführt
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 88
Schutz der Daten
Virtual Private Database (4) – Beispiel
 Zugriff auf Tabelle SCOTT.EMP ist für alle Benutzer nur während der Geschäftszeit erlaubt
 Anlegen einer PL/SQL-Funktion GetWorkHoursPredicate, die folgende WHERE Klauselm in
Form eines Textstrings generiert:
„1=1“ zwischen 08:00 und 16:00 Uhr
„0=1“ sonst
Anlegen einer Policy:
dbms_rls.add_policy( object_schema
=> 'SCOTT',
object_name
=> 'EMP',
policy_name
=> 'EMP_POLICY',
function_schema => 'SCOTT',
policy_function => 'GetWorkHoursPredicate',
statement_types => 'SELECT,INSERT,UPDATE,DELETE',
update_check
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 89
=> true);
Schutz der Daten
Virtual Private Database (5) – Beispiel
SQL*Plus um 07:30 Uhr
Interne Oracle Verarbeitung
SQL> SELECT ename FROM
SCOTT.EMP WHERE deptno=10;
SQL> SELECT ename FROM
SCOTT.EMP WHERE deptno=10
CLARK
AND (1=1);
KING
MILLER
SQL*Plus um 18:00 Uhr
Interne Oracle Verarbeitung
SQL> SELECT ename FROM
SCOTT.EMP WHERE deptno=10;
SQL> SELECT ename FROM
SCOTT.EMP WHERE deptno=10
Es wurden keine Zeilen
ausgewählt.
AND (0=1);
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 90
Überwachung von Zugriffen
Standardauditing

Auditing wird verwendet, um generelle Aktivitäten auf der Datenbank zu
protokollieren (in Tabelle SYS.AUD$)

Wer macht wann ein SELECT, INSERT, CREATE INDEX, ALTER TABLE
etc. auf einem Datenbank Objekt

Standard Auditing benötigt die INIT.ORA Parameter
AUDIT_TRAIL = TRUE/NONE/OS/DB
DEFAULT ist AUDIT_TRAIL = NONE

kann eingestellt werden für
die gesamte Instanz und für alle neu erstellten Tabellen
einem Schema/Besitzer von Tabelle(n) für die eigenen Objekte
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 91
Fazit
 Oracle unternimmt große Anstrengungen, um die Datenbank sicherer
zu machen. Von Version zu Version gibt es mehr und bessere
Möglichkeiten, um die Daten zu schützen
 diese neuen Möglichkeiten erfordern aber immer mehr technisches
und organisatorisches Wissen, denn nur beim richtigen Einsatz wird
die Sicherheit erhöht
 die Komplexität wird immer höher und dies erleichtert die
Administration der Datenbank nicht
 es müssen diverse Sachen selbst gemacht werden
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 92
Ende
Ihre Ansprechpartner:
Haben Sie Fragen oder Hinweise?
Wenden Sie sich bitte an:
Steffen
VielenKlehr
Dank für Ihre
Datenbankadministrator
Aufmerksamkeit.
Telefon:
0345 585-2333
E-Mail:
[email protected]
© GISA GmbH | www.gisa.de | Steffen Klehr | 29.01.2008 | Seite 93
Herunterladen