<Insert Picture Here> Wie die Datenbank ILM unterstützt Oracle Data Warehouse Detlef Schröder, Leitender Systemberater BI & DWH Oracle Deutschland B.V.&Co. KG
Information Lifecycle Die neuesten Daten stehen im Fokus Alle Daten müssen verfügbar sein 2009 2006-2008 Vor 2006 Aktiv weniger Aktiv Historisch Archiv
Agenda: Partitioning Compression ILM Backup
Partitioning
Partitioning unterstützt viele Aufgaben Query Performance Partition Pruning Partitioning Ladeprozess Unterstützung ILM (Information Lifecycle Management) Leichterer Umgang mit Indizierung Unterstützung im Backup-Prozess Unterstützung bei der Aktualisierung von Materialized Views (Partition Change Tracking) Partitionierungs- Kriterium fachlich anwendbar oder nicht? Partitioning Typ: - Range - List - Hash Unterstützung bei der Komprimierung Hochverfügbarkeit auch während des Ladens und Maintenance
Partitioning Die Grundfunktionalität Local Index Kollektive Sicht auf alle Daten SELECT... FROM... Global Partitioned Index Global Index Partitionsbezogene Sicht ADD, DROP, SPLIT, MOVE, MERGE, TRUNCATE, COMPRESS
Partitioning Die Grundfunktionalität Kollektive Sicht Partition-bezogene Sicht Local Index Performance SELECT... FROM... Manageability Availability Global Partitioned Index Global Index Separate Compression Read Only TS versch. Platten Basis für ILM Backup / Recovery Scheduled Downtime Archiving ADD, DROP, SPLIT, MOVE, MERGE, TRUNCATE, COMPRESS Hilfsmittel im ETL PEL Local Indexing
Wie wird partitioniert Partition Key Eine oder mehrere Spalten in der Tabelle bestimmen den tatsächlichen Speicherort eines Datensatzes Separate Tablespaces Pro Partition einen eigenen Tablespace Vereinfachte Wartung Tablespace Segment Extent Blocks
Partitioning ist transparent Gesamte Tabelle selektieren SELECT * FROM orders; Alle Partitionen werden selektiert Abfrage nur auf eine Partition SELECT * FROM orders WHERE order_dat between to_date Partition ('2007-01-01') Pruning: AND to_date ('2007-01-31'); Automatische Beschränkung auf betroffene Partition SQL-Abfrage ist von Partitionierung unabhängig Jan 2007 Feb 2007 Mär 2007 Apr 2007 Mai 2007 Jun 2007
Verschiedene Varianten Partitioning-Typen Range List Hash Reference Interval System Virtual Column Subpartitioning-Typen Range - Hash Range - List Range - Range List - Range List - Hash List - List
CREATE TABLE "BESTELLUNG" ( "BESTELLNR" NUMBER(10) NOT NULL, "KUNDENCODE" NUMBER(10), "BESTELLDATUM" DATE, "LIEFERDATUM" DATE, "BESTELL_TOTAL" NUMBER(12, 2), "AUFTRAGSART" VARCHAR2(30), "VERTRIEBSKANAL" NUMBER ) PARTITION BY LIST ("VERTRIEBSKANAL") SUBPARTITION BY LIST ("AUFTRAGSART") SUBPARTITION TEMPLATE ( SUBPARTITION Produkt VALUES ('ARTIKEL','TAUSCHWARE','PRODUKT'), SUBPARTITION Service VALUES ('SERVICE','REISE'), SUBPARTITION Storno VALUES ('RETOURE','KOMMISSION'), SUBPARTITION Andere VALUES (default) ) ( PARTITION Telefon VALUES (1,2,3), PARTITION Aussendienst VALUES (4,5), PARTITION Web VALUES (6,7), PARTITION PARTNER VALUES (8,9,10) ); Beispiel List - List select sum(bestell_total) from bestellung subpartition (partner_storno) group by Kundencode; --------------------------------------------------------------------------------------------------- Id Operation Name Rows Bytes Cost (%CPU) Time Pstart Pstop --------------------------------------------------------------------------------------------------- 0 SELECT STATEMENT 5 60 19 (6) 00:00:01 1 PARTITION LIST ALL 5 60 19 (6) 00:00:01 1 4 2 HASH GROUP BY 5 60 19 (6) 00:00:01 3 PARTITION LIST ALL 1000 12000 18 (0) 00:00:01 1 4 4 TABLE ACCESS FULL BESTELLUNG 1000 12000 18 (0) 00:00:01 1 16 ---------------------------------------------------------------------------------------------------
...Und zu guter Letzt: Partition Advisor Erweiterung des SQL Access Advisors Partitionierung von nicht-partitionierten Materialized Views, Tabellen und Indizes Generierung von ausführbaren Skripts Nutzung via EM Tuning Pack Package DBMS_ADVISOR
Partition Exchange Loading (PEL) Financial Production Temporäre Tabelle Neuer Monat Human Res. Store Supplier P1 P2 P3 P4 Z1 Z2 Z3 Z4 4 4 9 8 Monat 13 Zeit Marketing Service Parallel Direct Path INSERT (Set Based) CREATE TABLE AS SELECT (CTAS) CREATE Indizes / Statistiken anlegen EXCHANGE Tabelle Unvergleichbar schnell! Monat 12 Monat 11 Monat 10 DROP PARTITION Faktentabelle Region
Partition Exchange Loading (PEL) -- Leere Partition an Zieltabelle hinzufügen ALTER TABLE Bestellung ADD PARTITION "Nov08" VALUES LESS THAN (to_date('30-nov-2008','dd-mon-yyyy')); 1 -- Neue leere temporäre Tabelle erstellen CREATE TABLE Bestellung_temp AS SELECT * FROM Bestellung WHERE ROWNUM < 1; 2 -- Inhalte laden INSERT INTO "PART"."BESTELLUNG_TEMP" (BESTELLNR, KUNDENCODE, BESTELLDATUM, LIEFERDATUM, BESTELL_TOTAL, AUFTRAGSART, VERTRIEBSKANAL) VALUES ('2', '3', TO_DATE('23.Nov.2008', 'DD-MON-RR'), to_date('23.nov.2008', 'DD-MON-RR'), '44', 'Service', '6'); 3 Commit; -- Erstellen Index auf temporäre Tabelle CREATE INDEX Ind_Best_Dat_Nov ON Bestellung_temp ("BESTELLNR") NOLOGGING PARALLEL; -- Temporäre Tabelle an die Zieltabelle anhängen ALTER TABLE Bestellung EXCHANGE PARTITION "Nov08" WITH TABLE Bestellung_temp INCLUDING INDEXES WITHOUT VALIDATION; 5 4
Einsatz von Compression
Anwendung für Komprimierung Nicht nur für Indizes Strukturierte Daten in Tabellen (bzw. Partitionen) mit DIRECT Load Mit Advanced Compression auch für Unstrukturierte Datentypen (SecureFiles) Konventionelles DML (OLTP Compression) DataPump Daten und RMAN Redo Traffic mit Data Guard Redo Logs Standby Backups
Konzept der Table Compression Unkomprimierter Block Komprimierter Block Lokale Symboltabelle Mehr Daten pro Block
Advanced Compression in Oracle 11g Overhead Free Space Uncompresse d Compressed Inserts are again uncompress ed Inserts are uncompress ed Block usage reaches PCTFREE triggers Compression Block usage reaches PCTFREE triggers Compression
Tabellen-Komprimierung in 11g Komprimierungseinstellung durch CREATE TABLE beim Neuanlegen ALTER TABLE MOVE COMPRESS bei existierenden Daten ALTER TABLE MOVE PARTITION COMPRESS bei Partitionen Beispiel - Syntax: CREATE TABLE sales_history( ) COMPRESS FOR BASIC OLTP Im Enterprise Manager:
Welche Daten komprimiert werden Strukturierte Daten Numbers Character Semistrukturierte Daten Dokumente Spreadsheets XML Unstrukturierte Daten Media Bilddaten Medizinische Daten OLTP Table Compression (Advanced Compression und normale Compression) SecureFiles Compression (Advanced Compression)
Eigenschaften OLTP Table Compression Block-Autonomie: Komprimierte, nicht komprimierte und halb komprimierte Blöcke existieren nebeneinander Batch-Compression Redundanzen in einem Block aufgelöst Blöcke liegen im Data Cache komprimiert vor Alle Informationen zur Dekompression eines Datensatzes liegen in seinem Block Schnelle Dekompression durch einfaches Pointing beim Lesen
Verwendung OLTP Table Compression Parameter COMPATIBLE in der INIT.ORA auf 11.1 oder 11.2 Erweiterung von COMPRESS COMPRESS [FOR {BASIC OLTP }] Default: DIRECT_LOAD OPERATIONS OLTP und Direct Loads: OLTP (kostenpflichtige Advanced Compression Option, kurz: ACO) Tabelle oder Tablespace anlegen CREATE TABLE... COMPRESS FOR OLTP; CREATE TABLESPACE... COMPRESS FOR OLTP; Tabelle erbt Komprimierung vom Tablespace
Verwendung OLTP Table Compression Compression für existierende Tabelle einschalten ALTER TABLE t2 COMPRESS FOR OLTP; Keine Komprimierung für existierende Datensätze Existierende Tabelle komprimieren ALTER TABLE MOVE COMPRESS; ALTER TABLE MOVE COMPRESS FOR OLTP; ALTER TABLE MOVE PARTITION COMPRESS; Partitionen: Lokale Bitmap Indizes werden UNUSABLE Normale Komprimierung mit PCTFREE=0, Advanced Compression mit PCTFREE=10
Best Practices OLTP Table Compression Komprimieren der zehn größten Tabellen 20% der Tabellen verbrauchen 80% des Speicherplatzes Bessere Kompressionsraten mit größeren Blöcken Höhere Wahrscheinlichkeit mehrfacher gleicher Werte Sortiertes Laden nach nicht selektiven Spalten B-Tree Index Kompression Index validieren und INDEX_STATS analysieren index_stats.opt_compr_count liefert Prefix Länge N index_stats.opt_compr_pctsave liefert Einsparung in % Bitmap CREATE Indexes INDEX sind idx_comp an sich hoch ON komprimiert... COMPRESS N; Geeignet für niedrige bis mittlere Kardinalität
Komprimierung im Überblick Komprimierung Index Strukturierte Tabellendaten Unstrukturierte Daten Reorganisation Data pump RMAN Data Guard Algorithmus Bitmap und komprimierter Index Für alle Arten von Operationen: FOR BASIC OLTP Möglich mit SecureFiles COMPRESS, DEDUPLICATION Nicht notwendig Mit Option COMPRESSION=ALL CONFIGURE COMPRESSION ALGORITHM='...' LOG_ARCHIVE_DEST_3= '...COMPRESSION=ENABLE' Unterschiedlich je nach Einsatz
Abschätzen der Compression Ratio Compression Advisor (für Oracle 9i und höher) http://www.oracle.com/technology/products/database/compression/compression-advisor.html
Informationen Advanced Compression auf OTN: http://www.oracle.com/database/advanced-compression.html Data Sheet: http://www.oracle.com/technology/products/database/oracle11g/ pdf/advanced-compression-datasheet.pdf White Paper: http://www.oracle.com/technology/products/database/oracle11g/ pdf/advanced-compression-whitepaper.pdf
Information Life-cycle Management (ILM) <Insert Picture Here>
Kostenentwicklung im Data Warehouse Anteile Kosten für schnelle und ausfallsichere Platten Datenvolumen 60 50 40 30 20 10 Lesezugriffe / Datenaktivitäten 0-3 -2-1 heute Jahre
Information Lifecycle Management (ILM) mit Oracle ASM Dieser Monat Dieses Jahr Vorjahre Aktiv Weniger Aktiv Historisch Archiv Disk Gruppe P Disk Gruppe L Disk Gruppe H Current Month Last 11 months Year 2002 and 2001 and 2000 Years 1995-1999 High End Speicher Mittlere Systeme Kostengünstiger Speicher
Partitioning und ILM Assistent 80% 15% September Laden und Lesen Oktober Okt 08 Sep 08 High End Speicher 3% August Aug 08 komprimiert 1% 1% Juli Juni Jul 08 komprimiert Jun 08 komprimiert Mai 08 komprimiert Mittlere Systeme Apr 08 komprimiert Mar 08 komprimiert. Kostengünstiger Speicher
Rechenbeispiel 1 Terabyte Plattenplatz High End Speicher Mittlere Systeme Kostengünstiger Speicher 40 / GB 8 / GB 1 / GB 5% aktiv 35% weniger aktiv 60% Historisch 40*1000*0,05 8*1000*0,35 1*1000*0,60 2000 2800 600
Rechenbeispiel 1 Terabyte Plattenplatz Ohne ILM 40 *1000 Mit ILM 2000 2800 600 Mit ILM und Compression (Faktor 2,5) 2000 / 2,5 2800 / 2,5 600 / 2,5 40.000 5.200 + Partition Software 2.160 + Partition Software
Hochrechnung auf größere Datenmengen Euro 200000 150000 100000 Ohne ILM Die Unterschiede vergrößern sich überproportional mit dem Wachsen der Datenmenge 50000 Mit ILM Mit ILM und Compression 0 1 2 3 4 Terabyte
Automatisierung mit dem ILM Assisten
Berechnung der Kostenersparnis im ILM Assistenten
Backup im Data Warehouse <Insert Picture Here>
Warum eine eigene B&R - Strategie für das Data Warehouse Kosten! Kosten! Kosten! Datenmengen sind viel größer Kosten für OLTP analoge Verfahren zu hoch Änderungsvorgänge finden kontrolliert statt Keine Online Updates durch Benutzer Zeitpunkt - bezogene Batch Läufe sind wiederholbar Fehlerhafte Daten können gezielt wieder entladen werden Ein Warehouse enthält oft historische Daten Statische Daten die nicht mehr geändert werden Sind bereits gesichert und müssen nicht regelmäßig neu gesichert werden
Gezielte Backup-Strategie für das DWH Neue Ladeperiode EXCHANGE New Month Recovery Manger (RMAN) Read Only Read Only Read Only Read Only Month 13 Month 12 Month 11 Month 10 Drop Partition Archiv
Backup Inkrementelles Sichern (kein Full Backup). Arbeiten mit Read-Only Tablespaces. Wiederherstellung von Datenbeständen durch Wiederholung von ETL-Läufen berücksichtigen. Flashback-Funktionalität nutzen, um eine Recovery- Fähigkeit zu erreichen. Keine Daten sichern, die durch Lade-Prozesse oder Aggregationen wieder herstellbar wären. Kein Backup für Stage-Bereich.
Backup Management List RMAN backups Listet alle Backups auf Perform maintenance Löschen obsoleter Backups mit einem einzigen Click
DW Recovery Methode Best Practice#3 Read-Only Tablespaces Verwendung von Partitionierung und Read-only Tablespaces zur Minimierung der Datenmenge Read-only Tablespaces müssen nur einmal gesichert werden Ältere Daten können können sehr leicht zu Read Only Tablespaces konvertiert werden Sichern mit RMAN Achtung: Hier wird Backup Zeit gespart, nicht Recovery - Zeit Jan Feb Mar Apr May Jun Jul Read-only Tablespace Read-write Tablespace Read-write Tablespace
DW Recovery Methode Best Practice#4 Nologging Operations Die meisten Data Warehouse Systeme nutzen NOLOGGING Operationen um Bulk-data Processing zu erreichen Wöchentliches Backup des DWH Tägliches Speichern der neuen Lade-Inkremente