Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Oracle Data Warehouse – ETL in der Datenbank / Zusammenspiel mit Nicht- Oracle – ETL - Tools Alfred Schlaucher DATA WAREHOUSE.

Ähnliche Präsentationen


Präsentation zum Thema: "Oracle Data Warehouse – ETL in der Datenbank / Zusammenspiel mit Nicht- Oracle – ETL - Tools Alfred Schlaucher DATA WAREHOUSE."—  Präsentation transkript:

1

2 Oracle Data Warehouse – ETL in der Datenbank / Zusammenspiel mit Nicht- Oracle – ETL - Tools Alfred Schlaucher DATA WAREHOUSE

3 Click to edit title Click to edit Master text styles Insert Picture Here Ziele Oracle DWH Architektur zur Einordnung Anforderungen an den ETL Prozess Hilfsmittel in der Datenbank (Übersicht) Vorgehensweise im ETL-Prozess Hardware und Umgebungsarchitektur Themen

4 Click to edit title Click to edit Master text styles Insert Picture Here Ziele Oracle DWH Architektur zur Einordnung Anforderungen an den ETL Prozess Hilfsmittel in der Datenbank (Übersicht) Vorgehensweise im ETL-Prozess Hardware und Umgebungsarchitektur Themen

5 Click to edit title Click to edit Master text styles Insert Picture Here Ziele Optimierung des Datenbank-Einsatzes in einem Oracle-DB basierten Data Warehouse Blick für eine Best Practise Oracle Architektur öffen Aufhellen der Black Box Datenbank Bessere Lastverteilung zwischen Komponenten (ETL-Server / DB-Server) Auflösen von Engpässen Aufzeigen von optimalen Wegen

6 Click to edit title Click to edit Master text styles Insert Picture Here Data Warehouse Black Box DWH-DB transparent machen

7 Click to edit title Click to edit Master text styles Insert Picture Here Ziele Oracle DWH Architektur zur Einordnung Anforderungen an den ETL Prozess Hilfsmittel in der Datenbank (Übersicht) Vorgehensweise im ETL-Prozess Hardware und Umgebungsarchitektur Themen

8 Click to edit title Click to edit Master text styles Insert Picture Here Was macht das DWH-Konzept so erfolgreich (auch nach 15 Jahren) ? Zentrale Bereit- stellung Business- Daten Semantik Historisch (-> Trends) Entkop- plung von op. System Flexibel und unabhängig von operativen Anwendungen analysieren können Daten sollten zentral und leicht für alle Benutzergruppen gleichermaßen zugänglich sein Daten sollten leicht verstehbar sein - Informationen statt Daten - Semantische Zusammen- hänge Trendfähige Informationen durch Aufbewahrung und Aufbereitung historischer Daten A 7

9 Click to edit title Click to edit Master text styles Insert Picture Here Evolution des Data Warehouse ¾ unserer Kunden nutzen ihr DWH auch zu operativen Zwecken Komplexe Informations- Ausarbeitung und Analysen Jahr/Quartal/Monat Periodische Berichte Woche/Tag oft und schnell wiederholbare Einzel- informationen Stunde/Minute/Sekunde/Realtime überschaubar Hochvolumig / granular Taktisch Überschaubar / aggregiert DWH Strategisch Operativ 8

10 Click to edit title Click to edit Master text styles Insert Picture Here Die 3-Schichten-Architektur Schlagwörter: Stabilität Kurze Lieferzeit Konsolidiert Alle Zielgruppen Das Ziel der 3-Schichten-Architektur ist der Entwurf einer möglichst umfassenden, mehrere Unternehmens- und Themenbereiche abdeckenden stabilen Informationsablage, die in kurzer Zeit konsolidierte Berichte und Analysen für alle (!) Zielgruppen des Unternehmens bereitstellt. 9

11 Click to edit title Click to edit Master text styles Insert Picture Here PD4711 AMKLB KLABAUTER IIO ??? EERWEERW EU-Wert i PRODUKTDATEN Produktsparten Spartenname Spartennr Produktgruppen Gruppenname Gruppennr Produkte Produktname Produktenr Einzelpreis Müll, Altlast, unverständliche Daten Operative Daten Normalisierte Daten (DWH) Spartenname Spartennr Gruppenname Gruppennr Produktdaten Produktname Produktenr Einzelpreis Neu sortierte Daten Prinzip Normalisieren / Denormalisieren Granularisierung als Lösung Verständliche Information (denormalisiert) Granulare Daten Im DWH 10

12 Click to edit title Click to edit Master text styles Insert Picture Here Das Neutralitätsprinzip des DWH Any Source/Target System Enterprise Information Layer (Kern DWH) Data Integration User View Layer (Data Marts) Data Integration Layer (Stage) Process neutral / 3 NF Any User Group Prüfen Integrieren Harmonisieren Standardisieren Erweitern Verbinden In Beziehung setzen Anwenden Aufbereiten Aggregieren Rohdaten Angebot Bedarf Redundanzen Anwendungs- neutral, granular, Zeit-neutral Neutral gegenüber Vorsystemen, Sprachen, OS Neutral gegenüber Endbenutzern: Alle User! Alle Tools! 11

13 Click to edit title Click to edit Master text styles Insert Picture Here Reporting & Publishing Ad-hoc Analysis Office Integration Mobile Scorecards Interactive Dashboards BI Server Oracle Database Management System Oracle Data Warehouse Architektur für unternehmensweites Datenmanagement Data Integration Real Time & Batch Any Source Controlling Financial Marketing Sales HR BI Apps Dynamic Data Marts Data Quality Rules Checks&Monitoring DWH Logistic Utilities Business Catalogue Technical Auditing Metadata Utilities Lifecycle Management Concept DWH System Monitoring Utilities DWH Security Utilities DWH Backup / Recovery Concept Concept Framework Big Data Appliance Exadata Exalytics Operational Data Layer Information Layer Architecture Concept Enterprise Information Layer User View Layer Data Integration Layer noSQL Hadoop Big Data Solution Reference Data ModelsData Management Concept InDatabase ROLAP InDatabase MOLAP InDatabase Data Mining R InDatabase Optimiertes Netzwerk Server Cluster Operating System Optimized Network Storage Hierarchy Server Cluster Exadata / Database Machine / Exalytics

14 Click to edit title Click to edit Master text styles Insert Picture Here Regeln einer effizienten DWH-Architektur Orientierung an den Informationsbedürfnissen der Benutzer Granularisierte 3NF-DWH Schicht schafft Neutralität gegenüber Vorsystemen Flexibilität bei der Bereitstellung neuer Abfragemodelle Über Data Mart-Grenzen hinweg gemeinsam genutzte Berechnungen Aggregationen usw. so früh wie möglich umsetzen Zusammenhängende Data Mart-Schicht Mehrfachnutzung von Dimensionen Geschickter Umgang mit sehr großen Faktentabellen Eher granulare Informationen auch in den Fakten-Tabellen Alle Schichten in einem DB-Raum Ein zusammenhängender DB-Server-Cluster zum Verhindern unnötiger Wege In-Database-Aktiviäten (Prüfen/Laden) Ein zusammenhängender DB-Server-Cluster zum Verhindern unnötiger Wege 1:1 Kopien verhindern Bereits beim Lesen in die Vorsysteme einfache Prüf- und Filteraktivitäten Updates und einzelne Deletes vermeiden ETL wiederholbar aufbauen

15 Click to edit title Click to edit Master text styles Insert Picture Here Multidimensionales Modell (Star Schema) Artikel A1 A2 A3 A4 A1 A2 A3 A Verkäufe Art1 Art2 Art3 Art4 1 : n Z1 Z2 Z3 Z Zeit Q3 Z1 Z2 Z3 Z4 n : 1 Regionen R1 R2 R3 R4 Nord Sued West Ost R1 R2 R3 R4 Kunde Maier Müller Schmid Engel V1 V2 V3 V4 V1 V2 V3 V4 1:n1:n n : 1 Einstiegspunkte für Anwender-Abfragen Star Schema Flexibel Graphisch auch für Business-User verständlich P P F F Blau Gelb Rot Lila Schwach Mittel Hoch Schwach Status Farbe Wohndichte 14

16 Click to edit title Click to edit Master text styles Insert Picture Here Dimensionen Artikelgruppe Sparte Dim_Artikel Artikel_Langtext Artikelsparte Artikel Artikel_Schlüssel Artikelgruppe_Langtext Artikelsparte_Langname Parent Fakten Levelschlüssel Levelschlüssel/ Objektname Levelschlüssel Business Key Künstlicher Dimension Key Dim_Schlüssel Aggregation 15

17 Click to edit title Click to edit Master text styles Insert Picture Here Star vs. Snowflake Schema 16

18 Click to edit title Click to edit Master text styles Insert Picture Here Das Schichten-Modell als Hilfestellung bei der Planung des ETL-Prozesses Any Source/Target System Enterprise Information Layer Data Integration User View Layer Data Integration Layer Process neutral / 3 NF Any User Group Operational Data Layer 17 Oracle Data Warehouse

19 Click to edit title Click to edit Master text styles Insert Picture Here Lade-Aktivitäten an Schichtübergängen Integration Enterprise User View Flüchtige Daten PersistentKopien / teilpersistent dynamisch Kopieren Selektieren Generische Datenstrukturen (isolierte Tabellen, teil-ausgeprägte Datentypen) Keine Constraints 3 NF Datenstrukturen (ER-Tabellen, ausgeprägte Datentypen) Aktivierte Constraints Multidimensionale Modelle (ER-Tabellen, ausgeprägte Datentypen) Mengenbasiertes Prüfen ohne Constraints Umschlüsselung Lookups -> Referenz-/Stammdaten Joins Aufbauen von Distinct-Strukturen (Normalisieren) Umschlüsselung Lookups -> Dimensionsdaten Joins - Denormalisieren Normalisieren (Granularisieren) 18 Denormalisieren Historisieren z.T. Aggregieren Clearing-Verfahren, technisches, logisches, semantisches Prüfen

20 Click to edit title Click to edit Master text styles Insert Picture Here Durch führes Transformieren Synergien ermöglichen Any Source/Target System Enterprise Information Layer Data Integration User View Layer Data Integration Layer Process neutral / 3 NF Any User Group Operational Data Layer ETL: Kosten pro Kund e ETL: Kosten pro Kund e ETL: Kosten pro Kund e ETL: Kosten pro Kund e ETL: Kosten pro Kund e Die frühest mögliche Stelle finden

21 Click to edit title Click to edit Master text styles Insert Picture Here Verteilte Server zwingen oft zu unproduktiven 1:1 Ladevorgängen Enterprise Information Layer User View Layer Data Integration Layer Process neutral / 3 NF User View Layer 1:1 Vorsystem mit Vorrechner Vorsystem 1:1

22 Click to edit title Click to edit Master text styles Insert Picture Here Eine Hardware (bzw. Cluster) ermöglicht flexibles Handeln durch kurze Wege Enterprise Information Layer User View Layer Data Integration Layer Process neutral / 3 NF Freie Wahlmöglichkeit für Ort und Art des ETL

23 Click to edit title Click to edit Master text styles Insert Picture Here Synergien ermöglichen Any Source/Target System Enterprise Information Layer Data Integration User View Layer Data Integration Layer Process neutral / 3 NF Any User Group Operational Data Layer ETL: Kosten pro Kund e ETL: Kosten pro Kund e ETL: Kosten pro Kund e ETL: Kosten pro Kund e ETL: Kosten pro Kund e Die frühest mögliche Stelle finden

24 Click to edit title Click to edit Master text styles Insert Picture Here Stage – Funktion Arbeitsschicht für alles, was der technischen Bearbeitung unterliegt Überprüfung von Syntaktischer Korrektheit (Typ, Länge, NULL) Vollständigkeit der Daten und Mengenverhältnisse Gültigen Wertebereichen Vorhandensein von Referenzdaten Eindeutigkeit (optional) Eliminierung von NULL-Werten Zusammenführung operativ getrennter Daten Bilden neuer Informationsobjekte mit dem Ziel der einfacheren Weiterverarbeitung (optional) Waisen-Management (optional) Bildung von Daten-Deltas (optional) 23

25 Click to edit title Click to edit Master text styles Insert Picture Here Stage – Verarbeitung Keine 1:1-Kopien Keine besonderen Datenmodell-Strukturen Wenn möglich, bereits beim Extrahieren Prüfungen und Wandlungen von Daten vornehmen Keine Indizes verwenden Stage ist leer, wenn nicht geladen wird 24

26 Click to edit title Click to edit Master text styles Insert Picture Here Die Schichten im Detail Die (Kern-) Data Warehouse - Schicht Any Source/Target System Enterprise Information Layer Data Integration User View Layer Data Integration Layer Process neutral / 3 NF Any User Group Operational Data Layer 25 Oracle Data Warehouse

27 Click to edit title Click to edit Master text styles Insert Picture Here DWH-Kerndatenschicht Aufgaben und Ziele Eindeutigkeit aller Objekte und Namen Redundanzfreiheit aller Informationen Langlebigkeit der Daten (Historisierung) Granulare Informationen als Bausteine für neue Informationszusammenhänge 26

28 Click to edit title Click to edit Master text styles Insert Picture Here DWH-Kerndatenschicht 3 Normalform (3 NF) Subjekt-bezogen In Teilbereiche (Subject Areas) gegliedert Anwendungs- und Geschäftsprozess-neutral Objekte werden in mehreren Geschäftsprozesse benötigt Daten müssen tauglich genug sein, um sie in allen Anwendungen zu verwenden Datenarten Stammdaten (historisiert) Referenzdaten – externe / interne, allgemeine Sammlungen Bewegungsdaten (angesammelt) 27

29 Click to edit title Click to edit Master text styles Insert Picture Here Ziele Oracle DWH Architektur zur Einordnung Anforderungen an den ETL Prozess Hilfsmittel in der Datenbank (Übersicht) Vorgehensweise im ETL-Prozess Hardware und Umgebungsarchitektur Themen

30 Click to edit title Click to edit Master text styles Insert Picture Here ETL-Lösung Backbone des DWH Transfer-Medium über alle Schichten hinweg Vermittlungsfunktion Übernimmt oft Dokumentationsaufgabe Bewegen großer Datenvolumina bei gleichzeitiger komplexer Transformation Standard-Lösung wird benötigt Nicht zu komplex (Entwickler-Spielzeug) Verständlich auch für Business User Leichte Erklärbarkeit für Dritte 29

31 Click to edit title Click to edit Master text styles Insert Picture Here Ziel / Aufgabe eines DWH-Ladeverfahrens Bereitstellen von Daten in adäquater Weise Zeitlich passend Richtige Form Passende Inhalte Daten so ablegen, dass man sie wiederfindet Dokumentation Daten Ressourcen-ökonomisch speichern Berücksichtigung von Plattenplatz 30

32 Click to edit title Click to edit Master text styles Insert Picture Here Was wird geladen? Es sollte nur das geladen werden, was wirklich gebraucht wird Gibt es einen Auftrag für das Laden bestimmter Daten? Wer braucht die Daten? Welche Daten werden gebraucht? Sind die zu ladenden Daten in einem brauchbaren Zustand? Welche Anforderungen sind an Quelldaten zu stellen? Wer definiert die Anforderungen? 31

33 Click to edit title Click to edit Master text styles Insert Picture Here Lade-Aufwand minimieren Ladeläufe orientieren sich an den Daten, die man braucht Erst die Datenstrukturen sortieren, bevor man Ladeläufe plant Zur Orientierung hilft das 3-Schichten-Modell: Staging Area DWH (3 NF) Data Marts 32

34 Click to edit title Click to edit Master text styles Insert Picture Here Die vier Funktionsbereiche des ETL 1.Integrieren 2.Informations-Mehrwerte 3.Kopieren 4.Sammeln 33

35 Click to edit title Click to edit Master text styles Insert Picture Here 1. Integrieren Identifizieren von identischen oder zusammenhängenden Informationen Synonymen-/Homonymen-Thematik Aggregationslevel angleichen Identifizieren und Angleichen Formate, Zustände, Sichtweisen etc Integrieren 2. Informations-Mehrwerte 3. Kopieren 4. Sammeln Betrag / Summe Artikel / Produkt Artikel / Artikelgruppe Meter / Kilometer Lose Stücke / Gebinde 34

36 Click to edit title Click to edit Master text styles Insert Picture Here 2. Informations-Mehrwerte Qualitativ gute Informationen schaffen Datenqualitäts-Checks Vollständigkeit Datentypen Referentielle Integrität Eindeutigkeit Korrekte Werte Fachliche Regeln überprüfen Berechnungen / Aggregationen / Zusammenfassungen Anreichern und Vermengen mit Referenzdaten Lookups Marktdaten Vergleichszahlen 1. Integrieren 2. Informations-Mehrwerte 3. Kopieren 4. Sammeln 35

37 Click to edit title Click to edit Master text styles Insert Picture Here 3. Kopieren 1:1-Datenbewegung Einfachste Aufgabe Mengen-Operationen Ohne zusätzliche Logik Überwindung von Systemgrenzen Vorschriften zum Mapping Schnittstellen-Konventionen Aspekt der Performance 1. Integrieren 2. Informations-Mehrwerte 3. Kopieren 4. Sammeln 36

38 Click to edit title Click to edit Master text styles Insert Picture Here 4. Sammeln Einlagern von Daten Zeitliche Rahmenvorgaben Historisierung Versionieren von Daten Kategorisieren / Inventarisieren von Daten Dokumentieren der eingelagerten Informationen Referenzen aufbauen Alterungs-Eigenschaften berücksichtigen Dokumentieren Mehr als nur eine Momentaufnahme 1. Integrieren 2. Informations-Mehrwerte 3. Kopieren 4. Sammeln 37

39 Click to edit title Click to edit Master text styles Insert Picture Here Daten-nahe Transformation im DWH Den richtigen Platz finden n-tier Application Server n-tier Application Server Quellsystem DWH-System ETL? 38

40 Click to edit title Click to edit Master text styles Insert Picture Here Aktivitäten in einem ETL-Prozess Standardfunktionen Insert, Update, Delete, Merge (Insert / Update) 1:1-Transformationen (reines Kopieren, auch mit minimalen Änderungen) Selektionen (z.B. Where-Klauseln, Bedingungen) Gruppierende Transformationen (Aggregationen, Sortieren, Segmentieren) Pivotierende Transformationen (Verändern der Kardinalität von Zeilen und Spalten) Berechnungen (einfache oder komplexe, Funktionen oder Programme) Formatieren von Daten Zusammenführende und spaltende Transformationen (Join / Split) Anreichernde Transformationen (Referenzen auslesen, Lookups, Konstanten, Fallunterscheidungen) Aussortieren / Trennen von Datenbereichen Prüflogik (logisch / fachliche und physisch / technische) Protokollierende Maßnahmen (Log Files, Statistiken) Steuerungen (Rules-Systeme) Kommunizieren mit anderen Systemen (Messages senden / empfangen / quittieren) 39

41 Click to edit title Click to edit Master text styles Insert Picture Here Generieren statt Programmieren Vorteile einer Tool-Unterstützung Vermindern von Fehlern durch Handprogrammierung Tabellen- und Spaltennamen müssen nicht mehr mühsam geschrieben werden Steuerung vieler Entwicklungsschritte durch Wizards Automatische Steuerung von Ziel- und Quellschemata Automatische Validierung (z.B. Typverträglichkeiten) Debugging der Laderoutinen Laufzeitumgebung steht bereit Wichtigster Grund: Dokumentation 40

42 Click to edit title Click to edit Master text styles Insert Picture Here Balance zwischen den beteiligten Komponenten finden DWH-Datenbank DWH-Server ETL-Server ETL-Engine

43 Click to edit title Click to edit Master text styles Insert Picture Here Balance zwischen den beteiligten Komponenten finden DWH-Datenbank DWH-Server ETL-Server ETL-Engine

44 Click to edit title Click to edit Master text styles Insert Picture Here Balance zwischen den beteiligten Komponenten finden DWH-Datenbank DWH-Server ETL-Server ETL-Engine Dokumentation Steuerung Benutzerfühung Rechen-Power Ausnutzen von bestehenden Ressource

45 Click to edit title Click to edit Master text styles Insert Picture Here Ziele Oracle DWH Architektur zur Einordnung Anforderungen an den ETL Prozess Hilfsmittel in der Datenbank Vorgehensweise im ETL-Prozess Hardware und Umgebungsarchitektur Themen

46 Click to edit title Click to edit Master text styles Insert Picture Here Hilfsmittel in der Datenbank (Auflistung) Parallelisierung Partitioning / Partition Exchange Load (PEL) Direct Path Load Set-Based SQL Pipelined Table Functions Materialized Views Kopiertechniken External Tables / Loader Transportable Tablespace Data Pump Database Link Direkt FTP-Load

47 Click to edit title Click to edit Master text styles Insert Picture Here Parallelisierung 46 Oracle Data Warehouse

48 Click to edit title Click to edit Master text styles Insert Picture Here Parallelisierung und Skalierung Abfragen SELECT JOIN -Operationen SORT -Operationen GROUP BY DDL CREATE TABLE / MV CREATE INDEX Online Index Rebuild DML INSERT UPDATE / DELETE MOVE / SPLIT PARTITION CPU SQL seriell 100% 50% I/O 100% 50% parallel SQL CPU I/O Ein SQL Statement wird vom Optimizer in kleinere Arbeitsschritte aufgeteilt und läuft skalierbar ab. 47

49 Click to edit title Click to edit Master text styles Insert Picture Here Monitoring der Parallelität SQL-Job in Warteposition Laufender SQL-Job mit Parallelität 8 Abgeschlossene SQL-Jobs

50 Click to edit title Click to edit Master text styles Insert Picture Here Parallelisierung eines Statements Statement in Warteposition (Queue) Automatisches Downgrade Potentiell höherer Bedarf

51 Click to edit title Click to edit Master text styles Insert Picture Here Master-/ Slave-Prozesse (Parallelisierung)

52 Click to edit title Click to edit Master text styles Insert Picture Here Ausführungsplan einer parallelisierten Abfrage

53 Click to edit title Click to edit Master text styles Insert Picture Here Voraussetzungen für Parallelisierung Hardware-Architektur Symmetric Multiprocessors (SMP) Clusters (RAC, Grid Computing) Massively Parallel Processing (MPP) Ausreichend I/O-Bandbreite Geringe oder mittlere CPU-Auslastung Systeme mit CPU-Auslastungen von weniger als 30% Genügend Hauptspeicher für speicherintensive Prozesse Sortierung Hashing I/O-Puffer 52

54 Click to edit title Click to edit Master text styles Insert Picture Here Degree of Parallelism (DOP) Automatic Degree of Parallelism PARALLEL_DEGREE_POLICY = AUTO Degree of Parallelism manuell festlegen ALTER TABLE sales PARALLEL 8; ALTER TABLE customers PARALLEL 4; Default Parallelism ALTER TABLE sales PARALLEL; Parallelisieren von Abfragen SELECT /*+ PARALLEL(b)n PARALLEL(a)n */ a,b,c FROM bestellung b, artikel a; SI : DOP = PARALLEL_THREADS_PER_CPU x CPU_COUNT RAC: DOP = PARALLEL_THREADS_PER_CPU x CPU_COUNT x INSTANCE_COUNT 53

55 Click to edit title Click to edit Master text styles Insert Picture Here Kontrolle über Parallelisierung behalten Parameter PARALLEL_DEGREE_POLICY Manual Verhalten wie vor 11gR2, der DBA konfiguriert alles manuell Kein Automated DOP Kein Statement Queuing Keine In-Memory Parallel Execution Limited Eingeschränkter Automated DOP für Abfragen auf Tabellen mit Default Parallelisierung Kein Statement Queuing Keine In-Memory Parallel Execution Auto Alle in Frage kommenden Statements werden parallel ausgeführt Statement Queuing In-Memory Parallel Execution 54

56 Click to edit title Click to edit Master text styles Insert Picture Here Funktionsweise von Automated DOP SQL Statement Statement wird geparsed Optimizer ermittelt Execution Plan Statement wird seriell ausgeführt Statement wird parallel ausgeführt Optimizer bestimmt idealen DOP Geschätzte Ausführung ist größer als Schwellwert Tatsächlicher DOP = MIN(Default DOP, idealer DOP) Geschätzte Ausführung ist kleiner als Schwellwert PARALLEL_MIN_TIME_THRESHOLD 55

57 Click to edit title Click to edit Master text styles Insert Picture Here Parameter für Parallel Query Oracle Neue Parameter parallel_degree_limit = 'CPU' (CPU|IO|integer) parallel_degree_policy = MANUAL (MANUAL|LIMITED|AUTO) parallel_force_local = FALSE (FALSE|TRUE) parallel_min_time_threshold = AUTO (AUTO|integer) parallel_servers_target = 8 (0 - max_servers) Parameter parallel_adaptive_multi_user = TRUE (TRUE|FALSE) parallel_execution_message_size = (2148 – 32768) parallel_instance_group = '' () parallel_max_servers = 20 ( ) pro Instanz parallel_min_percent = 0 ( ) % parallel_min_servers = 0 (0 - max_servers) parallel_threads_per_cpu = 2 (1 - 4|8) pro core Veraltete Parameter parallel_automatic_tuning = FALSE (FALSE|TRUE) parallel_io_cap_enabled = FALSE (FALSE|TRUE) 56

58 Click to edit title Click to edit Master text styles Insert Picture Here Partitioning / Partition Exchange Load 57 Oracle Data Warehouse

59 Click to edit title Click to edit Master text styles Insert Picture Here Partitioning unterstützt viele Aufgaben Query Performance Partition Pruning Ladeprozess Hochverfügbarkeit auch während des Ladens und Maintenance Leichterer Umgang mit Indizierung Unterstützung ILM (Information Lifecycle Management) Unterstützung im Backup-Prozess Unterstützung bei der Aktualisierung von Materialized Views (Partition Change Tracking) Unterstützung bei der Komprimierung Partitioning Partitionierungs- Kriterium fachlich anwendbar oder nicht? Partitioning Typ: - Range - List - Hash 58

60 Click to edit title Click to edit Master text styles Insert Picture Here Partitioning – Die Grundfunktionalität Kollektive Sicht SELECT.... FROM.... Local Index Global Partitioned Index Global Index Partition-bezogene Sicht Manageability Separate Compression Read Only TS versch. Platten Basis für ILM Hilfsmittel im ETL PEL Local Indexing Availability Backup / Recovery Scheduled Downtime Archiving Performance ADD, DROP, SPLIT, MOVE, MERGE, TRUNCATE, COMPRESS 59

61 Click to edit title Click to edit Master text styles Insert Picture Here 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 60

62 Click to edit title Click to edit Master text styles Insert Picture Here 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')); -- Neue leere temporäre Tabelle erstellen CREATE TABLE Bestellung_temp AS SELECT * FROM Bestellung WHERE ROWNUM < 1; -- 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'); 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;

63 Click to edit title Click to edit Master text styles Insert Picture Here Monat 10 Monat 11 Monat 12 Monat 13 Faktentabelle Zeit Region Financial Production Human Res. Store Supplier Marketing Service Neuer Monat P1 P2 P3 P Z1 Z2 Z3 Z4 Temporäre Tabelle Parallel Direct Path INSERT (Set Based) CREATE TABLE AS SELECT (CTAS) CREATE Indizes / Statistiken anlegen EXCHANGE Tabelle Partition Exchange Loading (PEL) DROP PARTITION Unvergleichbar schnell! 62

64 Click to edit title Click to edit Master text styles Insert Picture Here 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 63

65 Click to edit title Click to edit Master text styles Insert Picture Here Direct / Convential Path Load 64 Oracle Data Warehouse

66 Click to edit title Click to edit Master text styles Insert Picture Here Direct Path / Convential Path Convential Path Reuse Free Space in Blöcken Constraint Checks Undo Data / Logging Daten zunächst immer in SGA Buffer Direct Path Schreiben oberhalb der High Water Marks Keine Constraint Checks Kein Logging Daten nicht in SGA Buffer

67 Click to edit title Click to edit Master text styles Insert Picture Here Set Based SQL 66 Oracle Data Warehouse

68 Click to edit title Click to edit Master text styles Insert Picture Here Varianten von Prüfungen Attribut-bezogen Not Null / Pflichtfelder Formatangaben Check Constraint Wertbereiche Ober-/Untergrenzen / Wertelisten Satz-bezogen (Tupel) Abhängigkeiten von Werten in anderen Attributen desselben Satzes Satz-übergreifend (Relationen) Primary Key / Eindeutigkeit Aggregat – Bedingungen Ober- Untergrenzen von Summen Anzahl Sätze pro Intervall usw. Rekursive Zusammenhänge Verweise auf andere Sätze derselben Tabelle (Relation) Tabellen-übergreifend (interrelational) Foreign Key Aggregat – Bedingungen Ober- Untergrenzen von Summen Anzahl Sätze pro Intervall usw. Rekursive Zusammenhänge Verweise auf Sätze einer anderen Tabelle (Relation) Zeit-bezogen (Tupel) Zeitinvariante Inhalte Anz. Bundesländer Zeitabhängige Veränderungen Über die Zeit mit anderen Daten korrelierende Feldinhalte Verteilungs-bezogen Arithmetische Mittel Varianz / Standardabweichungen Qualitätsmerkmale und Mengen 67

69 Click to edit title Click to edit Master text styles Insert Picture Here Prüfkonzepte Einfach implementierbar Bessere Performance Nur bei aktivierten Constraints Stage-Tabelle + Geprüfte Daten Kopieren Statistiken Date Number Varchar2() Bad File Fehlerhafte Sätze Check Constraints Statistik Routine DML Error Log Fachliche Prüfungen kaum möglich Eventuell zusätzliche Prüfungen nötig 68

70 Click to edit title Click to edit Master text styles Insert Picture Here Error Logging Constraints Unique Key / Primary Key Foreign Key NOT NULL Check Constraint Kunde Kunde_err KUNDENNR VORNAME NACHNAME ORTNR STRASSE TELEFON ORA_ERR_NUMBER$ ORA_ERR_MESG$ ORA_ERR_ROWID$ ORA_ERR_OPTYP$ ORA_ERR_TAG$ INSERT INTO Kunde VALUES (......) LOG ERRORS INTO kunde_err('load_ ') 69

71 Click to edit title Click to edit Master text styles Insert Picture Here Error Logging: Beispiel 70

72 Click to edit title Click to edit Master text styles Insert Picture Here Check Constraint mit Regular Expressions CREATE TABLE Check_KUNDE ( KUNDENNR NUMBER, GESCHLECHT NUMBER, VORNAME VARCHAR2(50), NACHNAMEVARCHAR2(50), ANREDE VARCHAR2(10), GEBDAT DATE, ORTNR NUMBER, STRASSE VARCHAR2(50), TELEFON VARCHAR2(30) ); ALTER TABLE check_kunde ADD CONSTRAINT Ch_KD_Name CHECK(REGEXP_LIKE(NACHNAME, '[^[:digit:]]')); Regel: Im Kundennamen müssen Buchstaben vorkommen und keine reine Zahlenkolonne INSERT INTO check_kunde (Kundennr, Geschlecht, Vorname, Nachname, Anrede, Gebdat, Ortnr, Strasse, Telefon) VALUES (9,1,'Klaus','123','Herr',' ',2,'Haupstr.', ); FEHLER in Zeile 1: ORA-02290: CHECK-Constraint (DWH.CH_KD_NAME) verletzt 71

73 Click to edit title Click to edit Master text styles Insert Picture Here Beispiele * Match 0 or more times ? Match 0 or 1 time + Match 1 or more times {m} Match exactly m times {m,} Match at least m times {m, n} Match at least m times but no more than n times \n Cause the previous expression to be repeated n times [:alnum:] Alphanumeric characters [:alpha:] Alphabetic characters [:blank:] Blank Space Characters [:cntrl:] Control characters (nonprinting) [:digit:] Numeric digits [:graph:] Any [:punct:], [:upper:], [:lower:], and [:digit:] chars [:lower:] Lowercase alphabetic characters [:print:] Printable characters [:punct:] Punctuation characters [:space:] Space characters (nonprinting), such as carriage return, newline, vertical tab, and form feed [:upper:] Uppercase alphabetic characters [:xdigit:] Hexidecimal characters Modus Zeichenklassen 72

74 Click to edit title Click to edit Master text styles Insert Picture Here Performance Regular Expressions sind schnelle Operartionen in der Datenbank Verwendung von Regular Expressions steigert die Performance bei Prüfungen von Formaten Daten müssen nicht mehrfach gelesen werden 73

75 Click to edit title Click to edit Master text styles Insert Picture Here Arbeiten ohne Constraints Constraints stören bei Massenaktionen im DWH Ausschalten der Constraints Übernahme der Aufgaben von Constraints durch ETL- Prozess Mengen-basierte Vorgehensweise spool test.sql select 'alter table '||table_name||' disable constraint '||constraint_name||';' from user_constraints where table_name=('TABELLENNAME'); spool off 74

76 Click to edit title Click to edit Master text styles Insert Picture Here Was kann mit SQL geprüft werden Formatprüfungen Feldtypen Stringformate, Ausdrücke NOT NULL Eindeutigkeit Wertebereiche Spaltenübergreifende Table_Checks Inhaltliche Regeln 75

77 Click to edit title Click to edit Master text styles Insert Picture Here Wichtiges Hilfsmittel: CASE-Anweisung SELECT CASE WHEN isnumeric( ' 999 ' ) = 1 THEN ' numerisch ' ELSE 'nicht numerisch ' END Ergebnis FROM dual; CREATE OR REPLACE FUNCTION isnumeric ( p_string in varchar2) return boolean AS l_number number; BEGIN l_number := p_string; RETURN 1; EXCEPTION WHEN others THEN RETURN 0; END; 76

78 Click to edit title Click to edit Master text styles Insert Picture Here Bestellnr Menge Summe Name Ort BestDatum Abarbeitungslogik mit CASE Bestellnr Menge Summe Name Ort BestDatum Bestellnr_isNull Menge_isNumeric Summe_isNumeric Summe_isNull BestDatum_isDate... OLTP_Kunden OLTP_Kunden_tmp INSERT INTO OLTP_Kunden_tmp SELECT Bestellnr,Menge,Summe,Name,Ort,BestDatum, CASE WHEN (Bestellnr is NULL) then 1 ELSE 0 END Bestellnr_isNull, CASE WHEN (isNumeric(Menge) = 1) then 1 ELSE 0 END Menge_isNumeric, CASE WHEN (isNumeric(Summe) = 1) then 1 ELSE 0 END Summe_isNumeric, CASE WHEN (Summe is NULL) then 1 ELSE 0 END Summe_isNull, CASE WHEN (isDate(BestDatum) = 1) then 1 ELSE 0 END BestDatum_isDate FROM OLTP_Kunden;

79 Click to edit title Click to edit Master text styles Insert Picture Here Hilfsfunktion: Is Number create or replace function isNumeric(i_value_to_check varchar2) return number is v_dummy number; begin v_dummy := to_number( i_value_to_check); return 1; -- it's number exception when others then return -1; -- it's invalid end isNumeric; 78

80 Click to edit title Click to edit Master text styles Insert Picture Here Hilfsfunktion: Date_Check In Verbindung mit der CASE-Anweisung create or replace function IsDate (str varchar2) return varchar2 is inDate varchar2(40); FUNCTION dateCheck (inputDate varchar2, inputMask varchar2) RETURN varchar2 IS dateVar date; BEGIN dateVar:= to_date(inputDate,inputMask); return 'true'; exception when others then return 'false'; END; BEGIN inDate:= trim(str); if dateCheck(inDate, 'mm-dd-yyyy') = 'false' AND dateCheck(inDate, 'mm-dd-yy') = 'false' AND dateCheck(inDate, 'yyyy-mm-dd') = 'false' AND dateCheck(inDate, 'yy-mm-dd') = 'false' AND dateCheck(inDate, 'yyyy-mon-dd') = 'false AND dateCheck(inDate, 'yy-mon-dd') = 'false AND dateCheck(inDate, 'dd-mon-yyyy') = 'false AND dateCheck(inDate, 'dd-mon-yy') = 'false AND dateCheck(inDate, 'mmddyy') = 'false AND dateCheck(inDate, 'mmddyyyy') = 'false AND dateCheck(inDate, 'yyyymmdd') = 'false' AND dateCheck(inDate, 'yymmdd') = 'false AND dateCheck(inDate, 'yymmdd') = 'false' AND dateCheck(inDate, 'yymondd') = 'false AND dateCheck(inDate, 'yyyymondd') = 'false AND dateCheck(inDate, 'mm/dd/yyyy') = 'false' AND dateCheck(inDate, 'yyyy/mm/dd') = 'false AND dateCheck(inDate, 'mm/dd/yy') = 'false' AND dateCheck(inDate, 'yy/mm/dd') = 'false AND dateCheck(inDate, 'mm.dd.yyyy') = 'false' AND dateCheck(inDate, 'mm.dd.yy') = 'false' AND dateCheck(inDate, 'yyyy.mm.dd') = 'false' AND dateCheck(inDate, 'yy.mm.dd') = 'false' then return 'false'; else return 'true'; end if; --exception --when others then return 'false'; END; 79

81 Click to edit title Click to edit Master text styles Insert Picture Here Prüfung auf Eindeutigkeit INSERT INTO el_kunde (kundennr,vorname,nachname,ortnr,strasse,telefon) SELECT src2.nummer, src2.name, FROM SRC2, (SELECT nummer FROM (SELECT count(nummer) n, nummer FROM src2 group by nummer) WHERE n = 1) doppelte WHERE src2.nummer = doppelte.nummer; 80 SELECT F1 FROM (SELECT count(F1) n,F1 FROM s GROUP BY F1) WHERE n > 1;

82 Click to edit title Click to edit Master text styles Insert Picture Here Inhaltliche Abhängigkeit von zwei Feldern Die satzübergreifende Reihenfolge von den Werten einer Spalte muss mit der Reihenfolge in einer anderen Spalte übereinstimmen 81

83 Click to edit title Click to edit Master text styles Insert Picture Here Tabellenübergreifender Summenvergleich Bestellung Bestellposition Bestellnummer (PK) Gesamtsumme Bestellnummer (FK) Positionssumme = 82 Select * from (select bestellnumme, gesamtsumme from Bestellung) best, (select Bestellnummer, sum(Positionssumme) gesamtsumme from Bestellposition group by Bestellnummer) Pos where best.bestellnummer = pos.bestellnummer and best.gesamtsumme = pos.gesamtsumme

84 Click to edit title Click to edit Master text styles Insert Picture Here Native Support für Pivot und Unpivot SALESREP Q1 Q2 Q3 Q SALESREP QU REVENUE Q Q Q Q Q Q Q Q Q Q Q Q4 310 Sinnvoller Einsatz im Rahmen des ETL-Prozesses 83

85 Click to edit title Click to edit Master text styles Insert Picture Here Native Support für Pivot und Unpivot select * from quarterly_sales unpivot include nulls (revenue for quarter in (q1,q2,q3,q4)) order by salesrep, quarter ; QUARTERLY_SALES SALESREP Q1 Q2 Q3 Q SALESREP QU REVENUE Q Q Q Q Q Q Q Q Q Q Q Q4 310 Sinnvoller Einsatz im Rahmen des ETL-Prozesses 84

86 Click to edit title Click to edit Master text styles Insert Picture Here Native Support für Pivot und Unpivot SALESREP 'Q1' 'Q2' 'Q3' 'Q4' SALES_BY_QUARTER SALESREP QU REVENUE Q Q Q Q Q Q Q Q Q Q Q Q1 260 select * from sales_by_quarter pivot (sum(revenue) for quarter in ('Q1','Q2','Q3','Q4')) order by salesrep ; Sinnvoller Einsatz im Rahmen des ETL-Prozesses 85

87 Click to edit title Click to edit Master text styles Insert Picture Here Multiple Inserts INSERT ALL WHEN STATUS = 'P' THEN INTO WH_TRANS_PRIVAT (BESTELLMENGE,KUNDENCODE,BESTELL_TOTAL,STATUS) VALUES (BESTELLMENGE$1,KUNDENCODE$1,BESTELL_TOTAL$1,STATUS) WHEN STATUS = 'F' THEN INTO WH_TRANS_FIRMA (BESTELLMENGE,KUNDENCODE,BESTELL_TOTAL,STATUS) VALUES (BESTELLMENGE$1,KUNDENCODE$1,BESTELL_TOTAL$1,STATUS) SELECT WH_TRANSAKTIONEN.BESTELLMENGE BESTELLMENGE$1, WH_TRANSAKTIONEN.KUNDENCODE KUNDENCODE$1, WH_TRANSAKTIONEN.BESTELL_TOTAL BESTELL_TOTAL$1, WH_TRANSAKTIONEN.STATUS STATUS FROM WH_TRANSAKTIONEN WH_TRANSAKTIONEN WHERE (WH_TRANSAKTIONEN.STATUS = 'P /*SPLITTER.PRIVATKUNDEN*/) OR (WH_TRANSAKTIONEN.STATUS = 'F /*SPLITTER.FIRMENKUNDEN*/); 86

88 Click to edit title Click to edit Master text styles Insert Picture Here MERGE INTO "Kunde_TGT" USING (SELECT "KUNDEN_STAMM"."KUNDENNR" "KUNDENNR", "KUNDEN_STAMM"."VORNAME" "VORNAME", "KUNDEN_STAMM"."NACHNAME" "NACHNAME", "KUNDEN_STAMM"."STATUS" "STATUS", "KUNDEN_STAMM"."STRASSE" "STRASSE", "KUNDEN_STAMM"."TELEFON" "TELEFON", "KUNDEN_STAMM"."TELEFAX" "TELEFAX FROM "KUNDEN_STAMM" "KUNDEN_STAMM") MERGE_SUBQUERY ON ( "Kunde_TGT"."KUNDENNR" = "MERGE_SUBQUERY"."KUNDENNR") WHEN NOT MATCHED THEN INSERT ("Kunde_TGT"."KUNDENNR", "Kunde_TGT"."VORNAME", "Kunde_TGT"."NACHNAME", "Kunde_TGT"."STATUS", "Kunde_TGT"."STRASSE", "Kunde_TGT"."TELEFON", "Kunde_TGT"."TELEFAX") VALUES ("MERGE_SUBQUERY"."KUNDENNR", "MERGE_SUBQUERY"."VORNAME", "MERGE_SUBQUERY"."NACHNAME", "MERGE_SUBQUERY"."STATUS", "MERGE_SUBQUERY"."STRASSE", "MERGE_SUBQUERY"."TELEFON", "MERGE_SUBQUERY"."TELEFAX") WHEN MATCHED THEN UPDATE SET "VORNAME" = "MERGE_SUBQUERY"."VORNAME", "NACHNAME" = "MERGE_SUBQUERY"."NACHNAME", "STATUS" = "MERGE_SUBQUERY"."STATUS", "STRASSE" = "MERGE_SUBQUERY"."STRASSE", "TELEFON" = "MERGE_SUBQUERY"."TELEFON", "TELEFAX" = "MERGE_SUBQUERY"."TELEFAX"; MERGE-Funktion Funktion MERGE dient dem gleichzeitigen INSERT und UPDATE Basierend auf dem Matching des definierten Schlüssels (ON-Klausel) Auch DELETE- Operationen möglich 87

89 Click to edit title Click to edit Master text styles Insert Picture Here Bildung künstlicher Schlüssel Alter Name Kunden_NR Anzahl Kinder Berufsgruppe Wohnart Einkommensgruppe Ort PLZ Verkaufsregion Kunden_NR Strasse Ort PLZ Tel Partnernummer Wohnart Einkommensgruppe Verkaufsregion Dim_Kd_NR... Sequence Anwendung 2 Anwendung 1 Data Warehouse Neuer Schlüssel 88

90 Click to edit title Click to edit Master text styles Insert Picture Here AA34dddfKD_11Satz12 DFG64dloidfKD_22Satz13 erf78ghzfKD_33Satz14 1 Log.Business Schlüssel (Alternate Unique) Stamm Info sdfg4456llkofKD_44Satz15 Stamm Info KD_11 KD_22 KD_33 KD_44 KD_55 6Stamm Info KD_66 Künstl. Schlüssel (Primary Key) DFG64dloidf1 DFG64dloidf2 erf78ghzf3 sdfg4456llkof4 Log.Business Schlüssel Dimension Fakten Bewegungsdaten Join Lookup Key Lookup 89

91 Click to edit title Click to edit Master text styles Insert Picture Here Lookup-Verfahren mit Aktualisierung (Stammdaten) Anti – Join Bewegungs- sätze Referenzdaten Tmp Table alle Sätze ohne Referenz Protokoll Zielsätze Join Insert mit Dummy – Schlüssel 90

92 Click to edit title Click to edit Master text styles Insert Picture Here AA34dddfKD_11Satz12 DFG64dloidfKD_22Satz13 erf78ghzfKD_33Satz14 Log.Business Schlüssel (Alternate Unique) sdfg4456llkofKD_44Satz15 1Stamm Info KD_11 KD_22 KD_33 KD_44 KD_55 6Stamm Info KD_66 Künstl. Schlüssel (Primary Key) DFG64dloidf1 DFG64dloidf2 erf78ghzf3 sdfg4456llkof4 Dimension FaktenBewegungsdaten Sequenz Next Val 7 XX567ddwerKD_99Satz12 7Dummy KD_99 Anti - Join Wenn nicht in Dimension enthalten dann INSERT INTO Dim SELECT.... FROM Bew, Dim WHERE Log Key NOT IN Dim 1. Schritt Log.Business Schlüssel XX567ddwer7 Join Lookup 2. Schritt 91

93 Click to edit title Click to edit Master text styles Insert Picture Here Table Functions 92 Oracle Data Warehouse

94 Click to edit title Click to edit Master text styles Insert Picture Here tf1tf2 tf3 Stage_tabelle QuelleZiel INSERT INTO Ziel SELECT * FROM (tf2(SELECT * FROM (tf1(SELECT * FROM Quelle)))) INSERT INTO Ziel SELECT * FROM tf( SELECT * FROM (Stage_tabelle)) Table Functions – Pipeline-Verfahren 93

95 Click to edit title Click to edit Master text styles Insert Picture Here Begriffe im Bereich Table Functions Table Function Funktionen, die eine Gruppe von Sätzen (SET) gleichzeitig bearbeitet. Table Functions wirken wie physische Tabellen. Entsprechend werden sie auch in der FROM Klausel verwendet. Record Type Ein komplexer, aus mehreren Feldern zusammengesetzter Datentyp. Nested Table Eine Art virtuelle Tabelle (temporäre Tabelle im Speicher). Eine Table Function kann eine solche Tabelle komplett an das aufrufende Kommando zurückgeben. Ref Cursor Eine Art Pointer auf ein Result – Set einer Abfrage. Man übergibt einen Ref Cursor einer Table Function, damit diese die Sätze des Result – Sets innerhalb der Function abarbeitet. Parallel Table Functions können eingehende Sätze parallel bearbeiten, wenn diese als Ref Cursor übergeben werden. Pipelined Eine Table Function reicht bereits fertige Sätze an das aufrufende Kommando zur weiteren Verarbeitung weiter, während sie noch weitere Sätze bearbeitet. 94

96 Click to edit title Click to edit Master text styles Insert Picture Here If a = b... Update... Case... Cursor Fetch Loop Funktion Table_Function( ) INSERT INTO Table SELECT Feld1, Feld2 FROM Mengenbasierte Verarbeitung Trotz Programmierung Schnelle Verarbeitung (Pipelined) Objekttechnik Parallelisierung Mehrere Rückgabewerte und Einzelrückgaben Cursor als Input Schachtelbar Return Table pipe row(record Type) Variante 1 Variante 2 95

97 Click to edit title Click to edit Master text styles Insert Picture Here drop type Bestellung_X_t; create type Bestellung_X_t as object ( BESTELLNR NUMBER(10), KUNDENCODE NUMBER(10), BESTELLDATUM DATE, LIEFERDATUM DATE, BESTELL_TOTAL NUMBER(12,2), Fehler_Datum DATE); drop type Bestellung_X_t_table; create type Bestellung_X_t_table as TABLE of Bestellung_X_t; create or replace package cursor_pkg as type Bestellung_t_rec IS RECORD ( BESTELLNR NUMBER(10), KUNDENCODE NUMBER(10), BESTELLDATUM DATE, LIEFERDATUM DATE, BESTELL_TOTAL NUMBER(12,2)); END; Definition Record-Type Definition Nested-Table auf der Basis des Rekord-Types Definition Cursor als Typ des Übergabeparameters Die Hilfstypen für Daten und Cursor 96

98 Click to edit title Click to edit Master text styles Insert Picture Here create or replace function f_Bestellung_X(cur cursor_pkg.refcur_t) RETURN Bestellung_X_t_table IS BESTELLNR NUMBER(10); KUNDENCODE NUMBER(10); BESTELLDATUM DATE; LIEFERDATUM DATE; BESTELL_TOTAL NUMBER(12,2); Fehler_Datum DATE; ORDER_ID NUMBER(10); objset Bestellung_X_t_table := Bestellung_X_t_table(); i number := 0; begin LOOP -- read from cursor variable FETCH cur into BESTELLNR,KUNDENCODE, BESTELLDATUM,LIEFERDATUM,BESTELL_TOTAL,ORDER_ID; -- ext when last row EXIT WHEN cur%NOTFOUND; i := i+1; if substr(to_char(LIEFERDATUM,'YYYY.MM.YY'),1,4) >2002 then Fehler_Datum := to_date(' ','YYYY.MM.DD'); else Fehler_Datum := LIEFERDATUM; End if; objset.extend; objset(i) := Bestellung_X_t(BESTELLNR,KUNDENCODE, BESTELLDATUM,LIEFERDATUM,BESTELL_TOTAL,Fehler_Datum); END LOOP; CLOSE cur; Return objset; END; Übernahme von Ausgangssätzen als Cursor Definieren einer Nested-Table-Struktur für die spätere Rückgabe. Lesen aus Cursor Erweitern Nested-Table um einen Satz und Überführen eines Satzes in die Nested-Table Rückgabe der kompletten Tabelle an das aufrufende Statement (Alternative zu PIPE). Die Table Function 97

99 Click to edit title Click to edit Master text styles Insert Picture Here insert into bestellung_X select * from TABLE(f_Bestellung_X(CURSOR(SELECT * from Bestellung))) select * from TABLE(f_bestellung(CURSOR(SELECT * from Bestellung))) select count(*) from TABLE(f_bestellung(CURSOR(SELECT * from Bestellung)) Beispielaufrufe 98 create view VWTF (anzahl) as select count(*) from TABLE(f_bestellung_y()); Kapseln von Table Function – Aufrufen:

100 Click to edit title Click to edit Master text styles Insert Picture Here Materialized Views spart ETL-Aufwand 99 Oracle Data Warehouse

101 Click to edit title Click to edit Master text styles Insert Picture Here Prinzip und Aufgabenstellung Summentabellen BasistabelleSummentabelle Änderungen ? stale Complete Refresh Incremental Refresh 100

102 Click to edit title Click to edit Master text styles Insert Picture Here Nachteile Summentabellen Kein automatisches Erkennen von Staleness Zusätzlicher ETL-Aufwand Fehlende Inkrementelle Aktualisierung Eingriff auf die Benutzeraktivitäten Benutzer müssen Namen der Summentabelle wissen

103 Click to edit title Click to edit Master text styles Insert Picture Here Aufgaben der Materialized Views (MAVs) Erleichtern das Management von Summentabellen Wegfall von Erstellungsprozeduren Einfache Steuerung des Zeitpunktes zur Aktualisierung Eventuell Beschleunigung der Aktualisierung (inkrementelles Refresh) Abfrage-Performance optimieren Variable Kennzahlensysteme aufbauen Mehrstufige MAVs Abfragegruppen zusammenfassen (Kategorisierung) Geschäftsobjekt-bezogene MAVs 102

104 Click to edit title Click to edit Master text styles Insert Picture Here Physische Eigenschaften von MAVs Speicherung / Plattenplatz Speicherung von MAVs Angabe einer Storageklausel möglich Können in separatem Tablespace angelegt werden Belegen Plattenplatz Nicht mehr als klassische Summentabellen Komprimierung vom MAVs möglich 103

105 Click to edit title Click to edit Master text styles Insert Picture Here MAV-Erstellung und erstmaliges Füllen BUILD IMMEDIATE (direkt bei der Erstellung, default) Problematisch bei großen Basistabellen und im Rahmen von Entwicklung / Test BUILD DEFERRED (Erstellung beim ersten Refresh) Sinnvoll bei erster Überführung neuer MAV-Definitionen in die Produktionsumgebung ON PREBUILD Sinnvoll, wenn es separate Erstellungroutinen gibt, die ihr Ergebnis nur in einer Tabelle ablegen können, man aber die Rewrite-Vorteile der MAVs nutzen will Kopie von normalen Views (analog zum vorigen Punkt) 104

106 Click to edit title Click to edit Master text styles Insert Picture Here Refresh-Funktionen COMPLETE Immer vollständiges Neuladen aus den Basistabellen FAST (inkrementell) Nur bei vorhandenem MAV Log auf der Basistabelle FORCE (inkrementell oder komplett, default) Je nach der zu erwartenden Refresh-Dauer NEVER Vorhalten historischer Bestände oder bei separater Prozedur ON COMMIT (oft bei OLTP) Commit einer Transaktion auf der Basistabelle ON DEMAND (sinnvoll im DWH, default) 105

107 Click to edit title Click to edit Master text styles Insert Picture Here Beispiel einer Materialized View CREATE MATERIALIZED VIEW MV_Standard BUILD IMMEDIATE REFRESH COMPLETE ON DEMAND ENABLE QUERY REWRITE AS SELECT z.jahr_nummer Jahr, z.monat_desc Monat, sum(u.umsatz) Summe, a.artikel_id ID, count(u.umsatz) FROM f_umsatz u, d_artikel a, d_zeit z WHERE a.artikel_id = u.artikel_id AND u.zeit_id = z.datum_id GROUP BY z.jahr_nummer, z.monat_desc, a.artikel_id; 106

108 Click to edit title Click to edit Master text styles Insert Picture Here Testen und Ablaufbedingungen einer MAV set autotrace on;-- Anzeige des Ausführungsplans show parameter query query_rewrite_enabledTRUE-- erlaubt das Query Rewrite query_rewrite_integrity STALE_TOLERATED-- erlaubt Query Rewrite, auch wenn -- die Daten in der Basistabelle -- nicht mehr aktuell sind query_rewrite_integrity TRUSTED-- auch deklarierte -- Basis-Informantionen gelten -- als korrekt (z. B. Views oder -- prebuild) query_rewrite_integrity ENFORCED-- Daten müssen stimmen -- Ändern der Parameter mit ALTER SESSION SET query_rewrite_enabled=TRUE; ALTER SESSION SET query_rewrite_enabled=FALSE;

109 Click to edit title Click to edit Master text styles Insert Picture Here DBMS_MVIEW (Refresh-Funktion) Refresh-Funktionen REFRESH REFRESH_DEPENDENT REFRESH_ALL_MVIEW REFRESH_DEPENDENT REFRESH_ALL_MVIEW REFRESH Transaktionsverhalten (optional) ATOMIC_REFRESH REFRESH_AFTER_ERRORS NESTED Refresh-Methoden (optional) COMPLETE (C) FAST(F) FORCE (default)(?) PARTITIONED(P) COMPLETE C)-> immer komplettes Lesen der Basis-Tabelle FAST(F)-> Inkremtentelles Lesen, wenn möglich (View-Log oder PCT) FORCE (default)(?)-> beide vorgenannten Varianten, abhängig von der dafür benötigten Zeit EXECUTE DBMS_MVIEW.REFRESH('MV_STANDARD,'C');

110 Click to edit title Click to edit Master text styles Insert Picture Here DBMS_MVIEW (Refresh-Funktion) ATOMIC_REFRESH => TRUE | FALSE Refresh vollzieht sich in einer Transaktion Im Fehlerfall wird die Transaktion zurückgerollt REFRESH_AFTER_ERRORS => TRUE | FALSE Refresh von mehreren Materialized Views läuft weiter bzw. bricht ab, wenn bei einer MAV ein Fehler aufgetreten ist NESTED Eine Materialized View und alle von ihr abhängigen MAVs werden aktualisiert EXECUTE DBMS_MVIEW.REFRESH('MV_STANDARD,'C'); EXECUTE DBMS_MVIEW.REFRESH('MV_STANDARD',atomic_refresh=>TRUE); EXECUTE DBMS_MVIEW.REFRESH('MV_STANDARD',atomic_refresh=>TRUE, nested => TRUE); EXECUTE DBMS_MVIEW.REFRESH('MV_STANDARD',nested=>TRUE); 109

111 Click to edit title Click to edit Master text styles Insert Picture Here Fast Refresh-Varianten WITH ROWID SEQUENCE INCLUDING NEW VALUES Join Dependency Expression Partition Key Partition Marker BasistabelleMAV Log MAV1MAV2MAV3 Partition 1 Partition 4 Partition 5 Partition 2 Partition 3 Partition 6 MAV1 MAV2 Basistabelle Aktualisierung über MAV Logs Aktualisierung über Partition Change Tracking (PCT) komplett inkrementell 110

112 Click to edit title Click to edit Master text styles Insert Picture Here Fast Refresh mit MAV Log --- MAV Log auf Tabelle D_Artikel DROP MATERIALIZED VIEW LOG ON d_artikel; CREATE MATERIALIZED VIEW LOG ON d_artikel WITH ROWID, SEQUENCE (dimension_key, nummer, artikel_name, artikel_id, gruppe_nr, gruppe_name, sparte_name, sparte_nr) INCLUDING NEW VALUES; --- MAV Log auf Tabelle D_Zeit DROP MATERIALIZED VIEW LOG ON d_zeit; CREATE MATERIALIZED VIEW LOG ON d_zeit WITH ROWID, SEQUENCE (datum_id, datum_desc, tag_des_monats, tag_des_jahres, woche_des_jahres, monats_nummer, monat_desc, quartals_nummer, jahr_nummer) INCLUDING NEW VALUES; --- MAV Log auf Tabelle F_Umsatz DROP MATERIALIZED VIEW LOG ON f_umsatz; CREATE MATERIALIZED VIEW LOG ON f_umsatz WITH ROWID, SEQUENCE (umsatz, menge, umsatz_nach_rabatt, rabatt_wert_firmenkunde, Rabatt_wert_privatkunde, bestell_datum, artikel_id, kunde_id, region_id, zeit_id) INCLUDING NEW VALUES; 111

113 Click to edit title Click to edit Master text styles Insert Picture Here Kopiertechniken beim Laden Trigger in Quelltabelle SQL*Loader Data Pump External Tables Transportable Tablespaces Database Link 112 Oracle Data Warehouse

114 Click to edit title Click to edit Master text styles Insert Picture Here Herausforderungen beim Extrahieren Unterschiedliche Schema-Namen in Quell- und Zielsystemen Bewahrung der Konsistenz Unterschiedliche GRANTs der User Zusätzlicher Netzwerkverkehr Meist ist nur das Delta der geänderten Daten gewünscht 113

115 Click to edit title Click to edit Master text styles Insert Picture Here Datenbank-Trigger Werden nur im Quellsystem angelegt Beeinflusst Performance des Quellsystems Eher als Notlösung anzusehen Wenn es kein Änderungsdatum in der Quelltabelle gibt Zum Triggern Message-basierter oder Event-gesteuerter Ladeläufe CREATE OR REPLACE TRIGGER Bestellung BEFORE DELETE OR INSERT OR UPDATE ON Bestellung FOR EACH ROW WHEN (new.Bestellnr > 0) DECLARE sal_diff number; BEGIN INSERT INTO log_Bestellung (Alte_Bestell_Nr,Neue_Bstell_Nr) VALUES(old.Bestellnr,new.Bestellnr); END; / 114

116 Click to edit title Click to edit Master text styles Insert Picture Here SQL*Loader Loader Modes Convential Path INSERT von Daten / UPDATE von Indizes / Auslösen von Triggern Auswertung von Constraints Direct Path Formatieren der Daten in Blöcken und direktes Einfügen in die Datafiles Keine SGA-Operationen / kein INSERT auf SQL-Level Parallel Direct Path Parallele SQL*Loader-Aufrufe 115

117 Click to edit title Click to edit Master text styles Insert Picture Here SQL*Loader – Empfehlungen Direct Path Load nutzen Alle Integrity Constraints ausschalten NOT NULL, Unique und Primary Key Constraints Verhindern von Index-Aktualisierungen UNRECOVERABLE Option wählen Partitionen nach und nach laden Andere Partitionen bleiben für andere Benutzer im Zugriff Parallel laden, wenn es möglich ist Nutzung paralleler Schreib-Threads Alternativ parallele Jobs starten 116

118 Click to edit title Click to edit Master text styles Insert Picture Here Beispiel - Control File OPTIONS (SKIP=1, BINDSIZE=50000, ERRORS=50, ROWS=200, DIRECT=TRUE, PARALLEL=TRUE, READSIZE=65536, RESUMABLE=TRUE, RESUMABLE_TIMEOUT=7200) UNRECOVERABLE LOAD DATA CHARACTERSET WE8MSWIN1252 INFILE 'C:\orte.csv' BADFILE 'orte.bad' DISCARDFILE 'orte.dis INTO TABLE dwh.tb_orte WHEN ort_id != BLANKS APPEND REENABLE DISABLED_CONSTRAINTS FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY "'" (orte_nr POSITION(1) INTEGER EXTERNAL, ort CHAR, plz CHAR, bundesland CHAR, region CHAR, nummernfeld INTEGER EXTERNAL ) 117

119 Click to edit title Click to edit Master text styles Insert Picture Here Aufruf des SQL*Loaders sqlldr userid=DWH/DWH control=c:\orte.ctl log=C:\orte.log orte.csvorte.ctl TB_ORTE Daten Control File 118

120 Click to edit title Click to edit Master text styles Insert Picture Here Data Pump Architektur Quelle: 119

121 Click to edit title Click to edit Master text styles Insert Picture Here Oracle Data Pump Höhere Performance als bei IMP / EXP oder anderen Entlade-Verfahren Daten und / oder Metainformationen von DB Objekten Größere Steuerungsmöglichkeit, d.h. mehr Parameter und Kontrolle der Datenextraktion Leichtere Einbindung der Datenflüsse über Rechnergrenzen hinweg Parallelisierung in RAC-Umgebungen Instanz-übergreifend Kompression u. Verschlüsselung nach Bedarf Legacy Mode zur Weiterverwendung von Ex-/Import Controls Wiederanlauffähig Release 2 120

122 Click to edit title Click to edit Master text styles Insert Picture Here Vereinfachte Verfahrensdarstellung OLTP DWH Schema OLTP Besondere GRANTs Schema DWH Delta-Load FTP Export mit Data Pump ( expdp ) Import mit Data Pump ( impdp ) 121

123 Click to edit title Click to edit Master text styles Insert Picture Here Export der Daten Optional Flashback zum Absichern des Entlade- Zeitpunktes nutzen Remote-Export möglich (per NETWORK_LINK) Wegfall von separatem FTP-Aufruf Einschränkung durch Query-Bedingung Damit Zugriff z. B. auf Last Update-Sätze Default Export Location D:\o11\admin\o11\dpdump\EXPDAT.DMP 122

124 Click to edit title Click to edit Master text styles Insert Picture Here Ablauf des Exports Export über Parameter-Datei Export auch mit Remote- Zugriff Einschränkung der Datenmenge durch QUERY Bei dem Import: REMAP auf das Schema expdp parfile=Para_EX.txt impdp DIRECTORY=DP_OUT DUMPFILE=EXP1.DMP LOGFILE=DP_OUT:imp_log REMAP_SCHEMA=DWH:DWH2 123

125 Click to edit title Click to edit Master text styles Insert Picture Here Export-Beispiele 124

126 Click to edit title Click to edit Master text styles Insert Picture Here Import-Beispiele 125

127 Click to edit title Click to edit Master text styles Insert Picture Here Interaktiver Modus von Data Pump CTRL-C zum Starten des interaktiven Modus ADD_FILE Das Hinzufügen eines neuen Dump-Files ist möglich KILL_JOB Prozess kann abgebrochen werden STOP_JOB Aktueller Job wird beendet PARALLEL Einstellung des Parallelisierungsgrads Eingabe von continue_client führt zur normalen Monitor-Ausgabe zurück 126

128 Click to edit title Click to edit Master text styles Insert Picture Here External Tables Tabelle, die eine Datei referenziert Datei wird als normale Tabelle behandelt Nur lesend zugreifbar RMAN sichert nicht die Daten Bulk-Loading Operationen, wie insert... select Mehr Transformationsoptionen als im SQL* Loader Parallelisierbares Lesen Alternative zum SQL*Loader 127

129 Click to edit title Click to edit Master text styles Insert Picture Here CREATE DIRECTORY Exttab AS 'D:\Szenario\Exttab'; DROP TABLE Gemeinde_EX; CREATE TABLE Gemeinde_EX ( Gemeinde_Nr VARCHAR2(8), Gemeinde VARCHAR2(50) ) ORGANIZATION EXTERNAL (TYPE oracle_loader DEFAULT DIRECTORY Exttab ACCESS PARAMETERS (RECORDS DELIMITED BY newline BADFILE 'Gemeinde.bad DISCARDFILE 'Gemeinde.dis LOGFILE 'Gemeinde.log SKIP 20 FIELDS TERMINATED BY ";" OPTIONALLY ENCLOSED BY '" ) LOCATION ('Gemeinde_CSV.TXT') ) GemeindeID;Gemeinde;KundenID;KreisID ;Flensburg;;0; ;Kiel;;0; ;Luebeck;;0; ;Neumuenster;;0; ;Albersdorf;;0; ;Arkebek;;0; ;Averlak;;0; ;Bargenstedt;;0; ;Barkenholm;;0; ;Barlt;;0; ;Bergewoehrden;;0; ;Brickeln;;0; ;Brunsbuettel;;0; External Tables – Beispiel 1 128

130 Click to edit title Click to edit Master text styles Insert Picture Here Modifikationsmöglichkeiten alter table ex_orte location ('ORTE_Y.CSV'); alter table ex_orte default directory LC_Texte_2; create or replace directory LC_TEXTE_2 AS 'D:\Szenario\Testdaten'; 129

131 Click to edit title Click to edit Master text styles Insert Picture Here Beschickungskonzept Änderungsprozedur zum Kopieren der Dateien Umbenennen von Dateinamen Änderungsprozedur zum Ändern der Einträge in der External Table Ändern des Pfades im Directory-Objekt ABC ABC ABC ABC Sich täglich ändernde Dateinamen Datum im Dateinamen Lieferantenname im Dateinamen 130

132 Click to edit title Click to edit Master text styles Insert Picture Here Preprocessing für External Tables CREATE TABLE sales_transactions_ext (PROD_ID NUMBER, CUST_ID NUMBER...) ORGANIZATION external (TYPE oracle_loader DEFAULT DIRECTORY data_file_dir ACCESS PARAMETERS (RECORDS DELIMITED BY NEWLINE CHARACTERSET US7ASCII PREPROCESSOR exec_file_dir:'gunzip' OPTIONS '-C' BADFILE log_file_dir:'sh_sales.bad_xt' LOGFILE log_file_dir:'sh_sales.log_xt' FIELDS TERMINATED BY "|" LDRTRIM ( PROD_ID, CUST_ID, TIME_ID DATE(10) "YYYY-MM-DD", CHANNEL_ID, PROMO_ID, QUANTITY_SOLD, AMOUNT_SOLD, UNIT_COST, UNIT_PRICE)) location ('sh_sales.dat.gz')) REJECT LIMIT UNLIMITED; Release 2 131

133 Click to edit title Click to edit Master text styles Insert Picture Here External Tables mit Data Pump Erstellen External Table in Quell-DB Verwendung von CREATE AS SELECT * FROM Das Ausführen des CREATE startet den Data Pump-Export Kopieren der Dump-Datei auf die Zielumgebung In der Zielumgebung neue External Table-Definition erstellen und aktivieren Durch Zugriff mit SELECT auf die External Table die Daten lesen 132

134 Click to edit title Click to edit Master text styles Insert Picture Here External Tables mit Data Pump OLTP DWH FTP EX_T 133

135 Click to edit title Click to edit Master text styles Insert Picture Here External Tables mit Data Pump OLTPDWH select * from EX_Bestellung_2 134

136 Click to edit title Click to edit Master text styles Insert Picture Here Vorteile der Kombination Leichte Handhabung Syntax der beiden Typen sehr ähnlich Hohe Performance Data Pump-eigenes Format ist für schnellen Ex-/Import ausgelegt Parameter von Data Pump zusätzlich nutzen, um die zu extrahierende Datenmenge auf das Wesentliche zu reduzieren Verbleiben innerhalb der SQL-Sprache Durch CREATE TABLE AS SELECT lassen sich sowohl WHERE - Filter als auch Joins während des Extrahierens verarbeiten 135

137 Click to edit title Click to edit Master text styles Insert Picture Here Transportable Tablespaces Höchste Performance beim Austausch von Oracle zu Oracle Daten werden als komplettes File oder File Set bewegt Austausch zwischen unterschiedlichen Betriebssystemen möglich Konvertierung kann mit RMAN erfolgen, z.B. von BigEndian nach LittleEndian Nützlich beim Bewegen der Daten zwischen Quellsystem und Staging Area sowie zwischen den anderen Schichten im Warehouse 136

138 Click to edit title Click to edit Master text styles Insert Picture Here Vorgehensweise 1.Anlegen des Tablespaces im Quellsystem 2.Zuweisung der zu kopierenden Daten zum Tablespace Alle Daten sind dem Tablespace zugeordnet (Indizes etc.) 3.Ändern des Tablespaces auf Read-Only 4.Export der Metadaten mit Data Pump ( EXPDP ) 5.Eventuell Konvertierung des Tablespace Datafiles Über die RMAN CONVERT Function 6.Kopieren des Tablespace Datafiles und der Metadaten 7.Import der Metadaten in der Zielumgebung 8.Ändern des Tablespaces auf Read-Write 137

139 Click to edit title Click to edit Master text styles Insert Picture Here Transportable Tablespaces P1 P2 P3 P Z1 Z2 Z3 Z4 CREATE TABLE temp_jan_umsatz NOLOGGING TABLESPACE ts_temp_umsatz AS SELECT * FROM ????????? WHERE time_id BETWEEN '31-DEC- 1999' AND '01-FEB-2000'; Index/Constraint free Parallel Direct Path Insert Set Based ALTER TABLESPACE ts_temp_umsatz READ ONLY; EXP TRANSPORT_TABLESPACE=y TABLESPACES=ts_temp_umsatz FILE=jan_umsatz.dmp Kopieren des Tablespace zur Zielplattform BS-Copy Daten Meta daten Buchhaltung Produktion Personal Lager Lieferanten Marketing Service 138

140 Click to edit title Click to edit Master text styles Insert Picture Here Transportable Tablespaces IMP TRANSPORT_TABLESPACE=y DATAFILES='/db/tempjan.f' TABLESPACES=ts_temp_umsatz FILE=jan_umsatz.dmp ALTER TABLESPACE ts_temp_umsatz READ WRITE; ALTER TABLE umsatz ADD PARTITION umsatz_00jan VALUES LESS THAN (TO_DATE('01-feb-2000','dd-mon-yyyy')); ALTER TABLE umsatz EXCHANGE PARTITION umsatz_00jan WITH TABLE temp_umsatz_jan INCLUDING INDEXES WITH VALIDATION; Metadaten Fakttable Umsatz Neuer Monat

141 Click to edit title Click to edit Master text styles Insert Picture Here Database Links – SQL über DB- Grenzen hinweg Kunde Data Warehouse OLTP Kunde Insert into tgt select * from tgt CREATE DATABASE LINK DBL_OLTP" CONNECT TO CRM" IDENTIFIED BY CRM" USING 'ORCL_OLTP0' ; SID: ORCL_OLTP Schema: CRM

142 Click to edit title Click to edit Master text styles Insert Picture Here Ziele Oracle DWH Architektur zur Einordnung Anforderungen an den ETL Prozess Hilfsmittel in der Datenbank (Übersicht) Vorgehensweise im ETL-Prozess Hardware und Umgebungsarchitektur Themen

143 Click to edit title Click to edit Master text styles Insert Picture Here Aspekte, die zu beachten sind Indizierung Constraints Komprimierung Statistiken Logging Steuern von logischen Transaktionen Aktualisierung Materialized Views Laufzeit-Statistiken 142

144 Click to edit title Click to edit Master text styles Insert Picture Here Typischer Ablauf eines Ladelaufs Großes Ladevolumen Initialisieren Monitoring-Funktionen (wenn vorhanden) Constraints abschalten Indizes löschen Laden über Direct Path Constraint-Prüfung mit SQL-Mitteln Eventuell Löschen alter Daten Oder Archivieren Aktivieren der Constraints (Sofern überhaupt gebraucht) Neu-Aufbau von Indizes Statistiken aktualisieren DBMS_STAT Materialized Views aktualisieren Laufzeit-/ Ressourcen – Statisitiken aktualisieren 143

145 Click to edit title Click to edit Master text styles Insert Picture Here Lade-Aktivitäten an Schichtübergängen Integration Enterprise User View Flüchtige Daten PersistentKopien / teilpersistent dynamisch Kopieren Selektieren Generische Datenstrukturen (isolierte Tabellen, teil-ausgeprägte Datentypen) Keine Constraints 3 NF Datenstrukturen (ER-Tabellen, ausgeprägte Datentypen) Aktivierte Constraints Multidimensionale Modelle (ER-Tabellen, ausgeprägte Datentypen) Mengenbasiertes Prüfen ohne Constraints Umschlüsselung Lookups -> Referenz-/Stammdaten Joins Aufbauen von Distinct-Strukturen (Normalisieren) Umschlüsselung Lookups -> Dimensionsdaten Joins - Denormalisieren Normalisieren (Granularisieren) 144 Denormalisieren Historisieren z.T. Aggregieren Clearing-Verfahren, technisches, logisches, semantisches Prüfen

146 Click to edit title Click to edit Master text styles Insert Picture Here ETL-Aktivitäten sind kontrollierte Vorgänge Objektbezogenes Vorgehen Objektbezogenes Steuern der Parallelisierung Gezieltes Ein-/ Ausschalten der Constraints Gezieltes Ein-/Ausschalten Logging Gezieltes Aktualisieren der Statistiken einzelner Objekte Gezieltes Aktualisieren von Materialized Views Enterprise Information Layer User View Layer Data Integration Layer Process neutral / 3 NF Lade-Aktivitäten Lese-Aktivitäten Pauschale Schema-bezogene Routinen vermeiden. Diese sind in OLTP- Systemen sinnvoll aber nicht im DWH.

147 Click to edit title Click to edit Master text styles Insert Picture Here Umgang mit Constraints im DWH Constraints werden im DWH seltener gebraucht (Gegensatz zu OLTP) Es finden keine Benutzer-initiierten Inserts / Updates statt Potentielle Änderungen sind alle bekannt und können gezielt behandelt werden Mengenbasierte Prüfungen schneller als Contraint-Prüfungen Sinnvolle Contraints sind: PK-Contraints / Index auf Stamm- / Referenztabellen PK-Contraints / Index auf Dimensionstabellen

148 Click to edit title Click to edit Master text styles Insert Picture Here Notwendige Prüfungen Dimensionen des Star Schemas Parent-Child – Kardinalität zwischen Hierachie-Leveln Eindeutigkeit (PK) der Einträge auf dem untersten Level Faktentabellen Sind alle Faktensätze über Joins mit den Dimensionen erreichbar? Sind alle FK-Felder mit Werten gefüllt

149 Click to edit title Click to edit Master text styles Insert Picture Here Umgang mit Tabellen beim Laden Target Table Keine Constraints aktiv Keine Trigger aktiv Keine Indizes (Nologging) Mengenbasiertes Prüfen von * Eindeutigkeit * NOT NULL * Feldtypen * FK / PK – Relationen *Sonstige Checks Flashback Recovery aktiv 148

150 Click to edit title Click to edit Master text styles Insert Picture Here Einsatz von Compression 149 Oracle Data Warehouse

151 Click to edit title Click to edit Master text styles Insert Picture Here Fallstricke und Empfehlungen Mindestens Standard-Kompression sollte im DWH eingesetzt werden Tabellen mit Standard-Kompression dekomprimieren sich bei vielen vielen INSERTS / UPDATES Regelmäßiges Rekomprimieren Partitionen von partitionierten Tabellen unterschiedlich behandeln

152 Click to edit title Click to edit Master text styles Insert Picture Here Das Datenwachstum beherrschen Komprimieren: Verwaltung und Kosten reduzieren Kompressions Typ:Einsatz für:Faktor Basic Compression Read only Tabellen und Partitionen in Data Warehouse Umgebungen oder inaktive Daten- Partitionen in OLTP Umgebungen. 2-4 OLTP Compression Aktive Tabellen und Partitionen in OLTP und Data Warehouse Umgebungen. 2-4 SecureFiles Compression Non-relational Daten in OLTP und Data Warehouse Umgebungen. 2-4 Index Compression Indizes auf Tabellen in OLTP und Data Warehouse Umgebungen. 2 Backup Compression Alle Umgebungen.2 Hybrid Columnar Compression – Data Warehousing Read only Tabellen und Partitionen in Data Warehouse Umgebungen Hybrid Columnar Compression – Archival Inaktive Daten Partitionen in OLTP und Data Warehousing Umgebungen

153 Click to edit title Click to edit Master text styles Insert Picture Here 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: Im Enterprise Manager: CREATE TABLE sales_history(…) COMPRESS FOR BASIC | OLTP 152

154 Click to edit title Click to edit Master text styles Insert Picture Here Der Query Optimizer und Statistiken Oracle Data Warehouse

155 Click to edit title Click to edit Master text styles Insert Picture Here Statistiken sammeln Regelmäßig aktuelle Statistiken sind wichtig für gute Ausführungspläne Ständiges Aktualisieren belastet das System Best Practice im DWH Statistiken in Verbindung mit dem ETL-Prozesse aktualisieren. Nur diejenigen Tabellen, Partitionen und Indexe aktualisieren, die aktuell geladen bzw. verändert wurden. => Automatisiertes Aktualisieren sollte genau überlegt werden DBMS_STATS.GATHER_TABLE_STATS(Ownname=>, Tabname=> ); DBMS_STATS.GATHER_TABLE_STATS(Ownname=>, Tabname=>, Partname=>, GRANULARITY=>'PARTITION'); 154

156 Click to edit title Click to edit Master text styles Insert Picture Here Sammeln von Statistiken Tabellen -> GATHER_TABLE_STATS Indexe -> GATHER_INDEX_STATS Schema -> GATHER_SCHEMA_STATS Automatisiertes Sammeln für ein Schema Automatisiertes Sampling Parameter DBMS_STATS.AUTO_SAMPLE_SIZE Begin dbms_stats.gather_schema_stats( ownname => 'PERF',options => 'GATHER AUTO',estimate_percent=> 5,block_sample => TRUE); end; EXEC DBMS_STATS.GATHER_TABLE_STATS ( 'PART','BESTELLUNG_PART_RANGE', estimate_percent=>100); EXEC dbms_stats.gather_schema_stats( ownname => 'PERF', estimate_percent => 5,block_sample => TRUE) EXECUTE DBMS_STATS.GATHER_SCHEMA_STATS( 'OE',DBMS_STATS.AUTO_SAMPLE_SIZE);

157 Click to edit title Click to edit Master text styles Insert Picture Here Inkrementelles Statistiksammeln (11g) 11g: Incremental Global Statistics Synapsis Struktur in SYSAUX Tablespace Sehr schnelles Erzeugen der globalen Statistiken ohne die komplette Tabelle zu lesen Inkrementelles Aktualisieren einschalten Initiales einmaliges Sammeln Inkrementelles Sammeln geschieht automatisch über EXEC DBMS_STATS.GATHER_TABLE_STATS(DWH1','UMSATZ'); DBMS_STATS.SET_TABLE_PREFS(,, 'INCREMENTAL', TRUE); DBMS_STATS.GATHER_TABLE_STATS(Ownname=>, Tabname=>, DEGREE=> ); DBMS_STATS.GATHER_TABLE_STATS(Ownname=>, Tabname=>, Partname=>, GRANULARITY=>'SUBPARTITION', DEGREE=> ); Oracle Database Performance Tuning Guide 11g Release 2 / Chapter 13 - Managing Optimizer Statistics 156

158 Click to edit title Click to edit Master text styles Insert Picture Here Anwendung im DWH bei partitionierten Tabellen Globale Statistiken regelmäßig sammeln Z. B. einmal im Monat Einschalten des Incremental- Modus für die entsprechende Tabelle: EXEC DBMS_STATS.SET_TABLE_PREFS(DWH',UMSATZ, 'INCREMENTAL','TRUE'); Nach jedem Laden einer neuen Partition, die Statistiken aktualisieren: EXEC DBMS_STATS.GATHER_TABLE_STATS('DWH','UMSATZ'); Partition Tag 1Partition Tag 2Partition Tag 3Partition Tag 4Partition Tag 5Partition Tag 7Partition Tag 8Partition Tag 9Partition Tag 10Partition Tag n Globale tatistiken Neu hinzugefügte Partiton verfälscht Statistiken ETL 157

159 Click to edit title Click to edit Master text styles Insert Picture Here Schlüssel im DWH und Indizierung 158 Oracle Data Warehouse

160 Click to edit title Click to edit Master text styles Insert Picture Here Warum künstliche Schlüssel verwenden? Gründe für den zusätzlichen Aufwand künstlicher Schlüssel sind: Integration In mehreren Vorsystemen gibt es unterschiedliche Schlüssel Stabilität Natürliche Schlüssel können sich ändern Geschäftsbereiche können sich ändern DWH langlebiger als operative Anwendungen Künstliche Schlüssel bedeuten Performance für das Star Schema 159

161 Click to edit title Click to edit Master text styles Insert Picture Here Umschlüsselung Alter Name Kunden_NR Anzahl Kinder Berufsgruppe Wohnart Einkommensgruppe Ort PLZ Verkaufsregion Kunden_NR Strasse Ort PLZ Tel Partnernummer Wohnart Einkommensgruppe Verkaufsregion Dim_Kd_NR... Sequence Anwendung 2 Anwendung 1 Data Warehouse Neuer Schlüssel 160

162 Click to edit title Click to edit Master text styles Insert Picture Here Regeln für künstliche Schlüssel In Dimensionen Schlüssel sind einfach zu benutzen und kurz, um Speicherplatz zu sparen Fehler zu vermeiden Nach Möglichkeit keine zusammengesetzten Schüssel Erfordert beim Zugriff unnötig viel Vorwissen zu den einzelnen Schlüsselbestandteilen Schlüsselbestandteile können leicht NULL-Wert annehmen, die Eindeutigkeit ist gefährdet Keine Felder wählen, die NULL werden können Spaltenwerte sollten stabil sein und sich nicht mehr ändern 161

163 Click to edit title Click to edit Master text styles Insert Picture Here B*Tree Index – 4 Zugriffe bis zum Wert Zugriff über die RowID Clustering Factor

164 Click to edit title Click to edit Master text styles Insert Picture Here Bitmap – Zugriff auf Werte per Bit Stream Rowid NameAbschlussRating AAAHfVAAJAAAKOKAAA Meier Klasse_10 5 AAAHfVAAJAAAKOKAAB Schubert Abitur 5 AAAHfVAAJAAAKOKAAC Klaus-Gustav Abitur 5 AAAHfVAAJAAAKOKAAD Schmidt Diplom 5 AAAHfVAAJAAAKOKAAE Langbein Doktor 5 AAAHfVAAJAAAKOKAAF Hund Klasse_10 5 AAAHfVAAJAAAKOKAAG Vogel Abitur 5 AAAHfVAAJAAAKOKAAH Messner Abitur 5 AAAHfVAAJAAAKOKAAA AAAHfVAAJAAAKOKAAB AAAHfVAAJAAAKOKAAC AAAHfVAAJAAAKOKAAD AAAHfVAAJAAAKOKAAE AAAHfVAAJAAAKOKAAF AAAHfVAAJAAAKOKAAG AAAHfVAAJAAAKOKAAH Abschluss= Klasse_10 Abschluss= Abitur Abschluss= Diplom Abschluss= Doktor SELECT Name FROM KD_Table WHERE Abschluss=Diplom; 163

165 Click to edit title Click to edit Master text styles Insert Picture Here Physische Strukturen im Star Schema Data Mart-Schicht RegZeit Org. Linie Prod Primary Key Constraint PK Constraint Foreign Key (NOT NULL) Komprimiert Partitioniert Lokale Indizes Security Verschlüsselung Dimensionsobjekt Bitmap-Index Dimensionsobjekt 164

166 Click to edit title Click to edit Master text styles Insert Picture Here Indizierung im Star 165 D_ZEIT DATUM_ID TAG_DES_MONATS TAG_DES_JAHRES WOCHE_DES_JAHRES MONATS_NUMMER MONAT_DESC QUARTALS_NUMMER JAHR_NUMMER ZEIT_ID D_REGION REGION_ID ORTNR ORT KREISNR KREIS LANDNR LAND REGIONNR REGION D_ARTIKEL ARTIKEL_NAME GRUPPE_NR GRUPPE_NAME SPARTE_NAME SPARTE_NR ARTIKEL_ID D_VERTRIEBSKANAL KANAL_ID VERTRIEBSKANAL KANALBESCHREIBUNG VERANTWORTLICH KLASSE F_UMSATZ ARTIKEL_ID KUNDEN_ID ZEIT_ID REGION_ID KANAL_ID UMSATZ MENGE UMSATZ_GESAMT PK FK PK: Btree Index FK: Bitmap Index D_KUNDE KUNDEN_ID KUNDENNR GESCHLECHT VORNAME NACHNAME TITEL ANREDE GEBDAT BRANCHE WOHNART KUNDENART BILDUNG ANZ_KINDER EINKOMMENSGRUPPE ORTNR NUMBER, BERUFSGRUPPE STATUS STRASSE TELEFON TELEFAX KONTAKTPERSON FIRMENRABATT BERUFSGRUPPEN_NR BILDUNGS_NR EINKOMMENS_NR WOHNART_NR HAUSNUMMER PLZ ORT KUNDENKARTE ZAHLUNGSZIEL_TAGE TOTAL TOTAL_NR

167 Click to edit title Click to edit Master text styles Insert Picture Here 166 D_ZEIT DATUM_ID TAG_DES_MONATS TAG_DES_JAHRES WOCHE_DES_JAHRES MONATS_NUMMER MONAT_DESC QUARTALS_NUMMER JAHR_NUMMER ZEIT_ID D_REGION REGION_ID ORTNR ORT KREISNR KREIS LANDNR LAND REGIONNR REGION D_ARTIKEL ARTIKEL_NAME GRUPPE_NR GRUPPE_NAME SPARTE_NAME SPARTE_NR ARTIKEL_ID D_VERTRIEBSKANAL KANAL_ID VERTRIEBSKANAL KANALBESCHREIBUNG VERANTWORTLICH KLASSE F_UMSATZ ARTIKEL_ID KUNDEN_ID ZEIT_ID REGION_ID KANAL_ID UMSATZ MENGE UMSATZ_GESAMT PK FK PK: Btree Index FK: Bitmap Index D_KUNDE KUNDEN_ID KUNDENNR GESCHLECHT VORNAME NACHNAME TITEL ANREDE GEBDAT BRANCHE WOHNART KUNDENART BILDUNG ANZ_KINDER EINKOMMENSGRUPPE ORTNR NUMBER, BERUFSGRUPPE STATUS STRASSE TELEFON TELEFAX KONTAKTPERSON FIRMENRABATT BERUFSGRUPPEN_NR BILDUNGS_NR EINKOMMENS_NR WOHNART_NR HAUSNUMMER PLZ ORT KUNDENKARTE ZAHLUNGSZIEL_TAGE TOTAL TOTAL_NR Indizierung im Star

168 Click to edit title Click to edit Master text styles Insert Picture Here Wo und wie wird im DWH indiziert Enterprise Information Layer User View Layer Data Integration Layer Process neutral / 3 NF Keine IndexeB*tree für Eindeutigkeit und als Primary Key Bitmaps Lade-Aktivitäten Lese-Aktivitäten Bitmaps B*tree für Primary Keys In den Dimensionen Tabellen

169 Click to edit title Click to edit Master text styles Insert Picture Here Transaktionssteuerung Logische / technische Transaktion Flashback 168 Oracle Data Warehouse

170 Click to edit title Click to edit Master text styles Insert Picture Here Aufgabenstellung der Lade-Transaktion Betrachten des kompletten Ladelaufs als eine zusammenhängende Transaktion Entweder alle Sätze oder keine geladen Wie können abgebrochene Ladeläufe wieder rückgängig gemacht werden? 169

171 Click to edit title Click to edit Master text styles Insert Picture Here Transaktionssteuerung / -rücksetzung Markieren von Sätzen eines Ladelaufs in zusätzlichen Feldern Ladelauf-Nummer, Ladelauf-Datum,... Zurückrollen durch langsames Einzel- DELETE Arbeiten mit Partitioning Aufbau einer neuen Partition unabhängig von der Zieltabelle Schnelles DROP PARTITION im Fehlerfall Einfachste und schnellste Variante Flashback Database / Table / Query Transaktions-genaues Zurückrollen Flashback DB benötigt zusätzlichen Plattenplatz Einsatz von Data Guard 170

172 Click to edit title Click to edit Master text styles Insert Picture Here Flashback Database Vorbereitungen Archive Log Mode Prüfen, ob Flashback und Archive Log Mode der Datenbank aktiviert sind SELECT flashback_on, log_mode FROM gv$database; Abfragen der Zeitdauer, mit der Objekte aufgehoben werden SELECT name, value FROM gv$parameter WHERE name LIKE '%flashback%'; Verändern der Aufbewahrungszeit (Anzahl der Minuten 60 * 24 = 1440 = 1 Tag) ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=2880; FLASHBACK_ON LOG_MODE YES ARCHIVELOG db_flashback_retention_target

173 Click to edit title Click to edit Master text styles Insert Picture Here Flashback Logs SQL> desc gv$flashback_database_log; Name Null? Typ INST_ID NUMBER OLDEST_FLASHBACK_SCN NUMBER OLDEST_FLASHBACK_TIME DATE RETENTION_TARGET NUMBER FLASHBACK_SIZE NUMBER ESTIMATED_FLASHBACK_SIZE NUMBER SQL> SELECT * from gv$flashback_database_log; INST_ID OLDEST_FLASHBACK_SCN OLDEST_F RETENTION_TARGET FLASHBACK_SIZE ESTIMATED_FLASHBACK_SIZE

174 Click to edit title Click to edit Master text styles Insert Picture Here Abfragen auf die Änderungssituation SQL> select ora_rowscn from X; ORA_ROWSCN SQL> SELECT oldest_flashback_scn, 2 oldest_flashback_time 3 FROM gv$flashback_database_log; OLDEST_FLASHBACK_SCN OLDEST_F SQL> SELECT current_scn 2 FROM gv$database; CURRENT_SCN SQL> SELECT * from gv$flashback_database_log; INST_ID OLDEST_FLASHBACK_SCN OLDEST_F RETENTION_TARGET FLASHBACK_SIZE ESTIMATED_FLASHBACK_SIZE

175 Click to edit title Click to edit Master text styles Insert Picture Here Beispiel Flashback Table Abfrage u. Flashback der letzten Änderungs-SCN SELECT ora_rowscn FROM x; SELECT * FROM x AS OF SCN ; SELECT * FROM x AS OF TIMESTAMP to_timestamp(' :15:00', 'YYYY-MM-DD HH:MI:SS'); Zurücksetzen Flashback table x to scn ; CREATE TABLE x (Nummer number); ALTER TABLE x ENABLE ROW MOVEMENT; INSERT INTO X VALUES (1); COMMIT; Jetzt erst wird eine SCN erzeugt INSERT INTO X VALUES (1); 174

176 Click to edit title Click to edit Master text styles Insert Picture Here Flashback Database Komplette Datenbank zurücksetzen Einzelne Tabellen Ist im DWH-Load-Prozess sinvoller Zurücksetzen Über Zeitstempel Über SCN Sys-SchemaDWH-Schema startup mount exclusive; FLASHBACK TABLE dwh.X TO SCN ;FLASHBACK TABLE X TO SCN ; 175

177 Click to edit title Click to edit Master text styles Insert Picture Here Ziele Oracle DWH Architektur zur Einordnung Anforderungen an den ETL Prozess Hilfsmittel in der Datenbank (Übersicht) Vorgehensweise im ETL-Prozess Hardware und Umgebungsarchitektur Themen

178 Click to edit title Click to edit Master text styles Insert Picture Here Hardware-Faktoren 177 Oracle Data Warehouse

179 Click to edit title Click to edit Master text styles Insert Picture Here Nähe von Datenbank und ETL-Server DB Server ETL Server 10 Gb Leitung DB Server ETL Server 1 Gb Leitung

180 Click to edit title Click to edit Master text styles Insert Picture Here Balanced Konfigurationen Anzahl CPUs Größe des Hauptspeichers Anzahl Platten Anzahl Disk Controller 179 ~200 MB Datendurchsatz pro CPU Anzahl CPU = Max. Durchsatz in MB/s / 200 Trennung von Storage für OLTP und DWH-Systeme !! Schnelle Platten nutzen (15000 U/min) Eher mehr, kleine Platten nutzen, als wenige große Platten nutzen Flash-Speicher in Betracht ziehen ASM in Betracht ziehen Einfaches und DB-optimiertes Verwalten Größe des Speichers in GB = 2 * Anz. CPUs Anzahl Disk Controller = Max. Durchsatz in MB/s Controllerdurchsatz in MB Controllerdurchsatz in MB = 70% * Herstellerangaben in Gbit/s 8

181 Click to edit title Click to edit Master text styles Insert Picture Here Die Hardware Umgebung – Storage Trennung von Storage für OLTP und DWH-Systeme Schnelle Platten nutzen (15000 U/min) Eher mehr, kleine Platten nutzen, als wenige große Platten nutzen Flash-Speicher in Betracht ziehen ASM in Betracht ziehen Einfaches und DB-optimiertes Verwalten 180

182 Click to edit title Click to edit Master text styles Insert Picture Here Messung von IO-Durchsatz Einfache Schätzmethode Calibrate_IO Read-only Test Wenige Test-Optionen -> leicht anwendbar > 11g Orion (ORacle IO Numbers) Read / Write – Tests (Achtung schreibt auf Platten) Viele Test-Optionen OLTP + DWH Workload Ab 11.2 im BIN-Verzeichnis der DB 181

183 Click to edit title Click to edit Master text styles Insert Picture Here Einfache Schätzmethode zur Lesegeschwindigkeit SELECT table_name, num_rows, blocks, blocks*8 KB,blocks*8/1000 MB,blocks*8/ GB FROM user_tables; select tablespace_name, block_size from dba_tablespaces; TABLESPACE_NAME BLOCK_SIZE MON_G 8192 MON 8192 MON_D 8192 MON_E 8192 MON_F 8192 TABLE_NAME NUM_ROWS BLOCKS KB MB GB BESTELLUNG_PART_RANGE ,84 7,69884 BESTELLUNG_PART_RANGE_ ,84 7,69884 select count(*) from bestellung_part_Range_4; -- liest komplette Tabelle COUNT(*) Abgelaufen: 00:00:31.32 Ergibt ~0,25 GB pro Sekunde Lesegeschwindigkeit (Achtung Blöcke eventuell nicht voll, daher geringer ) select 7.7/31 from dual; SQL> 7.7/ , Blockgröße feststellen Anzahl Blöcke/ Anzahl Bytes Messen der Lese- geschwindigkeit Berechnung des Durchsatzes 182

184 Click to edit title Click to edit Master text styles Insert Picture Here ASM Verwalten ganzer Gruppen von Platten Keine Einzelaktionen DBA übernimmt die Storage-Verwaltung Gewohnte Kommandos… SQL Create… SAME in der DB Verlagern des Striping and Mirroring Everything in die Verantwortung der Datenbank Automatische Verteilung der Daten über alle Platten Verhindert von Hotspots Messung von IO-Zugriffen über DB-Statistiken (ist klassischen RAID- Verfahren überlegen) Bequemes Hinzufügen /Wegnehmen von Platten Verhindert Fragmentierung der Platten Einführung von ASM kann bis 25% verbessertes IO- Verhalten liefern Performance kommt an Raw Devices heran 183

185 Click to edit title Click to edit Master text styles Insert Picture Here ASM Architektur ASM Disks Partitionen oder LUNs, die über das Betriebssystem bereitgestellt werden Ab 11 sind einfache Partitionen, RAW Devices oder auch NFS-Dateien möglich ASM Disk Groups Eine oder mehrere ASM Disks Logical Volumes – logische Einheit von Speicherplatz Eine DB kann mehrere Disk Groups haben ASM Failure Groups Ensemble von ASM Disk Groups, die als 2 oder 3-Wege-Spiegel arbeiten ASM instance Ähnlich einer DB-Instanz aber ohne datafiles Muss hochgefahren und auch über eine SID ansprechbar sein ASM Files Files, die in den Disk Groups abgelegt sind, ohne dass man deren physischen Ort bestimmt Die ASM-Files entsprechen den sonst üblichen Datenbank-Files (1:1 Mapping) ASM verteilt diese Files über mehrere physische Bereiche (Platten) Die logischen Konzepte wie Extents, Segmente oder Tablespaces bleiben erhalten ASM Disk 184

186 Click to edit title Click to edit Master text styles Insert Picture Here ASM Architektur 185

187 Click to edit title Click to edit Master text styles Insert Picture Here Der physische Aufbau einer RAC-Umgebung Options: RAC Speichernetzwerk CPU Knoten 1Knoten 2 Privates Netzwerk (Interconnect) Öffentliches Netzwerk Instanz 1Instanz 2 Daten 186

188 Click to edit title Click to edit Master text styles Insert Picture Here Ausfallsicherheit durch den Cluster 16-port switch 1 Gigabit ethernet 16 Storage arrays, each with disks 4 nodes, each with 4 x 2 Ghz CPUs 5 PCI slots 187

189 Click to edit title Click to edit Master text styles Insert Picture Here Architektonische Vorteile RAC und ETL Voraussetzung ETL in der Datenbank Nur dieses bringt Last auf die RAC-Knoten Verteilung der Datenbank-basierten ETL-Jobs auf unterschiedliche Knoten Laufen keine ETL-Jobs Knoten frei für andere Datenbank-Aufgaben Geringere Hardware-Anschaffungskosten Wegfall Backup-Rechner Wegfall Netzlast Direkter ETL-Zugriff auf Daten der eigenen Datenbank und über schnelle Leitungen 188

190 Click to edit title Click to edit Master text styles Insert Picture Here Allgemeine Aufbauempfehlungen RAC aus ETL-Sicht Die Knoten nicht zu klein wählen Sollten so stark sein, dass sie zusammenhängende ETL-Jobs auch alleine bewältigen können. (Z. B. 4 CPUs pro Knoten) RAC und ETL Das System sollte nicht darauf angewiesen sein, über die Knoten hinweg parallelisieren zu müssen, um zu skalieren. Skalierung gelingt über die gezielte Steuerung zusammenhängender Lade-Jobs auf die unterschiedlichen Knoten. Durchsatz für Interconnect 1-2 Gbit / Sec Hauptspeicher 4 GB pro CPU Durchsatz für das Speichernetzwerk: pro CPU mindestens 100 MB/Sec 189

191 Click to edit title Click to edit Master text styles Insert Picture Here Performance und Systemzustand überwachen (Hilfsmittel) 190 Oracle Data Warehouse

192 Click to edit title Click to edit Master text styles Insert Picture Here Automatic Database Diagnostic Monitor (ADDM) und AWR sysaux User 1User 2 AWR stündlich ADDMFindings 1……nn% 2……nn% 3……nn% ……. Statistics_level TYPICAL -> ON BASIC -> OFF 8 Tage lang Recommendations - Hardware - Init-Parameter - Space Konfig. - Performance Advisor Action OEM Addmrpt.sql Rationale 4 DBMS_ADVISOR Package MMON- Process use SQL Tuning Advisor Undo AdvisorSegement Advisor AWR-Report 191

193 Click to edit title Click to edit Master text styles Insert Picture Here AWR (Analytic Workload Repository) Regelmäßiges Sammeln von einer Vielzahl von System-generierten Statistiken Mit Hintergrundprozessen (MMON) Gespeicherte Statistiken des MMON in SYSAUX Tablespace Vorkonfiguriert generiert AWR alle 60 Minuten Snapshots Parameter STATISTICS_LEVEL (Basic/Typical/All) Basic schaltet das Sammeln aus Retention-Time (Default 8 Tage) DBA_HIST_* - Views zur Auswertung Manuell starten execute dbms_workload_repository.create_snapshot(ALL); Auswerten Awrrpt.sql OEM 192

194 Click to edit title Click to edit Master text styles Insert Picture Here Trace einer Session *** :08: ===================== PARSING IN CURSOR #1 len=62 dep=0 uid=0 oct=47 lid=0 tim= hv= ad='34ab52dc' sqlid='2bqy8r6vufn88' BEGIN dbms_monitor.session_trace_enable(135,181,false); END; END OF STMT EXEC #1:c=0,e=1082,p=0,cr=0,cu=0,mis=1,r=1,dep=0,og=1,plh=0,tim= *** :09: CLOSE #1:c=0,e=45,dep=0,type=0,tim= ===================== PARSING IN CURSOR #3 len=41 dep=0 uid=0 oct=3 lid=0 tim= hv= ad='34ab4260' sqlid='2b69gpx04v5tt' select count(*) from dwh.wh_transaktionen END OF STMT PARSE #3:c=0,e=63,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,plh= ,tim= EXEC #3:c=0,e=43,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,plh= ,tim= FETCH #3:c=0,e=792,p=0,cr=49,cu=0,mis=0,r=1,dep=0,og=1,plh= ,tim= STAT #3 id=1 cnt=1 pid=0 pos=1 obj=0 op='SORT AGGREGATE (cr=49 pr=0 pw=0 time=0 us)' STAT #3 id=2 cnt=4216 pid=1 pos=1 obj=86150 op='TABLE ACCESS FULL WH_TRANSAKTIONEN (cr=49 pr=0 pw=0 time=8940 us cost=16 size=0 card=4216)' FETCH #3:c=0,e=3,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=0,plh= ,tim= *** :09: CLOSE #3:c=0,e=28,dep=0,type=0,tim= ===================== PARSING IN CURSOR #2 len=57 dep=0 uid=0 oct=47 lid=0 tim= hv= ad='34bc4a1c' sqlid='faaagm066mu1f' BEGIN dbms_monitor.session_trace_disable(135,181); END; END OF STMT Identifizierung einer zu prüfenden Session select sid,serial#,terminal,program,module from v$session; ASCHLAUC sqlplus.exe sqlplus.exe Aktivieren des SQL-Trace execute dbms_monitor.session_trace_enable(135,177,true); -- TRUE / FALS mit bzw. Ohne waits und zusätzliche Analysen Deaktivieren execute dbms_monitor.session_trace_disable(135,181); 193

195 Click to edit title Click to edit Master text styles Insert Picture Here Auswertung Trace-Dateien TKPROF tkprof orcl_ora_4488.trc c:\abc.txt explain=sys/sys sort=fchqry Trace Analyzer (TRCA) Download über Doc

196 Click to edit title Click to edit Master text styles Insert Picture Here 195


Herunterladen ppt "Oracle Data Warehouse – ETL in der Datenbank / Zusammenspiel mit Nicht- Oracle – ETL - Tools Alfred Schlaucher DATA WAREHOUSE."

Ähnliche Präsentationen


Google-Anzeigen