Logo Oracle Deutschland   DBA Community  -  Januar 2012
Oracle Enterprise Manager Cloud Control 12c: Erzeugen einer Teilmenge von Daten (Data Subsetting)
von Ulrike Schwinn, Oracle Deutschland B.V. & Co. KG

Oracle Enterprise Manager Cloud Control 12c besteht aus vielen neuen Funktionen, die in den unterschiedlichsten Bereichen - wie auch im Testumfeld - zu finden sind. Dabei handelt es sich beispielsweise um die Möglichkeit, eine Testumgebung mit einer Teilmenge der Daten (auch Data Subsetting) zu erzeugen, oder um die Möglichkeit, sensible Spalten zu definieren und diese beim Masking zu nutzen. In diesem Tipp wird die Funktion demonstriert, ein Daten Subset von Produktionsdaten zu erzeugen. Dies ist besonders dann erforderlich, wenn die Grösse der Test- oder Entwicklungsumgebung begrenzt ist, oder die Zeit zum vollständigen Laden auf einen Server nicht mehr ausreichend ist.

Die generelle Funktionsweise ist schnell erläutert: Anhand von Regeln wie Filterkriterien oder einer Angabe in Prozent wird die Teilmenge der Daten definiert. Die Datenmenge wird danach im originalen (IST) Zustand und nach der Reduzierung berechnet. Entspricht das Ergebnis den Anforderungen, können zwei Möglichkeiten der Datenminimierung ausgewählt werden:

  • DELETE Job zum "Inplace" Löschen der Daten
  • Datapump Export Job zum Erzeugen einer DMP Datei zum späteren Laden in eine andere Umgebung


Der Tipp unterteilt sich in folgende Abschnitte:

Voraussetzungen

Data Subsetting kann bei Targets ab der Version Oracle 10g durchgeführt werden. Generell sind zur Durchführung DBA Privilegien erforderlich, die beispielsweise über Named Credentials zur Verfügung gestellt werden können.

Um ein Datensubset zu erzeugen, ist die Berücksichtigung der referentiellen Integritäten erforderlich. Daher ist das Vorhandensein eines Application Data Models (auch ADM) eine notwendige Voraussetzung. Der Tipp Erzeugen eines Application Data Model (ADM) gibt eine gute Einführung zu dem Thema.

Definition einer Untermenge (Subset)

Im ersten Schritt navigieren Sie - wie bei allen Test Management Features - zu "Enterprise->Quality Management" und dann zu "Data Subset Definitions". Stellen Sie sicher, dass folgende Rechte zur Verfügung stehen:
  • EM_ALL_OPERATOR Cloud Control Rolle für den EM User
  • SELECT_CATALOG_ROLE Privileg für das DB Login
  • SELECT ANY DICTIONARY Privileg für das DB Login




Sie erhalten eine Übersicht über alle definierten Data Subsets.



Über "Actions -> Create..." wird ein neues Data Subset erzeugt.



Auf der "Data Subset Properties" Page geben Sie nun einen Namen und eine Beschreibung für das neue Subset an. Zusätzlich ist es notwendig, die zugehörige Datenbank auszuwählen - in unserem Fall orcl_10.2. Mit "Continue" gelangt man zur nächsten Seite.



Im nächsten Schritt wird dazu aufgefordert die Datenbank Credentials anzugeben. Da in unserem Fall ein globales Named Credential NC_GLOBAL_DATABASE existiert, wird dies verwendet. Danach wird mit "Submit" ein Job gestartet, der der Initialisierung dient.



Nachdem der Job mit "Succeeded" beendet wurde, müssen die Parameter für das Subset festgelegt werden. Dazu markiert man das Subset - in unserem Fall SH_CUSTOMERS_10.2 und klickt auf "Edit...".



Die Liste der Reiter gibt vor, welche Schritte durchgeführt werden können. In allen Fällen ist der Reiter "Applications" für die Auswahl des Schemas und der Reiter "Table Rules" für die Subset Regeln zu betätigen. Im ersten Schritt wird das Schema SH ausgewählt.



Bei den "Table Rules" betätigen Sie den Button "Create...". Nun besteht die Möglichkeit, das Subset über verschiedene Parameter zu beeinflussen. Zuerst kann eine Tabelle ausgewählt werden. Dabei ist es möglich, alle Tabellen oder nur eine Tabelle auszuwählen. In diesem Beispiel wird die Tabelle CUSTOMERS ausgewählt. Die CUSTOMERS Tabelle soll nur die Einträge der weiblichen Kunden (CUST_GENDER='F') beinhalten. Dazu wird die WHERE Klausel verwendet und die entsprechende Bedingung eingetragen. Da unter Umständen auch ein Subset mit allen männlichen Kunden generiert werden soll, wird eine Variable GENDER_VAR verwendet, die im nächsten Schritt definiert werden muss. Im letzten Teil werden die Tabellen definiert, die das Subset enthalten soll und somit in Beziehung zu der CUSTOMERS Tabelle stehen. Zur Auswahl stehen alle Tabellen, die eine Vater-Sohn Beziehung (Ancestor and Descendant) haben oder nur diejenigen, die in Vater Beziehung (Ancestor) stehen. Die Entscheidung fällt auf alle Tabellen, die in Vater-Sohn Beziehung (Ancestor and Descendant) stehen. Der Klick auf "OK" beendet diesen Workflow.



Die Warnung erinnert daran, dass noch eine Bindvariable definiert werden muss. Dies geschieht über den Reiter "Rule Parameters".





Betätigen Sie nun den Reiter "Space Estimates", um eine Abschätzung zu erhalten. Es wird eine "Source Size" - für die Originalgrösse - und eine "Estimated Subset Size" - für das Subset - ausgegeben. Die Werte werden anhand von Statistiken geschätzt. In unserem Fall gibt es ein exaktes Ergebnis. Alle Tabellen aus dem ADM werden mit der entsprechenden Zeilenanzahl und Grösse ausgegeben. Entspricht das Ergebnis nicht den Anforderungen, kann der vorherige Schritt - die Definition der "Table Rules" - wiederholt werden.



Da keine weiteren Skripte zur Nachbearbeitung benötigt werden, wird kein Eintrag unter "Pre/Post Subset Script" vorgenommen. Der Button "Return" führt zurück zur Homepage der Subset Definition. Im nächsten Schritt wird das Subset erzeugt. Dazu wählen Sie "Generate Subset ..." aus dem Actions Menü aus.



Nun wird die Art der Subset Erzeugung gewählt: Datapump Export oder Inplace mit DELETE. Danach müssen Database Credentials eingetragen werden. Da eine Bindvariable für das Subset definiert ist, kann die Subset-Definition noch einmal verändert werden. Mit "Continue" wird der Vorgang weitergeführt.



Für den Datapump Export ist ein Directory Eintrag (hier HOME) notwendig. Der Name der LOG und DMP Datei kann beeinflusst werden. Lassen Sie sich auch ein Import Skript generieren und betätigen Sie die Check Box "Generate Import Script".



Es müssen noch abschliessend Informationen für den Job - wie Credentials und Schedule - eingetragen werden. Danach heisst es abwarten, bis der Job beendet ist.

Möchten Sie einen Blick hinter die Kulissen werfen, können Sie sich entweder die Output Logdatei des Jobs ansehen oder einen Blick in das Directory des Servers werfen. Es werden nämlich nicht nur eine DMP Datei und eine Subset Import Datei erzeugt, sondern auch einige weitere Skripte. Intern werden beispielsweise sogenannte Data Subset Graph Tabellen benutzt und mit Rowids und ORA-SCN Nummern gefüllt, um das Subset zu generieren.



Import des Subset

Ein Blick auf den Server zeigt die Dateien, die generiert worden sind. Für den Datapump Import sind allerdings nur zwei Dateien notwendig: subset_import.sql und EXPDAT01_CUSTOMERS.DMP.



Nachdem die beiden Dateien auf den Server kopiert worden sind, soll das SQL Skript beim Import genutzt werden. Falls Sie das Skript nutzen, muss Ihnen klar sein, dass das Ergebnis nur noch die Informationen aus dem Subset beinhaltet - alle anderen Informationen sind gelöscht.



Im Schema SH befinden sich nun nur noch die Daten aus dem Subset. Alle anderen Inhalte sind entfernt worden. Zum Vergleich: Ursprünglich bestand das Schema SH aus 53 Tabellen, und die Tabelle hatte 55501 Einträge.



Gefällt Ihnen diese Option nicht, können auch eigene Skripte bzw. ein eigenes Datapump Import Kommando verwendet werden. Das folgende Beispiel löscht die existierenden Tabellen zuerst und erzeugt und lädt sie danach wieder mit den entsprechenden Daten.
$ impdp dumpfile=EXPDAT01_CUSTOMERS.DMP directory=home schemas=SH table_exists_action=replace ...
Beachten Sie bitte: Je nachdem welche Option bei TABLE_EXISTS_ACTION gewählt wird, müssen abhängige Objekte wie Trigger und Constraints disabled bzw. nach dem Import wieder enabled werden (siehe dazu auch Oracle Database Utilities 11g Release 2 (11.2)).

Lizenzhinweis

Für die in diesem Tipp beschriebene Funktionalität des Data Subsettings ist die Lizenzierung des Oracle Test Data Management Pack for Oracle and non-Oracle Databases notwendig.

Informationen und hilfreiche Links

Weitere Informationen finden Sie unter:

Zurück zur Community-Seite