Automatisierte Datenmigration mit dynamischen SQL

Ähnliche Dokumente
Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Urs Meier Art der Info Technical Info (Februar 2002) Aus unserer Projekterfahrung und Forschung

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS Metadaten

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

IV. Datenbankmanagement

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Kapitel 33. Der xml-datentyp. In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023

Referenzielle Integrität SQL

Oracle 9i Einführung Performance Tuning

MIN oder MAX Bildung per B*Tree Index Hint

SOLISYON GMBH TOBIAS GRUBER BEN WEISSMAN. Analyse von Dimensions-Schlüsselfehlern bei der Aufbereitung von SSAS Datenbanken

SQL. Fortgeschrittene Konzepte Auszug

6. Sichten, Integrität und Zugriffskontrolle. Vorlesung "Informa=onssysteme" Sommersemester 2015

DB2 Codepage Umstellung

Oracle Virtual Private Database

PostgreSQL in großen Installationen

Universität Duisburg-Essen Informationssysteme Prof. Dr.-Ing. N. Fuhr. Praktikum Datenbanken / DB2 Woche 8: Trigger, SQL-PL

SQL: statische Integrität

Tag 4 Inhaltsverzeichnis

Universität Stuttgart Abteilung Anwendersoftware Steht für Embedded SQL in Java. - Java-Methoden als SQL Stored-Procedures

Prozedurale Datenbank- Anwendungsprogrammierung

Leitfaden für den Import von Artikeln, Sicherheitsdatenblättern, Leistungserklärungen und CE-Kennzeichnungen

Bibliografische Informationen digitalisiert durch

Markus Feichtinger. Power Systems. Der Weg zu POWER! 2009 IBM Corporation

SQL (Structured Query Language) Schemata Datentypen

Zeitlich abhängig von OWB?

Aktualisierung zum Buch Windows und PostgreSQL

Hochschule Karlsruhe Technik und Wirtschaft Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

Datenbanken Konsistenz und Mehrnutzerbetrieb III

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Mit dem Tool Stundenverwaltung von Hanno Kniebel erhalten Sie die Möglichkeit zur effizienten Verwaltung von Montagezeiten Ihrer Mitarbeiter.


Dipl. Inf. Eric Winter. PostgreSQLals HugeData Storage Ein Erfahrungsbericht

Oracle SQL Tutorium - Wiederholung DB I -

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Die Oracle BI Trilogie von Trivadis

Datenbankstatistiken im Griff mit DBMS_STATS. DOAG 2012 Konferenz + Ausstellung Nürnberg 21. November 2012

Tag 4 Inhaltsverzeichnis

Oracle 12c: Neuerungen in PL/SQL. Roman Pyro DOAG 2014 Konferenz

Datenmanagement in Android-Apps. 16. Mai 2013

Übung 7 DBMS-FUNKTIONALITÄTEN UND DATENIMPORT

Shopware 4.1 Kategorien

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

desk.modul : WaWi- Export

mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 11. Juni 2007

Tec Local Systemvoraussetzungen (Software) TecLocal 4.0 Systemvoraussetzungen (Software)

Tec Local Systemvoraussetzungen (Software) TecLocal Systemvoraussetzungen (Software)

Kurs. Teil 7 UNDO-Management. Universität Hannover. Agenda. Einführung. Nutzung RBS Oracle 9i Einführung Performance Tuning.

Mit ApEx 3.1 eine Website mit integriertem CMS entwickeln. Enrico Mischorr merlin.zwo InfoDesign GmbH & Co. KG

Dokumentation QuickHMI-Schnittstelle für Oracle Datenbanken

Datenbankadministration

Regionaltreffen Rhein Main 26. März 2007

Übungsblatt 8- Lösungsvorschlag

Index- und Zugriffsstrukturen für. Holger Brämer, 05IND-P

Grundlagen Datenbanken Sommersemester 2008

Views in SQL. 2 Anlegen und Verwenden von Views 2

Vollständig generisches DWH für kleine und mittelständische Unternehmen

Systemvoraussetzungen

cs241: Datenbanken mit Übungen HS 2011

NoSQL mit Postgres 15. Juni 2015

Microsoft SQL Server 2000 Programmierung

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und combit GmbH Untere Laube Konstanz

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

Leseprobe: SQL mit MySQL - Band 4 Kompendium mit Online-Übungs-DB. Kompendium zur schnellen Kurzinformation der Datenbanksprache SQL/MySQL 5.

Der Neue Weg zur Verschlüsselung von Datenbankinhalten

Grundzüge und Vorteile von XML-Datenbanken am Beispiel der Oracle XML DB

FATCA Quo vadis? Georg Blesinger Consultant Financial Services Frankfurt, Januar 2011

Bekannte Fehler / Offene Punkte Online- Versorgungsschnittstelle

Prozessarchitektur einer Oracle-Instanz

Automatisierung von Tabellen- und Index-Reorganisationen

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

SQL structured query language

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

XI JDBC/IDOC Szenario

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

Naxtron GmbH Schlosstalstrasse Winterthur. Subject. New Features Oracle 9i Tuning. Edo Bezemer. Author

Oracle: Abstrakte Datentypen:

Data Warehouse schnell gemacht Performanceaspekte im Oracle DWH

Flashback Früher war alles besser Marion Mahr Daniel Schulz Flashback Früher war alles besser

Suchmaschinen. Universität Augsburg, Institut für Informatik SS 2014 Prof. Dr. W. Kießling 23. Mai 2014 Dr. M. Endres, F. Wenzel Lösungsblatt 6

Klausur Interoperabilität

Unterabfragen (Subqueries)

Oracle DWH Konferenz Neuss

Die Telefoniefunktion von kwp-bnwin.net wird auf einem 64-bit System nicht unterstützt! Die Mindestauflösung ist 1280 x 1024 bei Textgröße 100 %

Datenbanken (Bachelor) (SPO2007) WS 2011/12

Der SAS DataStep und die Prozedur SQL Cellent Finance Solutions GmbH Seite: 1

Berechnung von Kennzahlen mit der SQL Model Clause

Nutritioner V2.0: Lokaler, Synchronisations- und Servermodus

OXID esales Dokumentation

DOAG Regionaltreffen TABLE REORG. Klaus Reimers. Leiter Beratung & Entwicklung, ORDIX AG, Paderborn

Maschinenrichtlinie 2006/42/EG 150 Fragen und Antworten zum Selbststudium

Artenkataster. Hinweise zur Datenbereitstellung. Freie und Hansestadt Hamburg. IT Solutions GmbH. V e r s i o n

Neuer Releasestand Finanzbuchhaltung DAM-EDV E Inhaltsverzeichnis. 1. Neuerungen Schnittstelle Telebanking mit IBAN und BIC...

Options- und Freitext-Modul Update-Anleitung

Installation von horizont 4 bei Verwendung mehrerer Datenbanken

Systemvoraussetzungen:

Transkript:

Automatisierte Datenmigration mit dynamischen SQL Rolf Wesp Consultant Rolf.Wesp@trivadis.com Düsseldorf, 27. Oktober 2009 Baden Basel Bern Brugg Lausanne Zürich Düsseldorf Frankfurt/M. Freiburg i. Br. Hamburg München Stuttgart Wien

Agenda Projektumgebung Migrationsverfahren MigrDataDictionary Daten sind immer im Spiel. Migrationsprozess Nutzen / Mehrwert 2

Projektumgebung (1/4) Projekt: Migration der Dimensionsbezüge aller Fakten in einem 2-stufigen DataWarehouse Kunde: internationaler Hersteller von Telko- Netzelementen und Management-Systemen Datenbank: Oracle 10.2.0.4.0 Enterprise Edition Sprache: PL/SQL 3

Projektumgebung (2/4) Anlass Reorganisation der Zuordnung von Netzelementen zu regionalen DataWarehouse-Servern Reduzierung der Anzahl Server in den Regionen internes, nicht anzutastendes Verfahren generiert neue IDs für alle Netzelemente, schreibt eine Mappingtabelle zwischen alten und neuen IDs alte IDs in den Fakten sind durch neue zu ersetzen 4

Projektumgebung (3/4) Regionales DataWarehouse 1 23 66 90 5 3 4 42 6 77 55 9 Element Management System Netzelement GID 1 GID 2 GID 3 GID 4 GID 5 GID 6 GID 7 Regionales DataWarehouse 1 23 66 90 513 3 4 42 614 77 55 9 NEW_ID 11 12 13 14 OLD_ID 3 4 5 6 Element Management System Netzelement GID 1 GID 2 GID 11 GID 12 GID 13 GID 14 GID 7 5

Projektumgebung (4/4) Problem / Herausforderung 13.000.000.000 Datensätze in ca. 24.000 Faktentabellen im laufenden Betrieb migrieren Analyse der Tabellen und des Mengengerüsts 16.000 Tabellen sind nicht partitioniert, die meisten davon halten < 200.000 Sätze / Tabelle 8.000 partitionierte Tabellen, 230.000 Partitionen, davon 99.000 nicht belegt 11 Mrd. Datensätze in partitionierten Tabellen 6

Migrationsverfahren (1/8) Migration in drei Varianten Update der Fakten für nicht partitionierte Tabellen mit Anzahl Zeilen < einstellbarem Schwellwert Truncate und Insert für große, nicht partitionierte Tabellen Aufbau einer Hilfstabelle mit der Struktur der Faktentabelle Einlesen der Fakten, dabei Austausch der alten Dimensionswerte durch die neuen Truncate der Faktentabelle, Insert aus der Hilfstabelle Exchange Partition für partitionierte Tabellen, je Partition: Aufbau der Hilfstabelle und Einlesen der Fakten wie bei Truncate und Insert Austausch der Partition gegen die Hilfstabelle 7

Migrationsverfahren (2/8) Variante Update ID_MAP (index organized table) NEW_ID 120010001 120010002 120010003 120010004 ID_1 OLD_ID 1234500 132431 6766178 71637623 Faktentabelle (klein, nicht partitioniert) Update <Faktentabelle> f set (f.<id_col1> [, f.<id_col2>, ]) = (select m1.new_id [,m2.new_id, ] from ID_MAP m1 [,ID_MAP m2, ] ) where where f.<id_col1> = m1.old_id [ and f.<id_col2> = m2.old_id and ] exists (select 1 from ID_MAP where old_id = f.<id_col1>) [ and exists (select 1 from ID_MAP where old_id = f.<id_col2>) and ] Meas_1 ID_2 Meas_2 Meas_3 120010001 1234500 5655 120010004 71637623 0 12 120010003 6766178 7256 120010002 132431 2 34 6766178 6259 132441 1 0 8

Migrationsverfahren (3/8) Variante Truncate und Insert (1/2) ID_MAP (index organized table) Create table <Hilfstabelle> as NEW_ID OLD_ID select m1.new_id, f.<meas_col1> [, f.<meas_col2>, ] 120010001 1234500 from <Faktentabelle> f, ID_MAP m1 120010002 132431 where f.<id_col1> = m1.old_id 120010003 6766178 UNION ALL - - nicht gefunden 120010004 71637623 select f.<id_col1>, f.<meas_col1> [, f.<meas_col2>, ] from < Faktentabelle> f Faktentabelle (groß, nicht partitioniert) where not exists (select 1 from ID_MAP ID_1 Meas_1 Meas_2 Meas_3 where old_id = f.<id_col1> 1234500 5655 0 12 6766178 7256 2 34 6766180 6259 1 0 9 Hilfstabelle (mit der Struktur der Faktentabelle) ID_1 Meas_1 Meas_2 Meas_3 120010001 5655 0 12 120010003 7256 2 34 6766180 6259 1 0

Migrationsverfahren (4/8) Variante Truncate und Insert (2/2) Faktentabelle (groß, nicht partitioniert) ID_1 Meas_1 Meas_2 Meas_3 120010001 1234500 5655 0 12 120010003 6766178 7256 2 34 6766178 6259 1 0 Hilfstabelle (mit der Struktur der Faktentabelle) ID_1 Meas_1 Meas_2 Meas_3 120010001 5655 0 12 120010003 7256 2 34 6766178 6259 1 0 Truncate table <Faktentabelle> Insert into <Faktentabelle> select * from <Hilfstabelle> Drop table <Hilfstabelle> 10

Migrationsverfahren (5/8) Variante Exchange Partition (1/2) Part. 1 Create table <Hilfstabelle> as ID_MAP (index organized table) select m1.new_id, f.<meas_col1> [, f.<meas_col2>, ] NEW_ID OLD_ID from <Faktentabelle> partition <Partitionsname> f, 120010001 1234500 ID_MAP m1 120010002 132431 where f.<id_col1> = m1.old_id 120010003 6766178 UNION ALL - - nicht gefunden 120010004 71637623 select f.<id_col1>, f.<meas_col1> [, f.<meas_col2>, ] from < Faktentabelle> partition <Partitionsname> f Faktentabelle (partitioniert) where not exists (select 1 from ID_MAP ID_1 Meas_1 Meas_2 Meas_3 where old_id = f.<id_col1> 1234500 5655 0 12 6766178 7256 2 Alter 34table <Hilfstabelle> add constraint <constraint clause> Part. 2 132431 71637623 5102 0 create 22 index <index clause> on <Hilfstabelle> 5690 3 25 11 Hilfstabelle (mit der Struktur, allen Constraints und Indizes der Faktentabelle) ID_1 Meas_1 Meas_2 Meas_3 120010001 5655 0 12 120010003 7256 2 34

Migrationsverfahren (6/8) Variante Exchange Partition (2/2) Part. 1 Faktentabelle (partitioniert) ID_1 Meas_1 Meas_2 Meas_3 1234500 120010001 5655 0 12 120010003 6766178 7256 2 34 Part. 2 132431 71637623 5102 0 22 5690 3 25 alter table <Faktentabelle> exchange partition <Partitionsname> with table <Hilfstabelle> Drop table <Hilfstabelle> Hilfstabelle (mit der Struktur, allen Constraints und Indizes der Faktentabelle) ID_1 Meas_1 Meas_2 Meas_3 120010001 5655 0 12 120010003 7256 2 34 12

Migrationsverfahren (7/8) Optionen und Besonderheiten disable (drop index) / enable validate (using index) PK- und FK-Constraints Drop / create index (für nicht-pk-indizes) Partitioned indexes (local, global) Nologging Insert /*+ Append */ Parallel (Degree n) Exchange partition erfordert absolut identische Strukturen von Faktentabelle und Hilfstabelle (Datentyp, Länge, Nullable, PK, FK, Indizes) 13

Migrationsverfahren (8/8) Grundsätzliches zum Verfahren DDL- und DML-Kommandos zur Laufzeit generiert, mit dynamischen SQL (execute immediate) ausgeführt Zur Generierung erforderliche Informationen stehen in speziellem MigrDataDictonary, zeitlich unabhängig von der Migration aufgebaut Separater Tablespace für erzeugte DB-Objekte Dediziertes Schema für die Ausführung, Rechte auf SYS-Objekte und zu migrierende Tabellen Parameter für Bestimmung der Zielobjekte Ausführungsoptionen Ablaufsteuerung 14

MigrDataDictionary Auswerten der Steuertabelle mit Zuordnungen: DataMart Schema. Tablename[%] Columnname Für 1 oder mehrere DataMarts: Lesen des Oracle DataDictionary Kennzeichnen der zu migrierenden Spalten durch Abgleich mit den Vorgaben aus der Steuertabelle Begin migrate_gid.set_param ('MODULENAME', 'QM'); migrate_gid.set_param ('MODULENAME', 'HR'); migrate_gid.load_dict; End; / 15

Migrationsprozess (1/3) Für jede zu migrierende Tabellen (-Partitionen): Akualisierung der Anzahl Sätze (last_analyzed älter als Parameter) nicht partitioniert Variante Update oder Truncate und Insert partitioniert Variante Exchange Partition Auswertung der Steuerungs-Parameter Vergleich der Anzahlen Sätze vor und nach der Migration Migrationsprotokoll Synchrone Protokollierung der generierten Statements, ggf. der Fehlermeldungen Kennzeichnung der migrierten Tabellen (-Partitionen) im Erfolgs- und Fehlerfall 16

Migrationsprozess (2/3) Zeitfenster einstellbar Verzögerter Beginn Definiertes Ende Unterbrechung Automatisch im Fehlerfall Durch Verlassen des Zeitfensters Abbruch durch Verkleinern des Zeitfensters Jederzeitiges Wiederaufsetzen möglich Simulation möglich (nur Protokollierung, keine Ausführung) Rücksetzbar 17

Migrationsprozess (3/3) 6 obligatorische, 4 optionale (mit Defaults) Parameter steuern den Migrationsprozess Migration unterschiedlicher DataMarts mit unterschiedlichen Parametern in unabhängigen Sessions möglich Begin migrate_gid.set_param ('BEGINNDATE', sysdate); migrate_gid.set_param ('ENDDATE', sysdate + 0.5); migrate_gid.set_param ('LASTANALYZED', sysdate - 3); migrate_gid.set_param ('MODUS', 'FORWARD'); migrate_gid.set_param ('DISABLE_PK', TRUE); migrate_gid.set_param ('REBUILD_INDEX', TRUE); migrate_gid.process_migration ('HR'); End; / 18

Nutzen / Mehrwert Strukturierte Planung und Steuerung, sichere Durchführung, vollständige Überwachung von Datenmigrationen Deutliche Performancesteigerung durch Anwendung der adäquaten Migrationsvariante partitioniert Rows Zu migr. Spalten Update [Sek.] Truncate Insert [Sek.] Exchange Partition [Sek.] nein 100.000 1 14 4 nein 200.000 2 50 11 nein 2 Mio. 2 260 75 ja 2 Mio. 2 55 ja 2 Mio. 1 45 ausgeführt auf Windows Notebook, 600 MB SGA 19

Vielen Dank!? www.trivadis.com Baden Basel Bern Brugg Lausanne Zürich Düsseldorf Frankfurt/M. Freiburg i. Br. Hamburg München Stuttgart Wien