Skalierbare und hochverfügbare Datenbankesysteme: Oracle Real Application Cluster, Data Guard und Flashback Andrea Held Systemarchitektin Deutsche Post ITSolutions Deutsche Post ITSolutions GmbH
Veröffentlichungen Diverse Fachzeitschriften ix,, Linux Enterprise Magazin, Der Entwickler, XML Magazin u.a. Oracle 10g Hochverfügbarkeit mit RAC, DataGuard und Flashback, Addison-Wesley 2004 Seite 1-2
Oracle 10g Hochverfügbarkeitstechnologien Messen von Verfügbarkeit: Metriken Überblick: Cluster-Architekturen für Datenbanken Oracle Real Application Cluster (RAC) Standby Datenbanken mit Oracle Data Guard Oracle Flashback Unschlagbare Teams: Stärken der Technologien kombinieren Seite 1-3
Metriken: Verfügbarkeitsklassen Stufen Stufen der der Verfügbarkeit Verfügbarkeits Bezeichnung Verfügbarkeit Downtime pro pro Jahr Jahr -Klasse -Klasse in in Prozent Prozent 2 Stabil Stabil 99,0 99,0 3,7 3,7 Tage Tage 3 Verfügbar 99,9 99,9 8,8 8,8 Stunden 4 Hochverfügbar 99,99 99,99 52,2 52,2 Minuten 5 Fehlerunempfindlich 99,999 5,3 5,3 Minuten 6 Fehlertolerant 99,9999 32 32 Sekunden 7 Fehlerresistent 99,99999 3 Sekunden Tabelle 1: AEC Klassen nach [HRG] Seite 1-4
Metriken: Verfügbarkeit berechnen Verbreitete Kennzahl: Verfügbarkeit = Uptime / (Downtime( + Uptime) Berechnungen der Verfügbarkeit von Gesamtsystemen In Anlehnung an Serien- und Parallelschaltung Theoretische Werte, die die Vielschichtigkeit komplexer System nicht n berücksichtigen Seite 1-5
Wodurch entstehen Systemausfälle? Patches und Upgrades Systemfehler Rechner Ausfall Disk Ausfall Netzwerkausfall Hardware Fehler Datenfehler Data Corruption Software Fehler Bedienerfehler Stromausfall Ungeplante Ausfallzeit Disaster Bedienerfehler / "menschliches Versagen" Flut Feuer Sturm Löschen von Daten: Drop Table Truncate Table Geplante Ausfallzeit Wartungsarbeiten Hardware Upgrades Schema Anpassungen Upgrade und Patches OS- und Software- Patches Seite 1-6
Wie wird Verfügbarkeit gewährleistet? Primär durch Elimination of SPOF (Single Points of Failure), d.h. durch: Redundante Platten Redundante Netzwerkverbindungen Redundante Knoten Seite 1-7
Redundanz im Datenbank-Backend Backend: Cluster-Architekturen für Datenbanken Aktiv/Passiv-Cluster Aktiv/Aktiv-Cluster Shared Nothing Shared All Seite 1-8
Aktiv / Passiv Zu einer Zeit ist höchstens ein Node Eigner der Ressourcen Failover / Switchover: : Ressourcen werden von einem anderen Node übernommen, Übernahme der Clients durch Virtual IPs und Hostnames Vorteil: Erhöhte Ausfallsicherheit Nachteil: Es können nicht alle Ressourcen genutzt werden Beispiel: Veritas monitort das Vorhandensein einiger Oracle Prozesse (ora_dbw,( ora_smon, ora_pmon, ora_lgwr) sowie des Oracle Listener alternativ über Transaktion in Test-Tabelle (In-Depth Monitoring) Seite 1-9
Aktiv/Passiv-Cluster Client Client Client Client Client Client Client Client Client Client Public Public Network Network aktiv aktiv inaktiv inaktiv Node Node 1 1 ( ( Aktiv Aktiv ) ) Node Node 2 2 ( ( Passiv Passiv ) ) Private Network Private Network aktiv aktiv inaktiv inaktiv Storage Storage (exklusiver (exklusiver Zugriff) Zugriff) Seite 1-10
Aktiv / Aktiv Shared Nothing: Jeder Knoten bedient nur einen Teil der Daten. Zu einer Zeit ist höchsten ein Node Eigner bestimmter Ressourcen. Shared Disk: Alle Knoten nutzen alle Daten. Alle beteiligten Knoten teilen sich bestimmte Ressourcen. Seite 1-11
Aktiv/Aktiv-Cluster: Ein Architekturvergleich Quelle: Prof. Dr. Th. Härder, Verteilte und Parallele Datenbanksysteme Seite 1-12
Aktiv/Aktiv-Cluster: Shared All Architektur des RAC Client Client Client Client Client Client Client Client Client Client Public Network Public Network WAN WAN Primär- Primär- Datenbank Datenbank Standby Datenbank Standby Datenbank (lokal) (lokal) Standby Datenbank Standby Datenbank (in entferntem Rechenzentrum) (in entferntem Rechenzentrum) Storage Storage Storage Storage Storage Storage Seite 1-13
Clusterarchitekturen Ein Vergleich... Wieviele Wieviele Knoten Knoten können können im im Normalbetrieb Normalbetrieb genutzt genutzt werden? werden? Aktiv/Passiv Shared Shared Nothing Nothing Genau einer Alle Shared Shared Disk Disk Alle Alle Stehen Stehen noch noch alle alle Daten Daten im im Fehlerfall Fehlerfall zur zur Verfügung? Verfügung? Ja Nein Ja Wieviele Benutzer sind sind vom vom Ausfall Ausfall betroffen? betroffen? Kann Kann die die Übernahme Übernahme transparent transparent durch durch verbleibenden Knoten Knoten geschehen? geschehen? Alle Nein Alle Nein Anteilig zur Knotenanzahl Ja Seite 1-14
Architektur des RAC Clients... Cluster Node 1 Public Network Cluster Node 2 Public NIC Public NIC Private NIC Cluster Switch Private Network Private NIC Storage Adapter Storage Adapter Local Disks Multi Host Disks Local Disks Seite 1-15
Requirements für RAC Jeder Knoten benötigt zumindest... Zwei Netzwerkkarten: Private Clusterinterconnect,, Public Network Zugriff auf Shared Disks Selbsterklärend rend ist, dass Datenbanken von 32-Bit und 64-Bit Instanzen nicht gemeinsam genutzt werden können, k entweder ein Cluster-FS oder Raw Devs benötigt werden Seite 1-16
Requirements für RAC: Datenbank Alle Datafiles auf Shared Disk mit zertifizierten Clusterfilesystem bzw. Raw Device im Shared Disk Zugriff nötig Jede Instanz benötigt einen eigenen Undo-Tablespace Jede Instanz benötigt Ihre eigenen Redo Log Files Seite 1-17
Storage SCSI / JBOD Devices SAN: Storage Area Network Netzwerk mit Storage Devices Basiert auf Glasfaser Technologie basierend erlaubt so sehr hohe Transferraten zwischen Host und Datenspeicher (bis zu 200MB/s.). Grundlegende Idee eines SAN: Konsolidierung von Datenspeicher und der Reduktion der Verwaltung durch den Administrator. NAS: Network Attached Storage Speichersysteme im LAN. Zugriff über das Netz Seite 1-18
SCSI Seite 1-19
NAS Seite 1-20
SAN Seite 1-21
Storage Vergleich Seite 1-22
Zertifizierte Clusterfilesysteme Plattform/ Storage der der Oracle Storage der der Datafiles Clustersoftware Installation AIX LFS AIX LFS (1) (1) or or CFS CFS (2) (2) CFS CFS und und // oder oder Raw Raw Devices Fujitsu Siemens LFS LFS RAW Devices // NFS NFS Primecluster HP/UX LFS LFS Raw Raw Devices Linux LFS LFS OCFS und und // oder oder Raw Raw Devices OpenVMS CFS CFS CFS CFS Sun Sun Cluster LFS LFS Raw Raw Devices Tru64 Unix Unix LFS LFS oder oder CFS CFS CFS CFS und und // oder oder Raw Raw Devices Veritas DBE/AC LFS LFS oder oder CFS CFS CFS CFS und und // oder oder Raw Raw Devices Windows NT/2000 LFS LFS oder oder CFS CFS OCFS und und // oder oder Raw Raw Devices Seite 1-23
Transparent Application Failover Clientseitiges oder serverseitiges Load Balancing LOAD_BALANCE und FAILOVER Parameter werden Client-seitig konfiguriert. Instance-Namen beteiligter Knoten können ähnlich oder unterschiedlich sein. SERVICE_NAMES sollte auf denselben Wert gesetzt werden. Seite 1-24
Transparent Application Failover TYPE: session, select und none METHOD: basic und preconnect RETRIES: DELAY: Anzahl der Wiederholungsversuche Wartezeit zwischen Wiederholungsversuchen Seite 1-25
TAF Konfiguration RACTAFS = (DESCRIPTION = (FAILOVER=ON) (LOAD_BALANCE=ON) (ADDRESS = (PROTOCOL = TCP)(HOST = RAC-01)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = RAC-02)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = RACDB) (FAILOVER_MODE= (TYPE=SELECT) (METHOD=PRECONNECT) ) ) ) Seite 1-26
TAF: Verifikation des Failovers Die View V$Session gibt hier Auskunft: SELECT FROM GROUP BY machine, failover_type,failover_method, failed_over,count(*) v$session machine, failover_type, failover_method, failed_over; MACHINE FAILOVER_TYPE FAILOVER_M FAILED_OVER COUNT(*) -------- ------------- ---------- ----------- -------- SUN3 NONE NONE NO 12 SUN4 SESSION PRECONNECT YES 1 Seite 1-27
Load Balancing mit TAF Connection Load Balancing über Client-Konfiguration: LOAD_BALANCE = ON Knoten wird lastunabhängig gewürfelt Seite 1-28
Load Balancing im Cluster RAC = (DESCRIPTION = (LOAD_BALANCE = on) (ADDRESS = (PROTOCOL = TCP)(HOST = rac-01)(port = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = rac-02)(port = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = rac-03)(port = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = rac-04)(port = 1521)) (CONNECT_DATA = (SERVICE_NAME = rac) ) ) Seite 1-29
Server Load Balancing Dedicated Server Least loaded Node (Mittelwert der letzten Minute) Least loaded Instance (Anzahl Connections) Shared Server Konfig: Least loaded Node (Mittelwert der letzten Minute) Least loaded Instance (Anzahl Connections) Least loaded Dispatcher (Anzahl Connections) Seite 1-30
Server Load Balancing: : Konfiguration Init.ora Parameter für Listener db_name='rac' rac1.local_listener="listener_rac1" rac2.local_listener="listener_rac2" rac3.local_listener="listener_rac3" rac4.local_listener="listener_rac4" rac1.instance_name='rac1' rac2.instance_name='rac2' rac3.instance_name='rac3' rac4.instance_name='rac4' Seite 1-31
Oracle Standby Datenbanken und Data Guard Client Client Client Client Client Client Client Client Client Client Public Network Public Network WAN WAN Primär- Primär- Datenbank Datenbank Standby Datenbank Standby Datenbank (lokal) (lokal) Standby Datenbank Standby Datenbank (in entferntem Rechenzentrum) (in entferntem Rechenzentrum) Storage Storage Storage Storage Storage Storage Seite 1-32
Standby Datenbanken Backup der Primär-Datenbank Insgesamt bis zu 9 Standby Datenbanken an einem Primärsystem Weitere DBs können kaskadierend an Standby Systeme angehängt werden Primärsystem kann Single Instanz oder RAC sein. Standby DB kann Single Instanz oder RAC sein. Seite 1-33
Manuelles Erstellen einer Standby-Konfiguration FORCE LOGGING auf Primärdatenbank aktivieren Passwortdatei erstellen (falls noch keine vorhanden) Parameter setzen: db_unique_name: log_archive_dest_n: FAL_server und FAL_client db_file_name_convert log_file_name_convert standby_file_management eindeutiger Name der Datenbank, der auch bei Rollenwechsel erhalten bleibt. Archivierungsziel FAL-Server und FAL-Client Konvertierung von Pfaden Konvertierung der Redo Log-Pfade Sollte auf AUTO gesetzt sein Seite 1-34
Manuelles Erstellen einer Standby Konfiguration Erzeugen eines Standby Controlfile Erstellen einer Parameterdatei auf Standby-Seite Seite Kopieren der Datenbankdateien und des Standby Controlfile auf Standby System Erzeugen einer Passwortdatei Anpassen der SQL*Net-Konfigurationsdateien Starten des Managed Recovery Modes Seite 1-35
Und für Klickibunti-Freaks Freaks: Oracle 10g Enterprise Manager DBControl Seite 1-36
Standby DB Physical Physical Standby Logical Prmärsystem Clients LAN / WAN Redo Apply Physical Standby DB Logical Standby Primär-Datenbank Redo Logs der Primär Datenbank LAN / WAN Logical Standby DB SQL Apply Seite 1-37
Data Guard Broker Architektur DMON muss auf jedem Knoten gestartet sein: Data Guard Client (DBControl oder Data Guard CLI) DMON StandbyDatenbankn DMON DMON Primärdatenbank Instance n Instance2 Instance1 DMON StandbyDatenbank3 StandbyDatenbank2 DMON StandbyDatenbank1 Instance n Instance2 Instance1 Seite 1-38
Data Guard Broker Prozeß starten Seite 1-39
Standby Datenbank im EM 10g Seite 1-40
Standby Datenbank im EM 10g Seite 1-41
Protection Mode Maximum Protection Maximum Availability Maximum Performance Seite 1-42
Protection Mode Seite 1-43
Parameter für Standby Datenbanken in 10g Parameter wurden erweitert, d.h. Initialisierungsparameter haben für alle Rollen Gültigkeit *.log_archive_config='dg_config=(darmstadt,frankfurt,rechenzentrum_bonn)' um_bonn)' *.log_archive_dest_1='location=/app/oracle/product/admin/prod/archive VALID_FOR=(ONLINE_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=darmstadt' t' *.log_archive_dest_2='location=/app/oracle/product/admin/prod/archive/stdchive/std VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLES) DB_UNIQUE_NAME=darmstadt' *.log_archive_dest_3='service=tdsphys LGWR async VALID_FOR=(ONLINE_LOGFILES, PRIMARY_ROLE)DB_UNIQUE_NAME=rechenzentrum_bonn' *.log_archive_dest_4='service=tdsrpt VALID_FOR=(ONLINE_LOGFILES, PRIMARY_ROLE) DB_UNIQUE_NAME=frankfurt Seite 1-44
Standby DB in 10g Failback auf Primärdatenbank möglich Daher: Keine Re-Instantiierung nötig Tests stehen noch aus Seite 1-45
Und wer s lieber mit Kommandozeile mag Data Guard CLI Seite 1-46
Flashback Flashback Query Abfrage historischer Zustände Flashback Table Zurücksetzen ganzer Tabellen Flashback Drop Wiederherstellung gelöschter Tabellen Flashback Database Zurücksetzen der gesamten Datenbank Seite 1-47
Flashback Query Bereits in Oracle 9i eingeführt In 10g: Einige Änderungen und Vereinfachungen in der Syntax Erlaubt Abfrage historischer Zustände von Datenbeständen Basis ist Automatic Undo Management (AUM) Seite 1-48
Voraussetzungen für Flashback Query AUM muss genutzt werden: UNDO_MANAGEMENT=AUTO UNDO TS sollte groß genug gesetzt werden UNDO_RETENTION kann gesetzt werden Unter 9i: Benutzer benötigt execute Rechte auf DBMS_FLASHBACK Seite 1-49
Flashback Query auf 10g Neue, erweiterte Syntax: SELECT <column_list> FROM <table_name> AS OF TIMESTAMP <timestamp>; SELECT <column_list> FROM <table_name> VERSIONS BETWEEN <start_timestamp> AND <end_timestamp>; Seite 1-50
Flashback Query Beispiel 1: SQL>SELECT * FROM dept 2> AS OF TIMESTAMP 3> to_timestamp('02-03 03-2004 07:00:00','dd-mm mm-yyyy hh24:mi:ss'); DEPTNO DNAME LOC ------------ --------------- ------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 50 IT FRANKFURT Seite 1-51
Flashback Query Beispiel 2: SQL> SELECT deptno, dname, loc, versions_operation, 2> versions_xid, versions_starttime 3> FROM scott.dept 4> versions between timestamp minvalue and maxvalue 5> ORDER BY deptno, versions_starttime DEPTNO DNAME LOC V VERSIONS_XID VERSIONS_STARTTIME ---------- -------------- ------------- - ---------------- ------------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 50 IT FRANKFURT 50 MARKETING FRANKFURT U 1E000A0008000000 02.03.04.04 09:30:02 50 FRANKFURT U 1E000B0008000000 02.03.04.04 09:31:15 50 FRANKFURT D 1E000C0008000000 02.03.04.04 09:32:20 8 Zeilen ausgewählt Seite 1-52
Flashback Transaction Query Undo SQL nach mehreren Änderungen: SQL> 1 SELECT undo_sql 2 FROM flashback_transaction_query 3 WHERE table_owner = 'SCOTT' 4 AND table_name = 'DEPT' 5* ORDER BY commit_timestamp desc UNDO_SQL ----------------------------------------------------------------------------------------- insert into "SCOTT"."DEPT"("DEPTNO","DNAME","LOC") values ('50','UUuuups','Frankfurt');'UUuuups','Frankfurt'); update "SCOTT"."DEPT" set "DNAME" = 'MARKETING' where ROWID = 'AAALy6AAEAAAAAOAAA'; AALy6AAEAAAAAOAAA'; update "SCOTT"."DEPT" set "DNAME" = 'IT' where ROWID = 'AAALy6AAEAAAAAOAAA'; Seite 1-53
Bewertung: Flashback Transaction Query Plus: Erlaubt unkomplizierte Nachverfolgung von Änderungen Übersichtlich und einfaches generieren von UNDO SQL Statements Minus: Miserable Zugriffsgeschwindigkeit Bei Updates unzuverlässig Seite 1-54
Flashback Table und Flashback Drop Flashback Table und Flashback Drop stehen ab 10g zur Verfügung Flashback Table nutzt ebenfalls Undo TS. Flashback Drop basiert auf Recycle Bin. SQL> FLASHBACK TABLE dept 2 TO TIMESTAMP to_timestamp('02.03.2004 09:30'); SQL> FLASHBACK TABLE dept to BEFORE DROP; Seite 1-55
Flashback Drop im EM 10g Seite 1-56
Recycle Bin Anzeige der Objekte im Recycle Bin SQL> show recyclebin ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME ---------------- ------------------------------ ------------ ------------------- DEPT RB$$48444$TABLE$0 TABLE 2004-03-0202 10:29:40 Leeren des Recycle Bin DROP TABLE dept PURGE; -- Löscht die Tabelle endgültig PURGE RECYCLEBIN; -- Leert den Recycle Bin Seite 1-57
Flashback Table im EM Gestattet graphische Auswahl der Undo Optionen. Ist einfach zu bedienen. Derzeit sehr schlechte Antwortzeiten. Seite 1-58
Flashback Table im EM Seite 1-59
Flashback Database Wurde mit Oracle 10g eingeführt. Muss zuvor mit ALTER DATABASE FLASHBACK ON aktiviert worden sein. Größe des Flash Recovery Area sowie der DB Parameter db_flashback_retention_target bestimmen, wie weit zurückgesetzt werden kann. Flash Recovery Area kann für die Flashback Logs, die inkrementellen Backups und die archivierten Redo Logs verwendet werden. Seite 1-60
Flashback Database Umsetzen in den Flashback Mode -- 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; Seite 1-61
Flashback Konfiguration Im EM 10g: Seite 1-62
Was haben wir gesehen? Real Application Cluster Hardware voll nutzbar (Skalierung) Schützt nicht vor Site-Fehlern Data Guard Schützt vor Site-Fehler Skaliert nicht Flashback Bei Einsatz von Flashback Database: Zwangsläufig Datenverlust Seite 1-63
Unschlagbar: Kombinationen aus HA-Technologien Real Application Cluster und Data Guard: In 10g ist der Enterprise Manager cluster aware Standby DBs können problemlos an einen RAC angehängt werden Seite 1-64
Flashback und Standby Datenbanken Benutzerfehler konnte man in 9i und kann man auch in 10g schon durch ein delayed apply abfangen. In 10g ist Flashback Database eine gute Alternative Kombination aus Flashback Database und Standby Datenbank ist möglich: Flashback auf Standby mit alter database flashback on; aktivieren. Bei Benutzerfehler: flashback database to scn <scn_vor_benutzerfehler>; Standby DB readonly öffnen. Möglichkeiten: Failover auf Standby DB, Export der Benutzertabellen len oder Übertragen der gelöschten Daten auf Primary DB via Database Link. Seite 1-65
Literatur Literaturübersicht zum Thema: http://www.oracle-10g 10g-buch.de/ buch.de/html/buecher_gesamtuebersicht.htm Hinweise zur Konfiguration Paper: Kurzübersicht der Oracle Technologien Hinweise zur Konfiguration RAC-Paper Paper: : Konfiguration einer Firewire Disk für den Shared Disk-Zugriff RAC, Data Guard und Flashback: Download unter www.oracle-10g.de Seite 1-66
Weblinks http://www.oracle.de Oracle Deutschland http://www.oracle-10g.de Informationen rund um Oracle 10g http://otn.oracle.com Oracle Technet: Kostenfreier Zugang zu Oracle Trial Software, Dokumentation, Code Beispielen http://metalink.oracle.com Oracle Support Seiten, Download von Patches, Bug Reports http://www.dba www.dba-village.com Kostenfreier Zugang zu Foren, Oracle Skripts, Dokumentationen, W hite Papers und Artikeln rund um Oracle Seite 1-67
Downtime Kalkulatoren im Web Folgende Seiten unterstützen eine Berechnung der Downtime-Kosten Kosten: http://www.mimix.com www.mimix.com/solutions/downtimecalc.asp http://www.dpair.com www.dpair.com/downtime.htmdowntime.htm http://www.syan.co.uk www.syan.co.uk/prods/man-calc.htp http://www.coreprotect.com www.coreprotect.com/calculator.htmlcalculator.html http://www.hwcs.com www.hwcs.com/products/sysb-ii/roi/calculator.asp http://users.pandora.be users.pandora.be/phvg/availabilitytranslator.htm http://www.zebralogic.com www.zebralogic.com/calc.htmlcalc.html Seite 1-68
Fragen und Antworten Kontakt: andrea.held@dp-itsolutions.de sowie andrea.held@held-informatik.de Vielen Dank für Ihre Aufmerksamkeit!! Seite 1-69