Sie sind auf Seite 1von 299

Oracle Warehouse Builder Step-By-Step

1/299

Oracle
Warehouse Builder
11gR2
Step-By-Step
Der Praxiseinstieg
Unternehmensdaten integrieren
Auswertebasis bereitstellen
Informationsgewinnung dokumentieren
InDatabase ETL

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step


Version: 329869597
Version: 329869597
Version: 329869597
Version: 329869597
Version: 329869597
Version: 329869597

2/299

Stand: Januar 2011


Stand: Februar 2008 (Lschen von Prozessen)
Stand: Juni 2007
Stand: September 2006
Stand: Juli 2004
Stand: Oktober 2003

nderungsnummer 1, Januar 2011


Autor: Alfred Schlaucher,
Oracle Deutschland,
ORACLE Deutschland GmbH
Kuehnehoefe 5
22761 Hamburg
Germany

www.oracle.com/de
Die zugehrige OWB-Version ist OWB11G Release 2.
Die Software ist Bestandteil der Oracle Datenbank 11.2 und wird automatisch mit der Datenbank mit
installiert. Wenn nicht, kann sie ber die Installationsroutine der Datenbank nach installiert werden.
Die Stand alone Software knnen Sie zustzlich ber die folgende Oracle-Webseite beziehen:
http://www.oracle.com/technology/software/products/warehouse/index.html
Weitere Informationen zu OWB 11.2 finden Sie unter:
http://www.oracle.com/technology/products/warehouse/index.html
Die Beispieldaten befinden sich auf der CD, mit der dieses Dokument ausgeliefert wurde
(Verzeichnis Demodaten).
Kommentare, Korrekturen und Verbesserungen bitte an:.
Alfred.Schlaucher@oracle.com

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

3/299

Vorbemerkung zu dieser aktualisierten Version


Es sind jetzt fast auf den Tag genau 10 Jahre her, seit OWB zum ersten Mal im deutschen
Sprachraum vertrieben wurde. Der erste OWB-Einsatz, im Dezember 2009 fand noch ohne
Installationsroutinen statt. Die JAR-Files wurden noch manuell auf den Zielrechner kopiert. Die erste
auch fr Kunden installier fhige Version kam im Februar 2000. Bereits im April 2000 gab es die ersten
beiden produktiven Kundeninstallationen. Der Funktionsumfang lie noch zu wnschen brig. Z. B.
konnte man nur eine einzige Zieltabelle pro Mapping beschreiben. Erst im Oktober 2001 gab es mit
3.1 eine Version, die zum Wettbewerb aufgeschlossen hatte. Erweiterungen waren war multiple
Targets, CWM Konformitt und die graphischen Eigenschaften konnten sich sehen lassen. Die Version
9.1 in 2003 hatte dann schon Process Flows, die Skriptsprache, Match/Merge, multiple Inserts, Merge
und den Debugger.
Seit dieser Zeit hat sich OWB in Deutschland zu einem der am meisten genutzten ETL-Tools
entwickelt und ist in Oracle-Data Warehouse Umgebung mit weitem Abstand die Nummer 1.
In der Zwischenzeit hat Oracle eine Reihe weiterer Technologien zur Integration von Daten am Markt
eingekauft. In 2006 die Firma Sunopsis, umbenannt in ODI und in 2009 die Firma GoldenGate. Beide
Tools haben ihre Strken in dem heterogenen Zugriff auf Nicht-Oracle-Datenquellen. Besonders
GoldenGate erlaubt einen sehr Ressourcen-schonenden leichten Austausch markgngiger
Datenbanken untereinander.
Dieser Zugewinn der Heterogenitt, lst jedoch noch nicht die Transformationsaufgaben, wie sie in
einem Oracle - basierten Data Warehouse ntig sind. Hier bleibt Oracle Warehouse Builder die erste
Wahl. Kein anderes Werkzeug kommt heute an die Art und Weise heran, mit der OWB Oracle
Datenbank-Funktionalitt im ETL-Prozess ausnutzt und einsetzt. Es sind das Generieren und
Dokumentieren aller bentigten Datenbankobjekte, es ist das Ausnutzen von PL/SQL, es ist die offene
Schnittstelle hinein in die Datenbank mit der jede auch noch so komplexe Anforderung gemeistert
werden kann.
Die Standard Edition ist als Datenbank-Bestandteil kostenlose. Ohne aufwendige Investitionen ttigen
zu mssen, erhlt man ein vollwertiges graphisches ETL-Tool. Mit der jngst erneuerten SupportGarantie bis weit ber das 2020 hinaus hat man in den Projekten auch die ntige Sicherheit. OWB ist
eine sehr gut Einstiegsmglichkeit fr das Oracle Data Warehouse und hilft bei der Beherrschung der
Warehouse-Thematik.
Diese Step_By_Step-Anleitung
Diese Punkte zusammen genommen, sind wichtige Grnde fr den Entschluss die OWB
Step_By_Step - Anleitung zu aktualisieren und auf den neuesten Stand zu bringen. Diese Anleitung
hat schon eine eigene Geschichte. Mit ihren mittlerweile schon 6 Versionen hat sie sicher auch mit zur
Verbreitung von OWB beigetragen. Denn gerade Beratungsunternehmen tun sich schwer Mitarbeiter
auf mehrtgige Schulungen zu schicken. Es ist gnstiger stattdessen diese Step_By_Step -Anleitung
durchzuarbeiten.
Damit ist aber auch schon eine Herausforderung benannt: Die beste Anleitung ist eine kurze
Anleitung. Diese Anleitung sieht mit fast 300 Seiten nicht kurz aus. Aber das tuscht. Zum einen ist die
aktuelle Version um viele nicht direkt zu OWB gehrenden Themen abgespeckt worden. Andererseits
nehmen die ber 100 Bilder und Screenshots sehr viel Raum und Seiten ein.
Das Dokument ist nicht fehlerfrei. Wenn Sie Ergnzungen oder Korrekturen haben, teilen Sie diese
doch bitte mit.
Alfred.Schlaucher@oracle.com
Januar 2011

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

4/299

Inhal

Vorbemerkung zu dieser aktualisierten Version...........................................................................3


Diese Step_By_Step-Anleitung................................................................................................ 3
Inhalt............................................................................................................................................ 4

1.

Mit Step-By-Step zum Data Warehouse.................................................9

Kleine Helfer am Rand................................................................................................................. 9


Kapitelbersicht: Wo steht was.................................................................................................. 10
Die Komponenten des Oracle Warehouse-Kurzbersicht..........................................................11
Aufbau des Data Warehouse-Systems mit dem Oracle Warehouse Builder (OWB)..................11
Aus welchen Objekten besteht ein Oracle Warehouse..............................................................12
Vorgehensweise bei dem Aufbau eines Warehouse Systems mit dem Warehouse Builder......13
Allgemeine Vorgehensweise im Verlauf eines Lade-Prozesses (ETL).......................................13
Zusammenspiel mit anderen Komponenten..............................................................................14
Einige Warehouse Builder Komponenten (bersicht)................................................................15
Wo ist die Dokumentation zu OWB 11.2 zu finden?...................................................................16

2.

Einrichten der OWB Entwicklungsumgebung........................................17

bersicht zu den im Szenario benutzten Datenbank-Benutzern................................................17


Einlesen der Demodaten fr die Step-By-Step-Einfhrung........................................................18
Hilfsskripte zum Erstellen der Demo-User OLTP und DWH...................................................18
Die Installationsschritte des OWB.............................................................................................. 20
Voraussetzungen zur Installation:.......................................................................................... 20
Umschalten der Sprache vor der Installation:.........................................................................20
Die Datenbank installieren..................................................................................................... 21
Workspace einrichten............................................................................................................. 22
OWB starten........................................................................................................................... 29
Workflow Installation.............................................................................................................. 30
Direktes Starten von Komponenten auf der Betriebssystemebene (Linux und Windows)......32
Die Ausgangsituation nach der Installation................................................................................32
Englische Bedienerfhrung einschalten?...................................................................................33

3.

Eine erste bersicht zur Oberflche von OWB.......................................36

Der Projects Navigator............................................................................................................... 38


Location Navigator..................................................................................................................... 39
Globals Navigator...................................................................................................................... 39
OMB*Plus View.......................................................................................................................... 40
Module ordnen das Projekt........................................................................................................ 40
Quell- oder Zielmodul?.............................................................................................................. 42
Mit Collections Objekte nach eigenen Kriterien zusammenfassen............................................42
Ohne Locations luft nichts..................................................................................................... 44
Schemadaten, Hostname, Port, Service-Name......................................................................44
Control Center Service und Control Center Agent.....................................................................45

4.

Die ersten Schritte in dem Demo-Szenario.............................................48

Commit aller nderungen.......................................................................................................... 49


Definieren eines Source-Moduls fr eine Oracle-Datenbankquelle...........................................50
Auslesen von Tabellenbeschreibungen (Metadaten) aus einer Quelldatenbank........................52
Ein Zielschema einrichten bzw. einen neuen Workspace-User anlegen....................................54
Ein zweites Modul fr die Warehouse-Tabellen erstellen...........................................................55
Exkurs 1: Ein genauer Blick auf Module und Locations.............................................................56
Exkurs 2: Woher kommen oder wie entstehen die Warehouse Tabellen?.................................56
Flexibilitt in dem Umgang mit Datenbankobjekten...................................................................57

5.

Ein erstes Mapping erstellen....................................................................58

Eine Rundtour durch den Mapping-Editor...............................................................................58


Der Projekt-Tree (1)............................................................................................................... 59
Struktursicht (2)...................................................................................................................... 60
Editor-Flche (3).................................................................................................................... 60
Birds Eye View (3).................................................................................................................. 62
Data Viewer (5)...................................................................................................................... 62
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

5/299

Property Inspector (6)............................................................................................................. 62


Generation Results................................................................................................................. 62
Component Palette (7)........................................................................................................... 63
Das Mapping aufbauen.............................................................................................................. 65
Wechselspiel logisch/physisch oder Mapping / Modul...............................................................68
Das erste Deployment ohne das Control Center....................................................................71
Validate.................................................................................................................................. 71
Generate................................................................................................................................ 72
Deploy.................................................................................................................................... 72
Start........................................................................................................................................ 73
Deploy und Start der ersten Objekte......................................................................................73
Ein erster Fehler RPE-01012 - kein Problem.........................................................................73
Das erste Deployment - mit dem Control Center.......................................................................74
Locations registrieren............................................................................................................. 75
Die Tabelle generieren........................................................................................................... 75
Ein Mapping generieren......................................................................................................... 76
Leserechte............................................................................................................................. 76
Connectors und Database-Links............................................................................................ 77
Intelligenter Generierungsmechanismus................................................................................77
Smart-Code Generation......................................................................................................... 79

6.

Ein erster Blick in das Repository mit dem Web-Browser....................80

Aufruf des Repository Browsers............................................................................................. 80


Design-Repository Browser....................................................................................................... 84
Impact- / Lineage-Analyse direkt aus OWB heraus................................................................85
Ntzliche Hilfsmittel................................................................................................................... 87
Validate:................................................................................................................................. 87
Ad Hoc-Generierungen im Mapping-Editor............................................................................88
Anzeigen des Execution Plans direkt aus dem Mapping........................................................89
Kopieren von Metaobjekten.................................................................................................... 89

7.

Die Operatoren zum Transformieren........................................................90

Mehrere Tabellen ber JOIN verbinden und einlesen Join Operator

...............................90

Display Set................................................................................................................................. 92
Automapper............................................................................................................................... 98
In mehrere Zieltabellen schreiben - Splitter-Operator
..........................................................98
Exkurs: Multiple-Inserts in einem Kommando..........................................................................100
Exkurs: Wie viele Tabellen passen in ein Mapping und wie werden sie kombiniert.................102
Filter und Bedingungen (Where Operator)...............................................................................103
Exkurs: Zieltabellen automatisch leeren - Truncate.................................................................106
Beliebige Ausdrcke in einem SQL-Kommando - Der Expression-Builder
.......................107
CASE Strukturen im Expression Builder..................................................................................110
2. Beispiel............................................................................................................................. 112
Deduplicator Operator (DISTINCT Option)
.......................................................................112
Aggregieren von Daten (SUM, AVG)
Lookup Tabellen lesen

..................................................................................114

...................................................................................................... 118

Eine nachtrgliche nderung in ein Mapping einbauen........................................................118


NULL-Werte verhindern....................................................................................................... 121
Verwenden von Funktionen und Prozeduren Die erweiterbare Funktionsbibliothek
.......124
Anlegen einer Funktion........................................................................................................ 125
Verwenden einer Funktion.................................................................................................... 127
Verwenden von Aufrufparametern
.....................................................................................129
Parametereingabe und Aufruf des Mappings.......................................................................130
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

6/299

Set Operator (UNION, UNION ALL, MINUS, INTERSECT)

..............................................132

Schreiben von Textdateien....................................................................................................... 134


XML-Dateien erzeugen........................................................................................................ 137
Unterschiedliche Ausgabeziele............................................................................................ 138
Sortieren von Stzen - Der Sort Operator ..........................................................................140
Selbsterstellte Schreibroutinen................................................................................................ 142
Pivoting mit SQL Mitteln - Der Pivot-Operator
...................................................................142
Unpivoting mit SQL Mitteln - Der Unpivot-Operator

.........................................................147

Table Functions einfach und schnell mit OWB erstellen..........................................................148


Nested Tables und Object Types.......................................................................................... 148

8.

Daten in Das Data Warehouse importieren...........................................152

Integrieren von Textdateien...................................................................................................... 152


Wie werden EBCDIC-Dateien eingelesen?..........................................................................155
Wie werden Dateien z. B. auf Unix-Servern eingelesen?.....................................................155
Einlesen von Textdateien ber External Tables
.................................................................155
Erstellen einer External Table aus einer Textdatei-Definition................................................155
Wie entsteht die Directory-Definition in der Datenbank?......................................................157
External Tables in einem Mapping benutzen
.................................................................158
Einlesen von Dateien mit dem SQL Loader.............................................................................160
Einlesen Excel-Sourcen........................................................................................................... 161
Einlesen von ODBC-Quellen................................................................................................... 166
Verwenden von ODBC-Quellen ber den Warehouse-Builder............................................168
Einlesen von XML-Dateien...................................................................................................... 168

9.

Ein Mapping bersichtlich strukturieren und darstellen.....................169

Folder-Darstellung in Mappings............................................................................................... 169


Suchen in komplexen Mappings.............................................................................................. 170

10.

Erzeugen von Auswertemodellen in einem Data Mart.........................171

Moduleinteilung und zusammenhngende Informationen....................................................171


Wozu werden Dimensionen gebraucht....................................................................................171
Aus welchen Teilen besteht eine Dimension............................................................................171
Business Key - Surrogate Key........................................................................................... 172
Der Primary Key der Dimensionen.......................................................................................... 173
Dimensionen ber den Star Schema Wizard erstellen............................................................174
Dimension Artikel................................................................................................................. 174
Mapping zum Erstellen der Dimension.................................................................................178
Dimension Regionen............................................................................................................ 180
Dimension Kunde................................................................................................................. 181
Die Zeitdimension................................................................................................................ 184
Selbst gemachte frei-definierbare Zeit-Dimension...............................................................187
Die Faktentabelle................................................................................................................. 188
Das Fllen der Faktentabelle............................................................................................... 190
Vermeiden von Fehlern beim Schreiben der Faktentabelle..................................................191

11.

Generierungsstrategien...........................................................................193

Set based versus Row based.................................................................................................. 193


Der Code fr die Set based Variante:...................................................................................194
Der Code fr die Row based Variante:.................................................................................194
Der Code fr die Row based (Target only) Variante.............................................................196
Der Code fr die Set Based failover to Row based Variante................................................197
Der Code fr die Set Based failover to Row based (Target only) Variante...........................197
Steuerung der Generierungsvarianten.................................................................................197
Mit der Set-Based-Variante performante Mappings erzeugen.................................................197
2 Klassen von Mappings Mappings organisieren..............................................................197
Geschickte SQL-Anwendung............................................................................................... 198
Inhaltliche Prfungen............................................................................................................ 198
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

7/299

Null / NOT Null - Prfung...................................................................................................... 198


Prfung Numerisch / nicht Numerisch..................................................................................199
Prfung auf Ist-Datum / Ist Nicht Datum...............................................................................200
Summenabgleiche............................................................................................................... 200
Komplexere Lsungen - Mit temporren Zwischentabellen arbeiten....................................201
Ausnahmen, die nur mit Row Based generierbar sind.........................................................202
Den Schreibmodus ndern - Insert Update Delete............................................................203
Updates - Updates / Insert................................................................................................... 203
None..................................................................................................................................... 205
Truncate/Insert..................................................................................................................... 205
Delete/Insert......................................................................................................................... 205

12.

Pluggable Mappings................................................................................206

Wiederverwendbare Mapping-Bausteine Pluggable Mappings

.....................................206

Anwendungsszenario Generisches Protokoll........................................................................208


Zu dem ersten Punkt flexible Input-/Output-Schnittstelle...................................................208
Zu dem zweiten Punkt Erzeugen zustzlicher Stze (z. B. Kopfzeilen)............................208
Zu dem dritten Punkt (Kommunikation mit dem aufrufenden Mapping)................................210
Der Sort-Operator.................................................................................................................... 212

13.

Runtime Kontrolle....................................................................................213

Laufzeitergebnisse betrachten - Runtime Audit Browser......................................................213


Laufzeitverhalten ndern Mapping Configuration.................................................................213
Parallelisieren von UPDATE-Operationen mit CHUNKING..................................................215
Zugriff auf die Laufzeitdaten des Repositories.........................................................................216
Zustzliches Fehlerlogging Error Trigger..............................................................................218

14.

Automatisieren der Ladeprozesse-Workflow und Scheduling............219

Ladelufe mssen flexibel sein................................................................................................ 219


Struktur des Ladeprozesses................................................................................................. 219
Erstellen von Prozessen.......................................................................................................... 220
Das erste Beispiel einfache Workflows.............................................................................223
AND und FORK
........................................................................................................... 225
Schleifen bilden.................................................................................................................... 226
Wechselspiel von Variablen und Parameter.........................................................................227
Parameterbergabe von Mapping zu Mapping....................................................................228
Umgang mit Dateien - File Exists Aktivitt
........................................................................230
Umgang mit externen Aufrufen Dateien File Exists Aktivitt

.............................................232

Security von externen Aufrufen freischalten.........................................................................233


Aufrufen von SQL Plus aus einem Prozess
....................................................................234
Parameterbergabe an SQL Plus........................................................................................ 236
Aufrufen von Prozessen und Mappings Scheduling.............................................................238
Scheduling mit OWB-fremden Schedulern...........................................................................238
Scheduling mit OWB............................................................................................................ 239
Stoppen von laufenden Workflow-Prozessen ber SQL*Plus..................................................242
Herausfinden von laufenden Prozessen:..............................................................................242
Beenden der laufenden Prozesse:.......................................................................................242
Beenden der laufenden Prozesse:.......................................................................................242

15. Debugger verwenden...............................................................................243


16. Aufbauen von Skripten zum automatisierten ndern der Modelle (OMB
Plus Skriptsprache)........................................................................................248
Skriptbeispiele...................................................................................................................... 249

17.

Metadatenmanagement im Data Warehouse.........................................250

Metadaten................................................................................................................................ 250
Java API............................................................................................................................... 250
Auswirkungs-Analyse (Impact-Analyse)...................................................................................250
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

8/299

Datenfluss-Nachweise.......................................................................................................... 253
Diagramme ausdrucken....................................................................................................... 254
Auswertungen mit Application Express................................................................................256
Leichtes Austauschen von Metadaten zwischen verschiedenen Repositories (MDL-Files).....259
Versionieren von Modellen und Modellteilen............................................................................264
Change Manager Zurckholen einer alten Version...............................................................265

18.

Anhang mit Sonderthemen.....................................................................266

Aufbauen von Skripten zum automatisierten ndern der Modelle (OMB Plus Skriptsprache )
................................................................................................................................................. 266
Erstes Arbeiten mit dem Tool OMBPLUS.................................................................................267
Einloggen in dem OWB-Repository mit OMBPLUS..............................................................267
Navigieren innerhalb des Repositories.................................................................................268
Fortsetzung von Kommandos Zeilenumbruch......................................................................268
Aufbauen von Kommandos in Variablen und Starten der Kommandos................................268
Skriptaufrufe......................................................................................................................... 269
Scripte schreiben..................................................................................................................... 269
Kommentare......................................................................................................................... 269
Bildschirmausgaben............................................................................................................. 269
Variablen definieren bzw. Werte zuweisen...........................................................................269
Expressions bearbeiten........................................................................................................ 269
Lschen von Variablen......................................................................................................... 269
Arrays definieren.................................................................................................................. 269
Bedingungen........................................................................................................................ 270
Schleifen.............................................................................................................................. 270
Ausnahmebehandlung......................................................................................................... 271
Umgang mit Prozeduren und Dateien..................................................................................271
Scripte zum Auswerten und Aufbereiten..................................................................................272
Auflistung aller Tabellen pro Modul.......................................................................................272
Auflistung aller Tabellen und ihrer Columns pro Modul........................................................273
Auflistung aller Projekte, Module, Tabellen und schreiben in Datei......................................273
Auswertungen direkt ber das Runtime System..................................................................275
Verwaltungsaktivitten............................................................................................................. 276
Neuanlegen von Repository-Usern......................................................................................276
Erstellen von Snapshots....................................................................................................... 276
Pruefung ob Tabellen in Modulen Valid................................................................................276
Austauschen von Objekten ber Repositorygrenzen hinweg...................................................277
Export von Objekten............................................................................................................. 277
Importieren von Objekten..................................................................................................... 277
Deployen von Objekten, Umgang mit Control Center und Locations.......................................277
Connecten an Control Center............................................................................................... 277
Registrieren von Locations................................................................................................... 277
Actionplan und Deployment................................................................................................. 277
Starten von Mappings.......................................................................................................... 277
Automatisieren von Deploymentvorgngen und Deployment von Gruppen.............................278
Einzelne Schritte.................................................................................................................. 278
Deployment von Objekten.................................................................................................... 278
Gesamtverfahren..................................................................................................................... 279
Metadatenstrukturen ndern.................................................................................................... 279
Automatisertes ndern von Attribut-Inhalten........................................................................279
Erstellen von Mappings........................................................................................................ 282
Erzeugen von Objekten........................................................................................................... 284
Anlegen einer Textdateidefinition.......................................................................................... 284
-- Anlegen eines Modules..................................................................................................... 285
Allgemeine Tipps..................................................................................................................... 286
Aufruf eines Mapping im Batch zu Testzwecken..................................................................286
Tabellen im Speicher vorhalten............................................................................................ 286
Ntzliche Zeitfunktionen zum Erstellen einer Zeitdimension................................................286
Prfen auf Vorhandensein von Referenzstzen oder Stammdaten......................................287
Beispiel: Zugriff auf das Runtime-System:...........................................................................289
Sinnvolle Namenskonventionen........................................................................................... 289
Polling.................................................................................................................................. 290
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

9/299

Neu-kompilieren von Sourcen in der Datenbank..................................................................291


Testdaten (CSV-File)................................................................................................................ 291
Testhilfen und hilfreiche Kommandos fr SQL*Plus Tests....................................................292
Formatierungen der Ausgaben in SQLPLUS:.......................................................................292
Schnelles Erstellen einer CSV-Datei....................................................................................293
Hintergrund - Erstellen einer Tabelle mit Parameteraufruf....................................................293
Hilfskommandos zum Unterdcken des Outputs im Betriebssystemfenster:.......................293

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

10/299

1. Mit Step-By-Step zum Data Warehouse


Die besten Data Warehouse-Systeme kommen nicht von der Stange, also starten Sie ein Data
Warehouse-Projekt mit dem Ziel ein neues Data Warehouse zu bauen. Es entsteht nach den ganz
speziellen Vorstellungen der spteren Benutzer und der spezifischen Situation des Unternehmens.
Jedes Unternehmen ist anders, hat andere Ziele, hat eine andere Geschichte, andere Mitarbeiter und
andere Gewohnheiten. Es wre fatal, wenn ausgerechnet das Werkzeug, das die Strategie- und
Zukunftsplanung untersttzen soll, aus einer 0815-Standard-Analyseanwendung besteht.
Doch schon entstehen ngste:
o Wird das neue Warehouse-Projekt zu einem Erfolg?
o Wer liefert die ntige Erfahrung?
Denn ein Warehouse wird in einem Unternehmen meist nur einmal erstellt, und dann sollte es da
sein. Erfahrungen im eigenen Unternehmen sind Mangelware.
Hinzu kommen spezielle Herausforderungen die meist nur in Warehouse-Systemen auftreten:
es sind Faktoren und Techniken zu bercksichtigen, die bei operativen Systemen nicht bekannt
sind:
o Dimensionale Modellierung.
o Wechselspiel von Normalisierung und Denormalisierung
o Hohe Ressourcenanforderungen bzgl. Mengen und Performance.
o Flexibilitt von Informationsstrukturen.
o Strukturieren und Beschaffen von Informationen von denen man noch nicht wei, wer sie
wie braucht.
o Fehlende Spezifikationen usw.
Warehouse-Projekte sind Integrationsprojekte, d. h. es treffen sehr unterschiedliche operative
Systeme aufeinander. Die Daten daraus sind zu harmonisieren.
Diese Step-By-Step-Unterlage soll Ihnen helfen Aufwand in einem Warehouse-Projekt zu minimieren.
Sie ist eine Sammlung von vielen Details und Hilfestellungen, die Sie sonst mhsam zusammen
sammeln mssten. Auerdem ist sie eine Anleitung, die wie ein roter Faden durch Techniken
und Tools des Oracle-Warehouse fhrt.
Es ist kein Lehrbuch Wie erstelle ich ein Warehouse und auch kein Syntaxnachschlagewerk. Hierzu
gibt es gengend Fachbcher und auch Software-Dokumentation. Besonders empfehlenswert ist der
Oracle 11g Warehouse-Guide, entweder als PDF-File oder Buch.
Bei der Erstellung des Papiers war dennoch wichtig, alle Code-Beispiele auch vollstndig
abzudrucken. Es sind immer Beispiele, die schon mal an anderer Stelle erfolgreich liefen. Sie sind mit
Cut/Paste in das Dokument kopiert worden.
Dieses Dokument ist kein offizielles Dokument von Oracle. Die Produkte sind nicht vollstndig
beschrieben. Den vollen Umfang der genannten Funktionen und Werkzeuge sollten Sie immer in der
jeweiligen Dokumentation bzw. Online Hilfe nachlesen.

Kleine Helfer am Rand


An den verschiedenen Textstellen sind zur besseren Orientierung Hinweismarkierungen angebracht.
Diese sind:
Besondere Tipps:
Praktische Hinweise aufgrund schon mal irgendwann vorher gemachter Erfahrungen
Vorsicht Falle:
Hier gibt es besondere Tipps oder hier laufen Sie leicht Gefahr einen Fehler zu machen.
Demodaten:
Hier brauchen Sie etwas von auen z. B. Beispieldaten, die man Ihnen berlassen hat.
Anforderung:
Eine zu lsende Aufgabenstellung wird formuliert.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

11/299

Kapitelbersicht: Wo steht was


1.

Step-By-Step zum Data


Warehouse

Diese Einleitung. Hinweise zur Bearbeitung. Einordnung


von OWB in der Entwicklungsarbeit.

2.

Einrichten der OWB


Entwicklungsumgebung

Installation von
Demodaten.

3.
von

Eine bersicht zur Oberflche


OWB

Hier werden die Fenster und die Art der Bedienung


erklrt.

4.

Die ersten Schritte in dem DemoSzenario

In diesem Kapitel entstehen die fr das Demo-Szenario


ntigen Module und es werden die Metadaten zu den
Beispiel-Tabellen geladen.

5.

Ein erstes Mapping erstellen

An dem Beispiel eines sehr einfachen Mappings werden


alle Arbeiten bei der Erstellung eines lausfhigen
Mappings dargestellt.

6.

Ein erster Blick in das Repository


mit dem Web-Browser

An dieser Stelle wird das Lesen in dem Repository ber


einen Web-Browser vorgestellt, um diese Funktion bei
den folgenden Entwicklungsarbeiten ausnutzen zu
knnen.

7.

Die Operatoren zum


Transformieren

In diesem Kapitel sind aller Transformations-Operatoren


vorgestellt.

8.

Daten in das Data Warehouse


importieren

Hier sind Zugriffstechniken dargestellt.

9.

Ein Mapping bersichtlich


strukturieren und darstellen

Dieses kurze Kapitel schildert Hilfen mit denen die


Graphik von komplexen Mappings bersichtlich gestaltet
werden kann.

10.
in

Erzeugen von Auswertemodellen


einem Data Mart

Hier wird der Aufbau von Dimensionen und von FaktenTabellen gezeigt.

11.

Generierungsstrategien

Die Unterscheidung zwischen Set Based und Row


Based wird erklrt. Auf die die verschiedenen DMLOperationen INSERT, UPDATE, MERGE, DELETE,
TRUNCATE wird eingegangen.

12.

Pluggable Mappings

Das Kapitel stellt die wiederverwendbare MappingBausteine dar.

13.

Runtime Kontrolle

In diesem Kapitel sind Eingriffsmglichkeiten auf das


Laufzeitverhalten von Mappings zu finden.

14

Automatisieren der Ladeprozesse


Workflow und Scheduling

Hier werden Mapping


zusammenfassen

15.

Debugger verwenden

Debuggen von Mappings

16.

OMB Plus - Skripte

Einfhrung in den Umgang mit OMB Plus - Skripten

17.

Metadatenmanagement

Metadaten-Auswertungen
Metadaten

18.

Anhang und Sonderthemen

Anhang

Stand/letzte nderung 9/16/16

OWB

und

zu

und

Workflow,

komplexen

der

Laden

der

Workflows

Austausch

von

329869597

Oracle Warehouse Builder Step-By-Step

12/299

Die Komponenten des Oracle Warehouse-Kurzbersicht


Die Oracle Datenbank hat sich seit dem Release 7 zur idealen Warehouse-Plattform entwickelt.
Begreifen wir das Warehouse als dynamisches System mit der Notwendigkeit zur Integration vieler
Komponenten, dann untersttzt die Oracle Datenbank mit den vielen integrierten Funktionen diese
Anforderung:
Die Datenbank besitzt eine eigene ETL-Infrastruktur, die das Laden und Bewegen der Daten
innerhalb der Datenbank sehr komfortabel macht.
Die Datenbank besitzt einen eigenen Workflow-Mechanismus um den Warehouse-Prozess zu
automatisieren.
Komplexe Auswertungen werden durch analytische und statistische Funktionen direkt in der
Datenbank untersttzt.
Data Mining ist innerhalb der Datenbank mglich.
Messaging ist integriert um operative Daten auch ber Messagingverfahren ins Warehouse zu
laden.
Die OLAP-Option ermglichen komplexe Analysen.
Warehouse Metadaten sind in die Datenbank als neutraler Baustein mit aufgenommen.
Die Partitioning Option der Datenbank, Bitmap-Indizierung und Materialized Views
untersttzen die Abfrageperformance.
Mit dem Oracle Warehouse Builder (OWB) erstellen Sie ein vollstndiges WarehouseSystem und
organisieren auch den Betrieb des Systems. Im Einzelnen bernimmt OWB:
1. Aufbau des Tabellenwerkes des Warehouses (Create Table/Index/Dimension/Function/Packages
usw.)
2. Bereitstellen der Transformationslogik und Routinen von den Quelldaten aus den operativen
Systemen bis in das Ziel-Data Warehouse hinein (PL/SQL-Routinen).
3. Zugriffslogik auf Quellsysteme (Flat File, ODBC, Gateway).
4. Bereitstellen der Metadaten zur Dokumentation und Beschreibung des Warehouse Systems.
Oracle hat die Abstimmung und Integration der Werkzeuge in den letzten Jahren zunehmend
ausgebaut und verstrkt. Strategisch orientiert sich Oracle an dem CWM-Standard der OMG
(Common Warehouse Metamodel). Durch das Modellieren des Systems mit dem Oracle Warehouse
Builder entstehen Metadaten whrend Sie das System aufbauen automatisch. Graphisch sind die
Metadaten ber eine Weboberflche allen Warehouse-Benutzern zugnglich. Oracle Workflow
bernimmt die Steuerung der Lade- und Berichtsgenerierung. Der Enterprise Manager erlaubt
Ressourcen Management des gesamten Warehouses. Auch das Kontrollieren des WarehouseBetriebs ist ber das Web mglich.

Aufbau des Data Warehouse-Systems mit dem Oracle Warehouse


Builder (OWB)
Data Warehouse Systeme werden im Regelfall auf der Basis von relationalen Datenbanken aufgebaut.
Oracle ist dabei eines der hufigsten genutzte Datenbanksystem.
Daher ist es nur begrenswert, dass mit dem Warehouse Builder ein Werkzeug vorliegt, das genau
diese Rahmenbedingungen adressiert:

Alle bentigten Komponenten arbeiten innerhalb der Datenbank.


Es wird nur mit Datenbankmitteln gearbeitet (Tabellen, PL/SQL, Indexdefinitionen, Materialized
Views usw.)
Die Standard - Edition steht kostenfrei zur Verfgung. Mit dieser Standard - Version kann man
bereits ein komplettes Dada Warehouse System aufbauen. (Dieses Dokument beschreibt nur die
Standard - Version)

Es sind also keine zustzlichen Sprachmittel oder Programme auerhalb der Datenbank ntig.
Mit dem Warehouse Builder werden neue Potentiale frei gegeben: Er erlaubt das Erstellen von
PL/SQL-Programm-Code mit graphischen Mitteln und unter Verwendung graphisch angezeigter
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

13/299

Metadaten. Diese Vorgehensweise schafft grere Produktivitt bei den Projektmitarbeitern und fhrt
schneller zu Ergebnissen. Die bersichtlichkeit der Ergebnisse minimiert den Wartungsaufwand. Der
Oracle Warehouse Builder ist auf allen Ebenen des Warehouse Systems einsetzbar, er kann aus
Quellsystemen extrahieren, er kann Daten prfen und validieren und sie in beliebigen WarehouseArchitekturen speichern.

Warehouse Life Cycle Management mit OWB


Warehouse Systeme erstellt man heute inkrementell. Die Projekte bearbeiten nacheinander
Teilbereich fr Teilbereich des Unternehmens. Fr jedes Inkrement durchluft ein Projekt dabei
mehrere Phasen:
Analyse des Informationsbedarfs
Entwurf/Definition der Warehouse-Struktur (Datenmodelle und Tabellen)
Erstellen der Ladelufe zum Befllen des Warehouses
Dokumentation des Gesamtsystems (Metadatenkatalog)
(Sehen sie hierzu auch die entsprechenden Vorgehensmodelle fr die inkrementelle Warehouse
Entwicklung).
Danach startet der Echtbetrieb des Warehouse-Inkrements und der Wartungsfall beginnt, nderungen
stellen sich ein und fhren zu neuen Versionen. Alle diese Aktivitten untersttzen der Warehouse
Builder.

Warehouse Life Cycle Management

Aus welchen Objekten besteht ein Oracle Warehouse


Ist das Data Warehouse erstellt so besteht es in der Regel aus folgenden physischen DatenbankObjekten:
Tabellen, Indexdefinitionen sowie Zuordnung zu Tablespaces mit physischen Parametern
Views und Materialized Views
Dimensionstabellen
Funktionen und Prozeduren (PL/SQL)
DB-Links
Sequences
Loader-Scripte
External Tables
Queues
TCL-Skripte fr den Enterprise-Manager
Oracle Workflow Steuerroutinen

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

14/299

Vorgehensweise bei dem Aufbau eines Warehouse Systems mit


dem Warehouse Builder
An dieser Stelle schon mal voraus blickend eine Liste mit typische Entwicklungsschritten:
(Schritte 1-3 ohne Warehouse Builder)
1. Analyse der Benutzeranforderungen (Welche Auswertungen bentigt der Fachanwender?)
2. Analyse der Quellsysteme (Wo sind die bentigten Daten?) Bereitstellen der Datenmodelle der
Quellsysteme.
3. Architektur des Warehouses (Es gilt ein System aufzubauen, das einerseits flexible fr immer
wieder neue Anforderungen ist, skalierbar fr Mengen ist aber auch berichtsbergreifende
Stimmigkeit der Informationen garantiert - siehe die oben genannten Beispielarchitektur)
4. Abbilden der Wunscharchitektur innerhalb des OWB (Definieren der sog. Module, s. u.).
5. Nachdokumentation der Quelldatenstruktur (DB-Kataloge, Flat File Struktur) mit dem OWB
(Import Metadaten).
6. Definition und Aufbau der Zielschemen fr Stage/Warehouse (3NF-Modelle)/Data Mart(Star
Schema) je nach Konzept. Die Modelle knnen natrlich auch alternativ mit
Modellierungswerkzeugen entworfen werden. (Siehe hierzu weiter unten "Exkurs: Woher kommen
oder wie entstehen die Warehouse-Tabellen").
7. Generieren und Anwenden der DDL des Warehouses ber den Deployment Manager.
8. Erstellen der sog. Transformationsmappings ber die Mapping-Editoren. Bei dem Aufbau des
gesamten Warehouses werden mehrere Mappings entstehen, weil man das Befllen aller Tabellen
des gesamten Warehouse Systems in mehrere Schritte untergliedert.
9. Generieren und Anwenden der Transformationsroutinen (PL/SQL) mit dem Deployment Manager.
Bei diesem Schritte werden die einzelnen Mappings ber Testdatenlufe getestet.
10. Zusammenfassen der einzelnen Mappings zu einem kompletten Ladeszenario. Hierzu erstellen
Sie einen Workflow mit dem Process-Editor.
11. Festlegen des Scheduling.
12. Versorgen von entsprechenden Auswertewerkzeugen mit Metadaten.

Allgemeine Vorgehensweise im Verlauf eines Lade-Prozesses (ETL)


Im Verlauf eines Projektes sind bei der technischen Realisierung des Ladeprozesses immer wieder
hnliche Schrittfolgen durchzufhren. Diese sind hier zusammengefasst:
1. Entgegennehmen der Quelldaten: Der Extrakt-Vorgang hinterlsst Quelldaten in dem
Eingangsbereich des Data Warehouses (z. B. Stage).
2. Prfungen auf Vollstndigkeit und Richtigkeit der Quelldaten.
a. Anzahl Stze
b. Gltige Wertebereiche
c. Vorhandensein von Referenzdaten
d. Eventuell Eindeutigkeit
e. ...
3. Import und Prfen der Dimensionsdaten
a. Update / Insert / Merge
b. Eventuell Historisierung / Slowly Changing Dimensions
4. Prfung der Bewegungsdaten auf Stimmigkeit mit den Dimensionsdaten
a. AntiJoin-Prfung
b. Event. Fehlertabelle erstellen (zur Nachbearbeitung)
5. Aufheben der Constraints der Faktentabelle
a. Eventuelles Lschen von Indexeintrgen
b. Eventuelles Aufheben der Fast Refresh Fhigkeit der Materialized Views
6. berfhrung Bewegungsdaten in die Faktentabellen
a. Join mit Dimensionen
7. Nacharbeiten
a. Aktivierung der Constraints
b. Event. Aktualisierung der Indexe
c. Event. Refresh Materialized Views
d. In Stage-Tabellen diejenigen Stze entfernen, die geladen wurden.
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

15/299

Zusammenspiel mit anderen Komponenten


Oracle Warehouse Builder 11.2 (OWB) ist Bestandteil der Oracle Datenbank. OWB ist installiert, wenn
Sie die Datenbank installiert haben. Sie knnen OWB alber auch separat ber das Oracle Technology
Network (OTN) beziehen, wenn Sie OWB 11.2 mit einer lteren Datenbank-Version zusammen
betreiben wollen.
Hier sind alle Komponenten aufgelistet, die entweder zu OWB gehren oder mit OWB
zusammenarbeiten.

SQL Loader (optional): Ldt Flat File direkt in die Datenbank (wird seit Oracle 9i durch "External
Tables" ersetzt/ergnzt), Bestandteil der Datenbank.
Gateways (optional): Zu allen gngigen Datenbanken (DB2, SQL Server, Sybase, Informix...)
gibt es sog. Gateways. Diese knnen ber DB-Links mit den Datenbank-Routinen kommunizieren.
Workflow: Regelt die logische Abfolge der durch den Warehouse Builder erzeugten Mappings.
Innerhalb des WAREHOUSE BUILDER gibt es einen Process-Editor, mit dem Sie einen Workflow
erstellen. Der Workflow luft dann auf dem Workflow-Server, den Sie bereits mit der Oracle 9i /10g
Datenbank installiert haben.
Runtime Audit Browser: (Bestandteil des Repository-Browsers). Zur Kontrolle von
stattgefundenen Ladelufen. Das ist ein Teil des Warehouse Builders, den man ber eine Web
Browser aufrufen kann. Hierzu ist keine Installation notwendig. Der Aufruf erfolgt ber das
Startmen des Clients nachdem der OWB Browser Listener zuvor gestartet wurde.
Repository Browser: (Bestandteil des Repository-Browsers). Dient der Darstellung von
Metadaten im Web. Auch das ist ein Teil des Warehouse Builders, den man ber eine Web
Browser aufrufen kann. Hierzu ist keine Installation notwendig. Der Aufruf erfolgt ber das
Startmen des Clients nachdem der OWB Browser Listener zuvor gestartet wurde.
External Table Technik: Technisches Verfahren in der Datenbank seit dem Release Oracle 9.2
Streams Verfahren: Message-basiertes Verfahren der Oracle Datenbank seit dem Release
Oracle 9.2
CDC (Change Data Capture): Message-basiertes Verfahren der Oracle Datenbank zum Auslesen
von Oracle-Log-Files seit dem Release Oracle 9.2. Besonders hilfreich bei der
Deltadatenerkennung.
DataPump: Schnelles Ladeverfahren mit Hilfe von Export/Import (ab Oracle 10g)
SAP Integrator: Bestandteil des Oracle Warehouse Builder fr den SAP R/3 Zugriff ber das SAP
R/3-Dictionary.
Peoplesoft Connector: Bestandteil des Oracle Warehouse Builder fr den Peoplesoft-Zugriff
eBusiness-Suite Connector: Bestandteil des Oracle Warehouse Builder fr den PeoplesoftZugriff
ODBC: Zugriff auf relationale Quellen auerhalb der Oracle Datenbank ber einen ODBC-Treiber
JDBC: Java-Database Connectivity, Java-basierter Zugriff. Seit Release 11.2 auch in OWB
verfgbar.
XML-DB: Funktionalitt der Oracle Datenbank seit dem Release Oracle 9.2 zum leichten
Bearbeiten von XML-Daten. Wird aus dem Oracle Warehouse Builder heraus angesteuert.
UTL_File: Technisches Verfahren in der Datenbank zu Beschreiben und Erstellen von Textfiles
Adapter fr Anwendungen wie Peoplesoft, SAP etc.: Adapter zum transaktions-basierten
Kommunizieren mit Anwendungen.
Oracle Data Profiler: Software-gesttztes Analysieren von Datenfehlern (Bestandteil des Oracle
Warehouse Builder)
ODI, Oracle Data Integrator: Template-basiertes Extraktionswerkzeug. Wir von Oracle
gemeinsam mit OWB EE (Extendet Edition) vermarktet. ODI - Komponenten knnen von OWB
aus aufgerufen werden.
GoldenGate : Tool zu Nachrichten-basierten, plattformbergreifenden Austauschverfahren. LogDatei-basiert. Kann als Vorstufe zu OWB genutzt werden.
(und viele andere Komponenten, die hier nicht erwhnt werden knnen)

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

16/299

Einige Warehouse Builder Komponenten (bersicht)

Erstellen von
TransformationsMappings

Erkennen von
Strukturabhngigkeiten
mit Hilfe von
Metadaten

Anzeigen von
Tabelleninhalten

Aufbau von
Datenflssen

Starten von Prozessen

Automatisieren von
ETL-Vorgngen

Versionieren

Steuern von
Deployments von
Objekten

Metadaten-Browser

Erkennen von
DatenqualittsProblemen

Erstellen von
Datenstrukturen

Definieren von
Qualittsregeln

Einige Editoren des Warehouse Builder zur Durchfhrung verschiedener Aufgabenstellungen

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

17/299

Komponentenbersicht des Gesamtsystems inkl. Datenbank-Komponenten

Wo ist die Dokumentation zu OWB 11.2 zu finden?


ber Oracle Technology Network (OTN) erhalten Sie die folgende Dokumentation:
http://www.oracle.com/technetwork/developer-tools/warehouse/documentation/index.html

Installation_Linux_Windows_e10579.pdf
Concepts_e10581.pdf
API_and_Srcipting_Reference_e10584.pdf (Manual zur Skriptsprache)
Data_Modeling_ETL_Data_Quality_Guide_e10935.pdf
Sources_and_targets_Guide_e10582.pdf

Hier sind auf OTN entsprechende Informationen zu finden:


http://www.oracle.com/technetwork/developer-tools/warehouse/overview/index.html

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

18/299

2. Einrichten der OWB Entwicklungsumgebung


bersicht zu den im Szenario benutzten Datenbank-Benutzern
Hier eine bersicht aller Benutzer (Datenbankschemen), die exemplarisch zur Durchfhrung des
Szenarios in dieser Unterlage verwendet werden. In vielen Hard Copies dieser Step-By-StepUnterlage finden Sie diese Benutzerdaten. Als Orientierung knnen sie hilfreich sein. Die meisten
Benutzer werden im Verlauf der Installation automatisch angelegt.
Funktion des Users
Repository-User
Workspace Owner
Workspace-User
Target-Schema (Warehouse)
Source (Quellsysteme)

User
OWBSYS
OWB112
DWH

Workflow-Schema

OWF_MGR
(Default Name)

OLTP

Wie und wann entsteht der User


Datenbankinstallation
Repository-Assistent
Wahlweise durch Repository -Assistent
oder spter ber die Oberflche
Ist in der Regel schon da.
(Anlegen manuell siehe unten)
Wird durch den Workflow Installation angelegt
(siehe unten).

Alle Schemen nach Abschluss des Dem Szenarios.


(Das Bild dient nur der Orientierung. Bitte noch nicht alle Schemen anlegen.)

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

19/299

OWBSYS
Das ist das Metadaten-Repository des Warehouse-Builders. Es ist auch gleichzeitig das Schema, in
dem alle spteren Laufzeitergebnisse dokumentiert sind. Dieses Schema wird automatisch durch die
Datenbankinstallation angelegt. Dieses kann es nur einmal pro Datenbank-Instanz geben.
OWB11 (Workspace Owner)
Workspace Owner. Der Name ist bei dem Einrichten Des Workspace frei whlbar.
Hierber ist der administrative Zugriff auf die OWB-Metadaten geregelt. Dieser Owner legt die
weiteren Workspace User an. In einer bungsumgebung (so wie hier) reicht es aus nur mit dem
Workspace Owner zu arbeiten
DWH (Workspace User oder auch Zielschema)
Dies ist das eigentliche Data Warehouse-Schema. D. h. dort werden alle Warehouse-Daten abgelegt
sein. In dieses Schema generiert OWB auch alle Lade-Routinen. Aus der Sicht des OWB-Workspace
ist das DWH-Schema ein Workspace-User. Dieser Begriff wird im Verlauf der Installation verwendet In
umfangreichen DWH-Systemen kann es hiervon mehrere geben.
OWF_MGR
Das Workflow-Schema wird bentigt, um die Workflow oder Ladeprozess-Routinen aufzunehmen.
Wenn Sie nur einzelne Mappings ohne Workflow verwenden mchten, brauchten Sie das nicht.
Es wird im Verlauf der Installation des Workflow angelegt. Die Installation ist nicht aufwendig.
OLTP (Quellschema)
Dieses Schema ist stellvertretend fr ein beliebiges Quellschema, aus dem in dem Szenario Daten
gelesen werden. Dieses wird natrlich nicht durch die Installationsroutine des OWB angelegt. Das
mssen Sie mit dem Script selbst tun.

Einlesen der Demodaten fr die Step-By-Step-Einfhrung


(ausgelieferte Dump-Datei)
Das in diesem Dokument aufgebaute Szenario arbeitet mit zwei Datenbank-Schemen.
Das Quell-Schema OLTP
Das Ziel-Schema DWH
Fr das Quell-Schema werden Daten in Form eines Oracle Daten-Dumps mit ausgeliefert.
Die Datenbankschemen sollten Sie manuell anlegen.
Hilfsskripte zum Erstellen der Demo-User OLTP und DWH
-- OLTP-User (enthlt die Quelldaten fr das Beispiel-Szenario)
CREATE USER "OLTP" IDENTIFIED BY "OLTP" ACCOUNT UNLOCK;
GRANT "CONNECT" TO "OLTP" WITH ADMIN OPTION;
GRANT "DBA" TO "OLTP";
--- DWH-User (das ist das eigentliche Warehouse-Schema)
CREATE USER "DWH DENTIFIED BY "DWH"ACCOUNT UNLOCK;
GRANT "CONNECT" TO "DWH;
GRANT "DBA" TO "DWH;
-Achtung: wenn das folgende nicht beachtet wird, kann es spter im Verlauf des Deployments der
Laderoutinen zu Fehlern kommen.
-- Wenn OLTP das Quellschema ist, dann sollten andere User darauf
-- zugreifen knnen
Connect OLTP/OLTP@orcl;
Grant select any table to public;
Die Beispieldaten fr diese Step-By-Step-Einfhrung sollten in ein Datenbank-Schema mit dem
Namen OLTP (Source) geladen werden. Diese Daten sind mit denen eines Quellsystems vergleichbar.
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

20/299

Sie erstellen in dieser Step-By-Step-Einfhrung Laderoutinen und Transformationen zur berfhrung


der Daten des OLTP-Schemas in ein Ziel-Datenbankschema, z. B. mit dem Namen DWH.
Importieren Sie dann, wie unten stehend, die Testdaten:

IMP (Kommando auf der DOS-Ebene)


Benutzer : OLTP/OLTP
/ das ist
Quellschema
EXPDAT.DMP : OLTP
(Besttigen Sie jetzt alle vorgegebenen Defaults bis auf)
Benutzer: OLTP
(Und dann wieder alle weiteren Eingaben besttigen)

Ihr

neuer

Benutzer

fr

das

Es mssten geladen werden:

ARTIKEL
65
ARTIKELGRUPPE
5
ARTIKELSPARTE
3
ARTIKEL_UMSATZ
11
BESTELLPOSITION 3000
BESTELLUNG
1000
BEST_POSITION2
4995
KREISE
646
KUNDE
1946
ORTE
12834
TAGE
3288
(src_daten.dmp: Schemaname SRC, DBA-Rechte)

(Die Orte-Tabelle wird zustzlich als Textdatei geladen, hierfr sollte eine lst-Datei bei den
Beispieldaten vorhanden sein)
Wiederholen Sie den Ladevorgang fr das Schema DWH und dem Datenbestand DWH_Daten. Die
Daten sind optional. Sie werden fr die bungen nicht bentigt. Sie knnen Sie laden, wenn Sie
einzelne bungen berspringen wollen.
Damit laden Sie:

BESTELLTE_ARTIKEL
D_ARTIKEL
D_KUNDE
D_REGION
D_ZEIT
F_UMSATZ
KUNDEN_OHNE_BESTELLUNG
KUNDEN_STAMM
LAGER
LIEFERANT
LIEFERANTENANGEBOTE
WH_TRANSAKTIONEN

Stand/letzte nderung 9/16/16

2716
65
1032
12834
3074
100000
4050
1032
1
25
25
4216

329869597

Oracle Warehouse Builder Step-By-Step

21/299

Die Installationsschritte des OWB


Diese kurze Installationsanleitung beschreibt das Verfahren auf einem Windows-Standalone-Rechner.
Die Anleitung ersetzt nicht die offizielle Dokumentation. Sie soll helfen mglichst schnell eine OWBInstallation zu Testzwecken einzurichten. Eine ausfhrliche Installationsanweisung ist in der SoftwareDokumentation enthalten.
Die Warehouse Builder Software wird ab dem Datenbank Release 11.1 mit der Datenbank zusammen
ausgeliefert. D. h. die Software ist bereits installiert, wenn Sie die Datenbank installiert haben.
OWB 11.2 wird also mit der Datenbank 11.2 zusammen ausgeliefert. Damit haben Sie das passende
Release zu diesem Dokument.
Arbeiten Sie mit Oracle 11.1 und wollen OWB 11.2 nutzen, dann mssen Sie sich die StandaloneVersion von OWB 11.2 von Oracle Technology Network (OTN) herunter laden, und diese Software in
ein separates Verzeichnis installieren.
Voraussetzungen zur Installation:
Windows-Client (Windows 2000, XP, Vista oder Windows 7), 2 GB Hauptspeicher. Wenn die
Datenbank auf dem gleichen Rechner luft, sollten es mindestens 3 GB Hauptspeicher sein.
Empfohlen wird die Oracle 11.2 Datenbank.
Schalten Sie vor der Installation die Sprache Ihres Rechners auf Englisch. Das ist lediglich eine
Vorsichtsmanahme. Wenn Sie die Einstellungen auf Deutsch belassen und die Erstellung des
Repositories spter abbricht, dann kann hier die Ursache liegen. Danach knnen Sie den Rechner
wieder auf Deutsch zurckschalten.
Umschalten der Sprache vor der Installation:
-> Start menu -> Settings -> Control Panel Regional Options

Umschalten auf eine Englisch-sprachige Arbeitsumgebung

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

22/299

Die Datenbank installieren


Installieren Sie die Oracle Datenbank 11.2 entsprechend der Vorgabe. OWB 11.2 ist automatisch mit
installiert. Sie finden es in dem Verzeichnis:
z. B.: [ORACLE_HOME]\product\11.2.0\dbhome_1\owb

Fundstelle der OWB Software im Oracle-Verzeichnis


Die eigentliche Installation besteht nur noch aus dem Einrichten des Repositories.
Bei der Installation der Datenbank wurde fr OWB bereits das Schema OWBSYS angelegt. Dieses
Schema nennt man ab 11.2 das OWB-Repository.
Bei der Datenbank-Installation kann es sein, dass die bereits eingerichteten User gesperrt sind.
Das knnen Sie feststellen, indem Sie z. B. mit SQLPlus versuchen sich als OWBSYS anzumelden.
Entsperren Sie gegebenenfalls mit:
alter user OWBSYS identified by <password> account unlock;
(Das Passwort ist in der Regel auch OWBSYS)
und
alter user OWBSYS_AUDIT identified by <password> account unlock;
(Dies ist, um die Audit-Tabellen lesen zu knnen, das bentigen Sie jedoch
Normalerweise nicht)
Wenn Sie die Datenbank neu angelegt haben, kann es sein, dass Passwrter auf GroKleinschreibweise reagieren. Das erhht zwar die Sicherheit, kann aber zu unpraktischen Effekten
fhren. ndern Sie diese Verhaltensweise:
alter system set sec_case_sensitive_logon=FALSE;
(als SYS-User)
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

23/299

Workspace einrichten
Innerhalb dieses Repositories gibt es einen oder mehrere Workspaces. Einen solchen Workspace
mssen wir noch anlegen.

Einbettung der Workspaces in das Repository-Datenbank-Schema


Bei der Installation des Workspace definiert man
den Workspace Owner
ein oder mehrere Workspace User
Der Workspace Owner ist, wie der Name schon sagt der Haupt-Zugriffsberechtigte. In einer SingleUser-Umgebung zum Testen oder Kennenlernen von OWB reicht ein solcher Workspace Owner aus,
um damit auch alle Ttigkeiten ausfhren zu knnen.
Der Workspace User hat eingeschrnkte Rechte. Er kann aber alle Design-Ttigkeiten ausfhren und
auch ETL-Jobs (Mappings) starten.
Wichtig ist: alle Datenbank-Schemen in denen Prozeduren laufen sollen, mssen als Workspace User
eingerichtet sein.

Abgrenzung Workspace User und Owner


In der folgenden Tabelle sehen Sie die jeweiligen Job-Rollen:

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

24/299

Die unterschiedlichen Rechte von User und Owner

Zum Installieren des Workspace starten Sie unter Windows den Repository Assistenten.

Starten des Repository-Assistenten um die Workspaces einzurichten


Als erstes werden Sie nach den Datenbank-Zugriffsdaten gefragt.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

25/299

Sie definieren einen Workspace - Owner:

Sie wollen einen neuen Workspace.

Sie brauchen Administrator-Rechte, weil neue User angelegt werden.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

26/299

Sie haben die Mglichkeit, die kostenpflichtigen Optionen auszuschalten. Sie knnen diese Dinge
ausschalten, denn die meisten Funktionen sind kostenfrei. Alles, was in dieser Unterlage dargestellt
wird, knnen Sie kostenfrei nutzen.

Sie teilen das Passwort des OWBSYS-Users mit. Das ist, wenn Sie es nicht gendert haben,
OWBSYS. Denken Sie an die Gro//Klein-Schreibweise, wenn Sie diese nicht ausgeschaltet haben.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

Jetzt legen Sie den Namen und das Passwort des Workspace Owners
Workspace fest

27/299

und den Namen des

Legen Sie den Namen des Tablespace fr den Workspace fest.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

28/299

Die Auswahl der Sprache knnen Sie ignorieren und whlen Sie Next.

Jetzt knnen Sie noch einen ersten Workspace User anlegen. Das kann man aber auch spter ber
die Oberflche nachholen. An diese Stelle knnte man das Zielschema angeben, in das die PL/SQL
Prozeduren hinein generiert werden.
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

29/299

Danach sollte das Einrichten des Workspace starten. Der Vorgang dauert etwa 5-10 Minuten.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

30/299

OWB starten
Sie starten OWB dann ber den Design Center Aufruf

Starten von OWB


Bei der ersten Anmeldung geben Sie den Namen des Workspace Owners an

Das Startbild.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

31/299

Workflow Installation
ber Oracle Workflow kann man Ablauffolgen erstellen. Man hat die Mglichkeit graphisch
Prozessflsse zu modellieren. Das Ergebnis sind generierte PL/SQL-Prozeduren, die in der
Datenbank gestartet werden.
Die Workflow-Komponente wird ber den Warehouse Builder mit ausgeliefert also mit der Datenbank.
Es ist die Version 2.6.4 die zur Oracle Version 11 passt.
Sie finden die Installationsroutinen in dem Unterverzeichnis WF des Warehouse Builder innerhalb
der Datenbank Software.
z. B. : [ORACLE_HOME]\product\11.2.0\dbhome_1\owb\wf

Fundstelle von Workflow in dem Datenbankverzeichnis


Sie starten die Installation mit dem Aufruf von:
Wfinstall.bat
In dem folgenden Dialog geben Sie die gewnschten Workflow-Schema-Informationen an. Whlen
Sie den Namen OWF_MGR fr das Schema (Default).

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

32/299

Die einzigen Angaben bei der Installation von Workflow


Bei diesem Vorgang wird lediglich das Schema OFW_MGR in der Datenbank angelegt und bereits
Prozeduren und Tabellen in das neue Schema geladen.
Workflow Account
owf_mgr
Password:
owf_mgr
TNS Connector Descriptor:
Rechnername:Port:SID
z. B.: localhost:1521:orcl
Bei Submit sollte sich ein Fenster mit Protokollmeldungen ffnen:

Hier wartet man 5 10 Minuten. Danach ist der Vorgang abgeschlossen.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

33/299

Direktes Starten von Komponenten auf der Betriebssystemebene (Linux und Windows)
Wir werden in diesem Dokument fast nur mit einer Windows-Oberflche Arbeiten und die
Komponenten Tool-Gesttzt aufrufen. In Ausnahmesituationen ist es aber hilfreich die Komponenten
auch direkt von der betriebssystemebene aus aufzurufen, Z. B. wenn man in einer Linux-Umgebung
arbeitet. Zum spteren Nachschlagen eignet sich diese Liste:

Design Center
Repository Assistant
OMB*Plus scripting client
Start/stop Repository Browser OC4J Server
Start Repository Browser
Start stand-alone Control Center Service
Start/stop Control Center Agent
Control Center Agent Administration

(owbclient.sh/bat)
(reposinst.sh/bat)
(OMBPlus.sh/bat)
([startOwbInst.sh/bat/][stopOwbInst.sh/bat])
(openRAB.sh/bat or openDB.sh/bat)
(run_service.sh/bat)
([ccastart.sh/bat]/[ccashut.sh/bat])
(cca_admin.sh/bat)

Die Ausgangsituation nach der Installation


Wenn Sie alle vorgenannten Installationsschritte und das Laden der Testdaten durchgefhrt haben,
msste Ihre Umgebung jetzt so aussehen:

Ausgangssituation nach der Installation:

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

34/299

Englische Bedienerfhrung einschalten?


Sind die Menpunkte nach dem Aufruf von OWB in deutscher Sprache, so ist es sinnvoll, die
Oberflche in die englische Sprache umzuschalten. Denn viele Hilfen und Hinweise auch in dieser
Unterlage sind in englischer Sprache verfasst.
Sie erhalten die englisch-sprachigen Men-Darstellungen indem Sie die Spracheneinstellungen auf
Ihrem Rechner (Regional and Language Options) auf Englisch umstellen.
Starten Sie das Control Panel in Windows (Systemsteuerung):

Whlen Sie die Regional Options:

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

35/299

Und ndern Sie die entsprechenden Optionen auf die englische Sprache wie in den Bildern gezeigt.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

Stand/letzte nderung 9/16/16

36/299

329869597

Oracle Warehouse Builder Step-By-Step

37/299

3. Eine erste bersicht zur Oberflche von OWB


Sie Starten OWB wie oben bereits beschrieben.

Der erste Bildschirm nach dem Aufruf. Es ist die gleiche Ansicht, wie von dem SQL Developer
Hier eine bersicht ber den ersten Bildschirm. OWB 11.2 erscheint in Oracles einheitlichem GUIDesign. Alle Entwicklungswerkzeuge arbeiten somit nach den gleichen Prinzipien.
Alle Fenster sind nebeneinander angebracht und berschneiden sich nicht (wie frher bei
OWB, Ausnahme Control Center, das ist eine eigene Anwendung).
Alle Fenster knnen ber das View Pull Down Men geffnet werden, wenn sie nicht sichtbar
sind.
Alle Fenster knnen mit der Maus verschoben werden, wenn man Sie mit der Maus ber ihren
Reiter selektiert und dann verschiebt. Meist arretiert man die Fenster wieder, in dem man sie
gegen eine Seitenkante eines anderen Fensters schiebt.
Alle Fenster knnen mit einem Klick auf die volle Gre des Gesamttools geswitcht werden,
um sofort mehr Editier-Flche zu erhalten. Ein nochmaliges Klicken reduziert das Fenster
wieder auf seine ursprngliche Form.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

Stand/letzte nderung 9/16/16

38/299

329869597

Oracle Warehouse Builder Step-By-Step

39/299

Der Projects Navigator


Der Projects Navigator listet die verschiedenen Projekte auf. Projekte sind vllig selbstndige
Einheiten (mit Ausnahme der Objekte, die unter dem Global Explorer zu finden sind). Hier eine kurze
Darstellung der Unterpunkte in jedem Projekt.

Definition von Quell- und Zielstrukturen,


Die Komponenten werden Module genannt.
Quellen knnen sein Oracle-Datenbanken oder
Datenbanken von anderen Herstellern, sowie
Flat Files. Datenbanken anderer Hersteller
werden ber Gateways angeschlossen.
Alle Module knnen sowohl lesend als auch
schreibend verwendet werden.

Spezielle Transportmodule fr schnelles Laden

Schnittstellen zu ERP-Systemen

Data Quality-Komponenten, Regelbausteine und


Data Profiler
Wiederverwendbare Mapping-Komponenten

Workflow und Prozesssteuerung


Scheduling / Kalender
Schnittstellen zu Oracle BI
ETL Makros
Konfiguration von
Komponenten

Stand/letzte nderung 9/16/16

Locations

und

anderen

329869597

Oracle Warehouse Builder Step-By-Step

40/299

Location Navigator
Hier sind die sogenannten Locations zu finden. ber Locations legt man fest, auf welchen Rechnern
welche Datenbanken und Datenbankschemen zu finden sind. Locations stellen die Verbindungen
zwischen den Warehouse Builder-Modellen und der tatschlichen Physik dar. Sie knnen spter
keinen Deploy-Vorgang in eine Datenbank durchfhren, ohne zuvor eine Location fr diese Datenbank
sauber definiert zu haben.

Globals Navigator
Hier sind allgemeingltige (projektbergreifende) Objektdefinitionen zusammengefasst. Hier werden z.
B. Benutzer und Rollen definiert. Aber auch public Funktionen und Prozeduren sind hier zu finden.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

41/299

OMB*Plus View
Dieses Fenster stellt eine Kommandozeile bereit, um OWB im Kommandomodus zu bedienen. Alle
graphischen Aktivitten ber die Oberflche knnen auch ber die sogenannte OMB-Skriptsprache
durchgefhrt werden. Damit werden viele Vorgnge automatisierbar. Diese Skriptsprache ist sehr
praktisch. Aber auch etwas fr hhere Semester. Bei den ersten Schritten brauchen wir sie noch
nicht.

Module ordnen das Projekt


Alle Aktivitten innerhalb des Warehouse Builders spielen sich in dem Rahmen von Modulen ab. Die
Module stellen eine Art Fenster dar, durch das man einen bestimmten Ausschnitt des Quell- und des
Warehouse Systems betrachten kann. Sie unterteilen das Gesamtsystem auf einer logischen Ebene
nach Gesichtspunkten, wie sie der Data Warehouse-Architekt festlegt.
Die Module sind Repository-gesteuert. Alle nderungen, die Sie an Objekten innerhalb eines Moduls
vornehmen, bertrgt der Warehouse Builder automatisch auch die anderen Module, wenn dort
dieselben Objekte vorkommen. Lschen Sie eine Column in einer Tabelle KUNDE in dem Modul A, so
finden Sie die genderte Tabelle KUNDE auch in einem Modul B wieder (Refresh Button
drcken).

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

42/299

Sinnvollerweise folgt die Moduleinteilung der Architektur des Warehouse Systems. Eine klassische
Architektur fr ein unternehmensweites Warehouse sieht also wie folgt aus: Es gibt ein oder mehrere
Module fr die Vorsysteme, eines fr eine mgliche Staging Area, eines fr das eigentliche
Warehouse und eines oder mehrere fr mgliche Data Marts. Es entsteht automatisch eine Sortierung
und bersicht ber das Warehouse System.
In dem Warehouse Builder-Gesamtmodell fgen sich die Module in eine Hierarchie von mehreren
Objekten ein: Projekte, Module, Dimensionen usw. (siehe Bild).

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

43/299

Quell- oder Zielmodul?


Die Module unterscheiden nicht danach, ob sie als Quell- oder Zielmodul verwendet werden. Sie
knnen immer beides sein. Es gibt allerdings Ausnahmen: Die ERP- Module knnen nur lesend
verwendet werden.

Mit Collections Objekte nach eigenen Kriterien zusammenfassen


Die Collections durchbrechen diese Objekthierarchie der Module. In Collections fassen Sie beliebige
Objekte nach fachlichen Anforderungen zusammen. Beide Konzepte Module und Collections
zusammengenommen ergnzen sich hervorragend. Collections sind sinnvoll, wenn sie bestimmte
Aktionen wie validieren, generieren oder deployen auf eine nach eigenen Kriterien zusammengestellte
Gruppe von Objekten (Tabellen, Mappings) anwenden wollen. Innerhalb der Modulstruktur geht das
nur auf dem jeweiligen Knoten der Modulstruktur und dann nur fr ausnahmslos alle Objekte der
Struktur.
Sie definieren Ihre eigenen Collections ber den Punkt Collections in dem Projects Navigator:

Definieren einer neuen Collection


Alle Objekteknnen ber Kontext-Men einer zuvor definierten Collection zuwiesen werden.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

44/299

Hinzufgen eines Objektes zu einer Collection

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

45/299

Ohne Locations luft nichts


Bevor wir mit der eigentlichen Arbeit beginnen, mssen die Locations erklrt werden.
Locations treten bei dem Warehouse Builder an nahezu allen Stellen auf. Das Konzept der Locations
sollte man zunchst verstehen, um dann OWB zu arbeiten. Das heit, dass die meisten Fehler, die
man zu Beginn mit dem OWB machen kann, aus dem falschen Umgang mit den Locations herrhren.
Locations stellen kurz gesagt die Verbindung der OWB-Modelle und OWB-Objekte mit der Auenwelt
dar. Einige Beispiele:
Soll eine Tabelle in eine Datenbank generiert werden, so muss man die konkrete Tabelle ber
eine Location bekannt machen.
Soll ein Datenbankkatalog eines Quellsystems gelesen werden, so ist ber eine Location das
Quellsystem zu bezeichnen.
Locations sind Objekte innerhalb des Warehouse BuilderMetamodells und haben immer einen Namen.
Alle Locations sind im Location Navigator aufgelistet. Dort
knnen sie auch editiert werden.
Locations
besitzen
die
physischen
ConnectionInformationen zu den Quell- und Zielsystemen. Z. B.
erfordert eine Datenbank-Connection die Informationen:
Schemadaten, Hostname, Port, Service-Name

Aufgeklappter Baum des Connection


Explorers
Beispieleditor einer Location fr ein Oracle
Datenbankschema
Connections mssen den Objekten zugewiesen werden,
die sie verwenden sollen. In der Regel wird man bereits
beim Erfassen von diesen Objekten (z. B. Module)
aufgefordert, eine passende Location anzugeben.
Die Locations haben es in sich:

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

46/299

Wenn gerade bei der Generierung unerwartete Fehler auftreten, hilft es oft, die entsprechende
Location komplett zu lschen und neu anzulegen.
Whlen Sie kurze Namen fr die Locations und berschreiben Sie die vorgeschlagenen
Namen mit ihren eigenen Namenskonventionen. Der Grund?
Diese Namen werden in den PL/SQL-Code spter hinein generiert. Zu lange Namen knnten
stren.
Wenn gerade bei der Generierung unerwartete Fehler auftreten, hilft es oft, die entsprechende
Location komplett zu lschen und neu anzulegen.
Die Locations finden ihren Hauptanwendungsbereich in dem Control Center, das fr
Generierungszwecke und zum Starten der Ladejobs verwendet wird.

Control Center Service und Control Center Agent


Zu einer lauffhigen Warehouse Builder Umgebung gehren noch zwei Dienste, die an dieser Stelle
vorgestellt werden sollen

Vollstndige OWB-Umgebung mit Control Center Service und Agent


Der Control Center Service stellt die Kommunikation zwischen dem Repository und den Mappings
(PL/SQL Packages) dar. Erst, wenn dieser Dienst gestartet ist, knnen Mappings deployed oder
gestartet werden. Der Service wird in der Regel zusammen mit der Datenbank gestartet. berprft
werden kann der Dienst ber den folgenden Dialog in Windows verwaltet werden kann:

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

47/299

Es startet die folgende Maske, ber die der gestartete Service gesehen werden kann:

Der Control Center Agent stellt eine Java-basierte Kommunikation bereit. Will man z. B. mit JDBC
auf eine andere Quelle zugreifen, dann muss dieser Agent gestartet sein. Der Agent ist auch die
Voraussetzung fr die Verwendung der Code Templates, die ber ODI zum Warehouse Builder
gekommen sind.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

48/299

Gestarteter Control Center Agent

Protokollfenster im Hintergrund

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

49/299

4. Die ersten Schritte in dem Demo-Szenario


Der erste Schritt bei dem Aufbau eines Data Warehouse-Systems ist immer die Identifizierung der
bentigten Quelldaten. Hierzu mssen Sie ein erstes Modul anlegen. Die Tabellen fr dieses
Beispielszenario sind in dem folgenden Bild dargestellt. Das oben beschriebene Quelldatenmodelle
und das angestrebte Zielmodell in dem hier vorgestellten Szenario sehen Sie in den folgenden beiden
Bildern.

Tabellen eines Quellsystems, diese werden in einem Modul abgebildet, das alle Quellstrukturen
dokumentiert.

Zieltabellen des Szenarios. Diese Strukturen werden in einem separaten Modul abgebildet

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

50/299

Nach dem erfolgreichen Laden der Beispieldaten befindet sich das Quellmodell in dem OracleDatenbankschema OLTP. Das Zielmodell soll in dem Schema DWH neu aufgebaut werden. Darber
hinaus entstehen noch weitere Tabellen als Zwischenstufen.
Bei der Festlegung der Module haben wir zwei Alternativen:
1. Wir whlen nur ein einziges Modul fr das Quell- Zielschema oder
2. wir whlen fr jedes Schema ein separates Modul.
Technisch wre die Option 1 gut mglich. Aber praktisch wre es nicht. Wir sollten das Warehouse
Builder Modell von Beginn fr ein mgliches Wachstum flexibel halten und fr jedes Quellsystem ein
eigenes Modul whlen. Und dann sollte es weitere Module geben, in denen aus den Quellmodulen
gelesen wird.
Das folgende Szenario ist sinnvoll:

Es wird ein erstes Modul Bestellsystem erzeugt. Dieses bezieht ber die Location LC_OLTP die
Metadatenbeschreibungen (Tabellenbeschreibungen) des Quelldatenmodells aus dem Schema OLTP.
Mehr macht dieses Modul nicht. Es wird nur zur Dokumentation der Tabellen im Quellsystem
verwendet. Das Module Warehouse wird die eigentliche Transformationsarbeit bernehmen. Es
verwendet die Tabellenbeschreibungen des Quellsystems wie sie ber das Modul Bestellsystem
geliefert werden. Das Mapping (AB) legt eine Transformation fest. Das Modul Warehouse ist ber die
Location LC_DWH mit dem Zielschema DWH verbunden. Dort wird hineingeschrieben.
Die Locations LC_OLTP und LC_DWH bernehmen unterschiedliche Aufgaben. Doch hierzu spter.

Commit aller nderungen


Bevor Sie mit den ersten Schritten beginnen, bedenken Sie, dass alles, was Sie neu erstellen oder
ndern, noch nicht gesichert in dem Repository in der Datenbank abgelegt ist. Das ist erst der Fall,
wenn Sie den sog. Commit-Knopf zu drcken
(befindet sich im Kopfbereich des Design
Centers). Der Warehouse Builder arbeitet zwar sehr zuverlssig und strzt so gut wie nie ab (kommt
wirklich nicht vor, Java-Code!). Es knnte jedoch die Datenbankverbindung zu dem Repository
wegfallen und damit wren alle nicht "Committeten" nderungen verloren. Natrlich steht auch
Rollback unter dem Menpunkt Project zur Verfgung.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

51/299

Definieren eines Source-Moduls fr eine Oracle-Datenbankquelle


Um Daten aus dem Quellschema OLTP lesen zu knnen, mssen zunchst die Metadaten, also die
Beschreibungen zu den Tabellen in dem Schema OLTP geladen werden. Diese Metadaten werden in
dem Modul mit dem Namen BESTELLSYSTEM aufgenommen.
Das Modul erstellen sie wie folgt:

Beginnen Sie in dem Project Navigator.


Aktivieren Sie das Projekt MY_PROJECT. Das ist das Default-Projekt. Wenn Sie sich fit genug
fhlen, knnen Sie auch ein eigenes Projekt definieren. Zum ben ist das aber nicht ntig.
Klappen Sie Databases auf.
Erzeugen Sie ein neues Modul: Rechte Maustaste auf Oracle und whlen Sie New Oracle
Module. Ein Wizard fhrt Sie durch den Erstellungsvorgang.

Vergeben Sie den Namen Bestellsystem.


Ignorieren Sie die Option Select the module status. Sie hat nur dokumentarischen Wert.
Next.
Jetzt werden Sie aufgefordert, die Connection Informationen zu dem Quellschema anzugeben.
Sie brauchen also eine gltige Location.
Drcken Sie auf Edit.
ndern Sie den vorgeschlagenen Namen der Location (BESTELLDATEN_LOCATION1) auf den
krzeren Namen LC_OLTP. Dieser Name wird spter Bestandteil von anderen Objektnamen
werden, z. B. DB Link Namen. Wenn der Name jetzt schon so lang ist, kann es spter zu
Problemen fhren.
Fllen Sie die entsprechenden Felder aus. Fr unser Beispiel reicht: User Name /Password / Host
/ Port / Service Name. Whlen Sie auch die passende Datenbankversion des Quellsystems.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

52/299

Festlegen der Location-Informationen fr das Modul OLTP

Testen Sie die Connection. Machen Sie es jetzt, denn es verhindert spter Fehler.
Ok und Finish. Den Metadaten Import machen wir separat.

Ergebnis:
Sie sollten jetzt in dem Projekt Explorer unter dem Punkt Oracle das Modul BESTELLSYSTEM finden
und in dem Location Navigator unter Locations/Databases/Oracle die Location LC_OLTP.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

53/299

Ergebnis nach dem Anlegen des Moduls BESTELLESYSTEM und der Location LC_OLTP

Auslesen von Tabellenbeschreibungen (Metadaten) aus einer


Quelldatenbank
Das eben erstellte Modul ist noch "leer". Es stellt eine Art Container dar, der jetzt bereit ist die
Tabellenbeschreibungen aufzunehmen. Diesen Schritt nennt man Import der Metadaten.

Rechte Maustaste auf Objekt Bestellsystem.


Option Import.
Der Metadaten Import-Wizard erscheint.

Importieren Metadaten aus dem OLTP-Schema fr das Modul BESTELLSYSTEM

Es erscheinen Optionen mit Datenbank-Objekten. Lassen Sie die Hkchen im Default gesetzt und
drcken Sie gleich auf Next.
Whlen Sie die Option Table. Next.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

54/299

Importierbare Objekttypen
Im unteren Bereich finden sie die Optionen:
None:
Keine referenzierten Tabellen
One Level:
Zustzlich importiert OWB die Parent-Tabellen der von Beziehungen
All Level:
OWB wertet alle Beziehungen auch ber mehrere Tabellen hinaus verzweigte
Beziehungen aus.

Selektieren einzelner Tabellen, von denen die Metadaten zu importieren sind

Belassen Sie es bei One Level.


Klappen Sie das +-Zeichen vor Tables auf und es sollten alle Tabellen aus dem Source-Schema
OLTP aufgelistet werden.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

55/299

Selektieren Sie die Tabellen BEST_POSITIONEN und BESTELLUNG und schieben Sie die
Tabellen mit dem Pfeil-Symbol > in das rechte Feld
Beenden Sie den Dialog mit Next, Finish und OK.
berprfen Sie die Existenz der Tabellen in dem Modul BESTELLDATEN.

Das Ergebnis sieht jetzt so aus:

Aufgeklapptes Modul BESTELLSYSTEM


Das neu entstandene Modul besitzt die folgenden Objekttypen:
Es besitzt zustzliche Objekte wie:
Table
Dimensions
Cubes (das sind Fakten-Tabellen)
Views und Materialized Views
External Tables
(Advanced) Queues
Mappings
Transformations
Sequences
User Defined Types
Data Auditors

Ein Zielschema einrichten bzw. einen neuen Workspace-User


anlegen
Ziel der Arbeit mit OWB ist das Schreiben von Daten in ein Ziel-Datenbank-Schema. In diesem
Zielschema werden PL/SQL-Routinen laufen, die OWB aus dem graphischen Mappings heraus
generiert. Die PL/SQL-Routinen enthalten Schreibzugriffe auf den OWB Workspace, um dort
Statistikinformationen ber die stattgefundenen Ladelufe zu hinterlegen.
Damit dies geschehen kann, muss ein Zielschema, in unserem Beispiel das Schema DWH, als
Workspace User bei dem Workspace registriert sein.
Wenn das nicht bereit im Verlauf der Installation geschehen ist, kann man dies ber den Global
Navigator in der OWB Oberflche nachholen. Hier whlt man die Option Security und dann Users.

Rechte Maustaste aus Users -> New User

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

56/299

In der dargestellten List Box den gewnschten User von links nach rechts ziehen. Wenn der User
nicht vorhanden ist, kann er ber Create DB User angelegt werden.
Next und Finish

Auswhlen eines Datenbankschemas, um es als Zielschema in OWB - Repository zu nutzen


Von jetzt an kann dieses Schema als Zielschema genutzt werden.

Ein zweites Modul fr die Warehouse-Tabellen erstellen


Wie oben bereits ausgefhrt, sollen die eigentlichen Warehouse-Objekte in einem zweiten Modul
definiert werden. In diesem zweiten Modul wird die eigentliche Arbeit stattfinden.

Erzeugen Sie sich ein neues Modul mit dem Namen Warehouse.
Definieren Sie aber jetzt eine Location LC_DWH, die auf das Schema DWH zeigt. Dieser Vorgang
ist analog zu dem oben beschriebenen durch zufhren. (Das Schema DWH sollte in der
Datenbank vorhanden sein).
Besttigen Sie alle weiteren Voreinstellungen (OK, Finish usw.).
Lassen Sie sich das neue Modul anzeigen (Doppelklick auf den Namen).
berprfen Sie auch die Existenz der neuen Location LC_DWH im Locations Navigator.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

57/299

Exkurs 1: Ein genauer Blick auf Module und Locations


Module knnen ber zwei Locations mit ihrer Umgebung kommunizieren. ffnen sie hierfr den
Modul-Editor
Rechte Maustaste auf das Modul Warehouse.
Open Editor.
Sie sehen ein Fenster mit 5 Auswahloptionen im linken Bereich. Die wichtigsten sind:
- Name (ist selbstredend)
- Metadata Location
- Data Location
Die beiden Location-Optionen sollten Sie nher betrachten. Die Metadata-Location-Option zeigt auf
das Datenbank-Schema aus dem fr dieses Modul z. B. Tabellenbeschreibungen gelesen werden
knnen.
Die List-Box zeigt auf LC_DWH. Sie knnten hier auch umschalten und das Schema SRC einstellen.
Den praktischen Nutzen werden wir spter erkennen.
Der Data Location-Reiter zeigt auf das Schema in das spter generiert werden kann. Hier steht die
Location auch auf LC_DWH.

Die beiden Metadaten-Kanle eines Moduls

Exkurs 2: Woher kommen oder wie entstehen die Warehouse


Tabellen?
Es gibt 4 Wege, um diese zu erstellen:
1. Es
gibt
bereits
ein
Warehouse
mit
einer
bestehenden
Tabellenstruktur
-> dann sind die bentigten Tabellen ber den Import-Mechanismus zu laden:
Rechte Maustaste auf den Modulnamen -> Import ber den entsprechenden Pull DownMenpunkt Import.
Alternativ wird an verschiedenen Stellen diese Import-Option angeboten. Meist immer
dann, wenn man sie tatschlich braucht. Das finden Sie selbst heraus.
2. Es gibt Datenmodelle in Datenmodellierungstools. Hier hilft man sich ebenfalls mit dem
vorgenannten Importmechanismus. Fr ERwin und Power Designer starten Sie allerdings eine
"Bridge". Oracle Designer-Datenmodelle bernehmen Sie, indem Sie den Metadaten-Importpfad
eines Moduls umstellen auf Oracle Designer Repository.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

58/299

Rechte Maustaste auf den Modulnamen -> Open Editor. -> Reiter Metadata Location ->
Source Type
Neuerstellen per Hand. Hierzu nutzen Sie den Data Object Editor
Rechte Maustaste auf Tables im Modulfenster. -> New.
Neuerstellen als Kopie aus einer bestehenden Tabelle.
Rechte Maustaste auf eine Tabelle, die Ihnen als Vorlage dient. Option Copy und dann
Paste.
Erstellen einer neuen Tabelle ber den Mapping-Editor whrend man ein Mapping erstellt.
Die einfachste Variante ist das "On-the-Fly"-Erstellen im Verlauf des interaktiven
Entwicklungsprozesses des Warehouses. Dies kommt der Praxis der Warehouse-Entwicklung
auch am nchsten. Hierbei definieren Sie die Tabellen Zug um Zug und zwar dann, wenn Sie sie
brauchen. Natrlich ist es sinnvoll im Vorfeld der Entwicklung durch eine
Informationsbedarfsanalyse ein Datenmodell zu erstellen. In der Praxis wird man aber diese so
erstellten Modelle immer wieder ndern, weil sich unvorhergesehene Umstnde im Verlauf der
Entwicklungsarbeit ergeben haben.

3.
4.
5.
6.

Flexibilitt in dem Umgang mit Datenbankobjekten


Es wird es immer wieder zu einer Mischung aus den genannten Mglichkeiten
kommen.
Entscheidend ist, dass jederzeit alle Wege offen stehen, und man keinen Einschrnkungen unterliegt,
um die richtige Vorgehensweise im Projekt zu whlen. Die Erfahrung zeigt jedoch, dass in der Praxis
immer mehr hemdsrmelig entwickelt wird, weil oftmals die Zeit fr aufwendiges Projektmanagement
bzw. starr getrennte Projektphasen fehlt.
Aus diesem Grund ist es gut ein Werkzeug zu haben, das einerseits gengend Freirume fr flexible
Projektgestaltung lsst, andererseits den ntigen Rahmen liefert um die Ergebnisse zu
dokumentieren.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

59/299

5. Ein erstes Mapping erstellen


Mappings nutzen Sie, um Datenflsse graphisch festzulegen. Mappings sind die Kernbausteine des
Ladeprozesses. In den Mappings nutzen Sie Operatoren als graphische Komponenten. Mappings
werden spter zu Prozessflssen (Workflow) zusammengefasst.
Anforderung:
Fassen Sie alle Stze aus den beiden OLTP-Tabellen BESTELLUNG und BEST_POSITION zu einer
einzigen neu zu erstellenden Tabelle WH_TRANSAKTIONEN zusammen.
Bercksichtigen Sie hierbei die Parent/Child-Beziehung zwischen beiden Quelltabellen.

ffnen Sie das neu angelegte Modul Warehouse.


Erzeugen Sie ein Mapping: Rechte Maustaste auf Mappings -> New
Vergeben den Namen MP_Transaktionen und drcken Sie OK.
Der Mapping-Editor fr das neue Mapping startet.

Eine Rundtour durch den Mapping-Editor


Der Mapping-Editor soll zunchst erklrt werden. Selektieren Sie hierzu unter dem Auswahlpunkt
Window alle Optionen, damit alle Teilfenster sichtbar sind. Das sind:
Projects Navigator
Palette
Property Inspector
Birds Eye View
Generation Results
Data Viewer.
Danach sieht Ihr Bildschirm etwas berfllt aus. Bedenken Sie jedoch, dass die meisten Fenster bei
der normalen Arbeit geschlossen bleiben und nur fallweise geffnet sind. Alle Fenster sind dockable.
Sie knnen sie also an beliebigen Stellen positionieren und auch am Rand festdocken.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

60/299

Mapping Editor mit allen geffneten Fenstern


Die einzelnen Fenster sollen hier kurz vorgestellt werden, bevor wir sie spter benutzen.
Der Projekt-Tree (1)
Der Explorer hat zwei Aufgaben:
Zum einen listet er alle Objekte aus allen Modulen auf, die man mit Drag and Drop in den MappingEditor ziehen kann (Fureiter Available Objects). Zum anderen listet er alle bislang benutzten
Objekte im Mapping Editor auf (Fureiter Selected Objects).
Ein kleines Beispiel:
ffnen Sie in dem Baum den Punkt Databases / Oracle / BESTELLSYSTEM / Tables.
Markieren Sie die Tabellen Bestellung und Best_Position.
Ziehen Sie diese Objekte mit der linken gedrckten Maus in das Mapping-Fenster.
Warten Sie etwas. Nach einem Augenblick erscheint ein Tabellenobjekt in dem Fenster.
Drcken Sie den Knopf Auto Layout in der Menleiste.

Zwei Tabellen erscheinen senkrecht bereinander. Wenn Sie die Tabellen nicht richtig sehen,
drcken Sie noch auf den Knopf Fit in Window.

ber die + und Tasten knnen Sie zustzlich die Sicht verndern

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

61/299

Struktursicht (2)
Komplexe Mappings knnen schnell unbersichtlich
werden. Die Strukturansicht gliedert alle Objekte, die
in der Projekt-Tree-Ansicht zu finden sind noch
einmal zustzlich auf. So knnen alle Tabellen aber
auch Operatoren, in einer bersichtlichen BaumAnzeige aufgelistet werden.
Die angezeigten Objekte dienen auch zur Navigation.
Wenn man die Objekte anklickt, verschiebt sich der
Fokus innerhalb des graphischen Mappings auf
dieses Objekt.
Das Fenster zur Strukturanzeige wird erst sichtbar,
wenn man es ber den Pull-Down-Men-Punkt View
und den Punkt Structur aktiviert.

Klicken Sie in dem ffnen Sie in dem Pull-DownMen-Punkt View .die Option Structur.
Whlen Sie in dem Projects Navigator den
Namen
des
neu
erstellen
Mappings
MP_Transaktionen.
Sie sollten jetzt die Struktur des Mappings sehen
knnen.
Klicken Sie jetzt in dem Explorer-Fenster auf
Selected Objects.
Sie werden die Auflistung der beiden Tabellen
sehen.
Klicken Sie abwechselnd auf jeweils einen der
beiden Tabellennamen und Sie werden sehen,
wie sich die gewhlte Tabelle im Mapping-Fenster
in den Mittelpunkt schiebt.

Bei zwei Tabellen ist das keine groe Hilfe. Aber man kann sich vorstellen, dass diese Funktion in
komplexen Mapping mit 100 und mehr Operatoren eine groe Orientierungshilfe darstellt.
Editor-Flche (3)
Dieses Fenster ist das eigentliche Arbeitsfenster.
Sie haben die beiden Tabellen in den Mapping-Bereich gezogen. Anhand dieser Tabellenobjekte
lassen sich grundlegende Dinge bzgl. der Darstellung der Operatoren erklren.
Dies ist wieder eine Stelle, bei der man etwas genauer hinsehen sollte. Das kann spter
manche Verwirrung ersparen.
Die Operatoren knnen haben:
einen Kopfbereich mit dem Namen des Objektes,
einen Gruppenbereich (z. B. INGR1, INOUTGRP1, OUTGRP1 usw.) und
bei aufgeklappten Gruppen sind Felder sichtbar.
Wenn Sie mit der Maus die jeweiligen Bereiche selektieren, werden Sie feststellen, dass sich die
Inhalte des Property- Inspector (4) ndern. Im Property-Inspector bekommen Sie immer die
Information zu den aktuell selektierten Objekten angezeigt.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

62/299

Property Inspector-Informationen rund den Tabellenoperator

Klicken Sie abwechselnd auf die unterschiedlichen Zonen des Tabellen-Objektes und beobachten
Sie die Vernderungen in dem Properties-Inspector.

Die Darstellung des Operators lsst sich ndern. Whlen Sie hierzu im Pulldown-Men-Punkt Graph
die Option Options.

Einstelloptionen zur Darstellung des Tabellenoperators

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

63/299

Der Mapping-Editor ist derjenige, in dem man die meiste Arbeit verrichtet. Mit einem Doppelklick
auf den Kopf des Fensters, kann man die Darstellung auf die gesamte Bildschirmgre ausdehnen,
und man hat mehr Platz. Ein weiterer Doppelklick bringt die ursprngliche Anzeige wieder zurck.
Birds Eye View (3)
Der Birds Eye View stellt eine weitere Orientierungshilfe da.
Versuchen Sie mit der Maus den blauen Rahmen gro und klein zu ziehen.
Verschieben Sie den blauen Rahmen.
Versuchen Sie mit gedrckter linker Maustaste den Fokus zu vergrern bzw. zu verkleinern.

Wechselwirkung Birds Eye View und Sicht in der Mapping-Flche


Data Viewer (5)
Der Data Viewer erlaubt Ihnen einen Blick auf die Tabelleninhalte. Das untersttzt die Entwicklung
des Datenflusses.
Schalten Sie das Datensichtfenster ber den im Pulldown-Men-Punkt View und dann den
Auswahlpunkt Data ein.
Markieren sie zum Anzeigen der Tabellendaten eine Tabelle.
Drcken Sie in dem Data Viewer auf Execute Query (es muss zu dieser Tabelle eine gltige
Location bestehen).
Sie werden die ersten 100 Stze der gewhlten Tabelle sehen.
Tipp:
Diese Funktion ist sehr praktisch, wenn man Formatwandlungen durchfhren mchte und
nicht genau ber die Quellformate Bescheid wei.
Property Inspector (6)
Der Property Inspector liefert Einstellmglichkeiten und Eigenschaften zu den in dem Mapping-Fenster
selektierten Operatoren. Dieses Fenster ist kontextsensitiv und ndert sich immer dann, wenn Sie ein
anderes Objekt selektieren. Der Property Inspector ist wichtig, weil Sie hier oft notwendige Funktionen
finden, z. B. die Reihenfolge der zu beschreibenden Zieltabellen.
Generation Results
Dieses Fenster liefert ad hoc-generierten Code. Dieser Code ist eine wichtige Hilfestellung fr den
Entwickler, um eine gewisse Vorahnung zu dem spteren tatschlichen Code zu gewinnen. Diese
Funktion wird spter noch einmal genauer erklrt.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

64/299

In einem Mapping Ad hoc-generiertes INSERT-Statement


Component Palette (7)
Hier sind alle zur Verfgung stehenden Operatoren zusammengefasst.
Zum Kennenlernen der Operatoren schlieen Sie am besten alle anderen Fenster, denn die Liste ist
sehr lang. Im Kopf der Palette ist eine kleine SelektionsList Box versteckt.
Klicken Sie auf All, und Sie sehen eine Clusterung der Operatoren:

List box mit Gruppierung der Operatoren


Hier eine Liste der Operatoren mit einer kurzen Erklrung:

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

65/299

Source- und Target-Operatoren

Datenfluss oder Transformationsoperatoren

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

66/299

Vor- und Nachverarbeitung

Wiederverwendbare Mapping-Bausteine

Das Mapping aufbauen


Doch nun zu dem Mapping. In dem Mapping-Fenster sind bereits die beiden Tabellen BESTELLUNG
und BEST_POSITION. Um das Mapping zu einem funktionsfhigen Mapping zu machen, mssen die
beiden Tabellen verjoint und das Ergebnis in eine Zieltabelle geladen werden. Die Zieltabelle ist noch
nicht da.
ffnen Sie das Paletten-Unterfenster Transformations
Selektieren Sie den Joiner-Operator und ziehen Sie ihn rechts neben die bereits bestehenden
Tabellen in das Mapping-Fenster.
Der Joiner-Operator hat 2 Eingabebereiche ( INGRP1 / 2) und einen Ausgabebereich (OUTGR1)
berfhren Sie mit Drag and Drop die INOUTGRP1-Bereiche aus den beiden Tabellenbereichen
auf die INGRP-Bereiche des Joiner-Operators.
Klappen Sie den Joiner vollstndig auf (Pfeil im Kopfbereich).
Sie sehen jetzt den OUTGRP1-Bereich des Joiners angefllt mit den Spaltennamen aus den
beiden Eingabebereichen. Bei doppelten Namen wird eine 1 angehngt.
Sie mssen jetzt noch die Join-Bedingung festgelegen:
Markieren Sie den Kopfbereich des Joiners.
Sie sehen in dem Joiner-Property-Inspector ein leeres Feld Join Condition.

Property Inspector zu dem Joiner-Operator


Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

67/299

Selektieren Sie mit der Maus in dieses leere Feld. Es erscheinen 3 Punkte im rechten
Feldbereich.
Selektieren Sie die 3 Punkte und der Expression Builder erscheint.

Expression Builder
Der Expression Builder erscheint an mehreren Stellen im Warehouse Builder. Er erscheint immer
dann, wenn nhere Einstellungen in einem SQL-Befehl zu machen sind, also z. B. eine WHEREBedingung oder eine Expression. In der Regel hat man im linken Bereich zwei Reiter, einen fr die
Input-Felder und einen fr die zur Verfgung stehenden Funktionen (Transformationen). Durch
Doppelklick gelangen die passenden Feldnamen von der linken in die rechte Hlfte. Eine Validierung
des Ausdrucks kann man auch vornehmen.
Machen Sie nacheinander einen Doppelklick auf die Felder BESTELLNR. Verbinden Sie beide mit
einem Gleichheitszeichen.
OK.
Tipp:

Die Namen INGRP1 und INGRP2 sind nicht sprechend, vor allem, wenn Sie im ExpressionEditor bei aufwendigen Join-Bedingungen die passenden Felder suchen. Benennen Sie diese
Namen einfach um:
Rechte Maustaste auf den Kopf des Joiners Open Details und unter Groups die Namen einfach
berschreiben. Z. B. in Bestellung und Position.
Bedenken Sie, dass diese Namen auch spter in den PL/SQL-Code mit hinein generiert werden. Mit
solchen Namen wird der Code leserlicher.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

68/299

Beschreiben von Joiner-Eigenschaften, z. B. Feld-Gruppennamen


Es fehlt noch die Zieltabelle. Hierzu nutzen wir die Mglichkeit eine neue Tabelle On-The-Fly im
Verlauf der Arbeit mit dem Mapping-Editor zu erstellen.
ffnen Sie in dem Component Paletten - Fenster die List-Box-Option Data Sources/Targets
Ziehen Sie mit Drag/Drop ein Objekt aus dem Table Operator in die Editor-Flache.
Vergeben Sie den Namen WH_TRANSAKTIONEN
berfhren Sie die Felder
ARTIKELNR
BESTELLNR
BESTELLMENGE
KUNDENCODE
BESTELLDATUM
in den INOUTGR1-Bereich der neuen Tabelle.

ffnen Sie mit der rechten Maustaste unter Open Details den Table Operator Editor fr die
Tabelle WH_TRANSAKTIONEN und erfassen Sie unter dem Punkt Input/Output eine neue Spalte
mit dem Namen BESTELL_TOTAL (Typ: numeric)
OK

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

69/299

Das fertige Mapping sieht jetzt so aus:

Das erste Mapping MP_TRANSAKTIONEN

Wechselspiel logisch/physisch oder Mapping / Modul


In dem Mapping Editor ist jetzt eine neue Tabelle entstanden, die wir gerne in der Datenbank
wiederfinden mchten. Aber: Schieben Sie zur Kontrolle das Mapping-Fenster zur Seite, und
kontrollieren Sie das Fenster des Moduls Warehouse. Sie werden die neue Tabelle
WH_TRANSAKTIONEN nicht finden.
Dieses Verhalten zu verstehen, ist fr den weiteren Verlauf sehr wichtig, denn es gehrt zur
grundlegenden Mechanik des Mapping-Editors:
Der Warehouse Builder unterscheidet zwischen sog. physischen und logischen Objekt-(Tabellen-)
Strukturen.
Unter dem Punkt Table im Modulfenster sind alle Tabellen in ihrer physischen Struktur
aufgelistet. So wie sie dort aufgelistet sind, sind diese auch in dem OWB-Repository gespeichert
und knnen von dort aus in das Warehouse Zielschema generiert werden.
Die in dem Mapping-Editor angezeigten Tabellen sind lediglich logische Strukturen. Es sind sog.
Operatoren, die als Platzhalter fr Tabellen fungieren.
Warum diese Trennung:
Mit dieser Technik ist es mglich, Definitionen von Tabellen zunchst auf einem logischen
(entwicklungsbezogenen oder planerischen) Level zu belassen und die Definitionen zu einem
spteren passenden Zeitpunkt in physische Beschreibungen von Tabellen umzuwandeln. Es ist auch
mglich aus einer logischen Tabellendefinition mehrere physische Tabellen abzuleiten. Das ist
praktisch um etwa eine Entwicklungsumgebung von einer Produktionsumgebung zu unterscheiden.
Das Verfahren setzt die Existenz mehrerer Module voraus. In diesem Testszenario bentigen wir diese
Technik nicht.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

70/299

Eine logische Tabelle Kunde existiert in unterschiedlichen Ausprgungen in zwei Modulen WHS1
und WHS2
Was ist zu tun um die neue Tabellenbeschreibung WH_TRANSAKTIONEN als physische Instanz in
einem Modul wieder zu finden:

Mit der rechten Maustaste auf die Tabelle WH_TRANSAKTIONEN im Editor.


Die Create and Bind Option whlen.

Kontext-Men Tabellen-Operator

Und jetzt einfach OK drcken, weil das Zielmodul bereits vorselektiert ist.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

71/299

Wenn Sie jetzt das Warehouse-Modul betrachten, knnen Sie die neue Tabelle sehen. In diesem
Zustand knnen Sie fr die neue Tabelle auch alle physische Parameter vergeben, bevor Sie die
Tabelle in ein Zielschema einer Datenbank kopieren.
Mit der rechten Maustaste auf den Tabellennamen.
Option Configure.

Festlegen der Tabelleneigenschaften


Auch die Struktur der Tabelle knnen Sie in dem Data Object Editor verndern:
Mit der rechten Maustaste auf den Tabellennamen.
Option Edit.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

72/299

Tabelleneditor

Das erste Deployment ohne das Control Center


Ein wichtige Neuerung in OWB 11.2 ist die Mglichkeit direkt aus dem Projekt-Baum heraus
generieren, deployen und auch starten zu knnen. Bis zu dem Release 11.2 war die nur ber das
Control Center mglich. Das ist ein separates Programm bzw. ein separates Fenster, das man erst
starten muss. Das Control Center existiert weiterhin und man kann auch unter 11.2 so arbeite, wie
man es bis 11.1 gewohnt war. ber das Control Center kann man sind auch ber die bereits
generierten Objekt informieren: Wann wurde welcher Code in die Datenbank generiert.
Fr ein schnelles Entwickeln ist es jedoch praktischer, direkt aus dem Projektbaum heraus zu
deployen und zu starten. Voraussetzung ist allerdings, dass alle Locations stimmen.
Aber zunchst zu den Begriffen:
Nach dem ein Objekt (Tabelle oder Mapping) erstellt wurde gibt es mehrere Manahmen, um das
Objekt in seine sptere Nutzung zu berfhren:
Validate
Hier wird zunchst nur geprft. Richtige Spaltennamen, korrekte Definitionen. Grundstzlich sollte
man immer Validieren. Allerdings ist das Validieren auch bereits in den Schritten Generate und Deploy
enthalten. Das Ergebnis findet man in dem Status-Fenster.

Rechte Maustasten auf das Objekt im Project Tree


Option Validate

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

73/299

Statusfenster mit Erfolgsmeldung der Validierung


Generate
Hier wird nur der Code erzeugt. Das ist praktisch, wenn man ein DDL-Script erstellen mchte, das
man z. B. in eine Dokumentation bernehmen will. Ein Validate-Schritt ist automatisch enthalten.
Rechte Maustasten auf das Objekt im Project Tree
Option Generate

Statusfenster mit Erfolgsmeldung der Validierung und der Script-Generierung


Das generierte Script erhlt man durch einen Doppelklick auf das Script-Objekt in dem Log-Fenster.
Deploy
Hier wird validiert, der Code erzeugt und das Ergebnis in das ber die entsprechende Location
zugewiesene Datenbank-Schema geschickt.
Rechte Maustasten auf das Objekt im Project Tree
Option Deploy

Statusfenster mit Erfolgsmeldung der Validierung, der Script-Generierung und des Deployments
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

74/299

Start
Mit dieser Option knnen Mappings auch aus dem Project-Tree heraus gestartet werden.
Deploy und Start der ersten Objekte

Deployen Sie jetzt die Tabelle WH_Transaktionen und das Mapping MP_Transaktionen.
Korrigieren Sie Fehler, die eventuell aufgetreten sind.
Starten Sie das erste Mapping. Das Ergebnis sollte in dem Log-Fenster zu sehen sein.

Statusfenster mit der Ergebnisanzeige zu dem erfolgreich durchgelaufenen Mappings


MP_TRANSAKTIONEN
Ein erster Fehler RPE-01012 - kein Problem
Was ist passiert, wenn Sie bei dem Deploy-Vorgang auf das Mapping die folgende Fehlermeldung
erhalten:
RPE-01012: Cannot deploy PL/SQL maps to this target schema. The target schema must be
in the same instance as the Control Center and have the OWB_USER role granted. Please
use the OWB Security UI to make the target schema be an OWB User.
Die Meldung gibt bereits Hinweise darauf, wie zu verfahren ist. Bei dem Einrichten des Ziel-Schemas,
also des Schemas, in dem die Tabellen-Objekte und die PL/SQL-Prozeduren des Warehouses erstellt
werden sollten wurde vergessen, dieses Schema an dem OWB-Repository anzumelden. Das kann
leicht nachgeholt werden, in dem Sie ber das Globals Navigator Fenster unter Security einen neuen
User mit dem Namen des Zielschemas anlegen.

Fehlermeldung RPE-01012

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

75/299

Das erste Deployment - mit dem Control Center


Die beiden neuen Objekte in unserem Szenario sind bereits deployed und sollten in der Datenbank
einsetzbar sein. In dem folgenden Abschnitt werden beide Objekte noch einmal deployed, um den
Vorgang mit dem Control Center zu zeigen.
Hier noch einmal die Vorteile des Control Centers:
Die Darstellung im Control Center orientiert sich an den Locations. Daher ist hier auch gut
erkennbar, ob ein Objekt in der gewnschten Art mit dem jeweiligen Zielschema verbunden
ist.
Fehlerhafte Deployment-Vorgnge werden festgehalten. Damit erhlt man eine Historie dieser
Vorgnge.
Man kann erkennen, wann ein Objekt zuletzt erfolgreich deployed wurde.
Alle Job-Lufe (gestartete Mappings) werden protokolliert.
Starten Sie jetzt das Control Center:
Tools -> Control Center Manager.
Das Control Center sollte jetzt starten.
Wenn das Control Center nicht startet, mssen Sie u. U. zunchst den Control Center Service starten.
Das erfolgt in einer reinen Windows-Umgebung ber das Start-Men. Ist die Datenbank auf einem
Unix-System installiert, so knnen Skripte verwendet werden, wie Sie sie in dem Verzeichnis
OWBHOME\owb\rtp\sql finden.
Der Control Center Service sollte aber in der Regel automatisch starten, wenn Rechner und die
Datenbank hochfahren.

Starten des Control Centers


Das Control Center ist noch die gleiche Anwendung wie unter dem Release 11.1. Das bedeutet, dass
sich auch die Oberflche nicht gendert hat und ein separates Fenster erscheint.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

76/299

Control Center
Das wichtigste Organisationskriterium im Control Center sind die Locations in dem linken Fenster. Den
Locations sind alle Module zugeordnet, die die jeweilige Location verwenden. Das Modul
WAREHOUSE ist also unter der Location LC_DWH zu finden.
Im rechten Fenster sehen Sie die Object Details. Hier stellen Sie ein, was Sie tun wollen. Unter dem
Reiter History sehen Sie, was Sie bis dahin generiert haben.
In dem unteren Fenster sind die Generierungs- und sptere Laufergebnisse zu finden.
Das Control Center ist zwar ein Entwicklungswerkzeug, Sie knnen aber damit alle Aktivitten rund
um OWB-Prozeduren einsehen und steuern.
Locations registrieren
Zunchst sollten Sie berprfen, in welche Richtung die Locations zeigen. Hierzu klicken Sie mit der
rechten Maustaste auf den Namen der Location und drcken auf Register. Sie sollten in einem
separaten Fenster die Mglichkeit bekommen, diese Location zu testen. Sind die Connection-Daten
falsch, so ndern Sie diese ber den Location Navigator.
Bedenken Sie, dass Sie Locations nicht ndern knnen, wenn sie einem Modul zugewiesen sind. Es
kann also sein, dass Sie diese Zuweisung fr einen Augenblick aufheben mssen:
Im Project Navigator mit der rechten Maustaste auf den Modulnamen klicken und dann Open Editor.
Die Tabelle generieren

Markieren Sie die Tabelle WH_Transaktionen


ffnen Sie die List box in dem Bereich Object Details unter Deploy Action auf Create
(bei vorhandener Tabelle auf Replace).
Drcken Sie jetzt den Deploy-Knopf im Kopfbereich des Fensters.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

77/299

Jetzt sollten Sie einen Generierungsjob unter Control Center Jobs sehen.
Wenn dort hinter dem Jobnamen ein grnes Hkchen erschienen ist, knnen Sie diesen Job mit
einem Doppelklick ffnen.
In dem neu geffneten Job Details Fenster sehen Sie die entsprechende Erfolgsmeldung und
knnen auch den DDL-Text fr die neue Tabelle sehen.

Ein Mapping generieren


Analog gehen Sie bei dem Generieren des Mappings vor. Sie mssen hierzu das Mapping
MP_TRANSAKTIONEN markiert haben.
Nachdem Sie erfolgreich generiert haben, mssen Sie es noch starten:
Drcken Sie hierfr den Start-Knopf im Kopfbereich des Fensters. Ein Job startet wieder.

Beim Start des Jobs springt der Fokus des Fensters auf Execution.
Mit Doppelklick knnen Sie die Laufzeitergebnisse abfragen. Mgliche Fehler sind im unteren
Bereich aufgelistet, zusammen mit dem Laufzeitprotokoll.
Der Erfolg wird Ihnen mit Success angezeigt.

Kontrollfenster zur Anzeige gelesener und geschriebener Stze


Das Control Center ist nicht die einzige Stelle an der Sie das Ergebnis der gelaufenen Jobs nachlesen
knnen. An separater Stelle wird noch der Repository Browser vorgestellt, der ebenfalls diese
Ergebnisse anzeigen kann.
Leserechte
Sind Fehler beim Generieren aufgetreten, kann das an fehlenden Leserechten liegen. Sie wollen aus
einer Prozedur, die sich in dem Schema DWH befindet Tabellendaten lesen, die in dem Schema SRC
liegen. Dazu brauchen Sie fr das Schema SRC Leserechte.
Gehen Sie in das Schema SRC und setzen Sie die folgenden GRANT-Befehle ab.
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

78/299

z. B. -> GRANT SELECT ON BESTELLUNG TO DWH; oder


GRANT SELECT ANY TABLE TO DWH
Haben Sie nicht die ntigen Rechte, so muss dies ein DBA fr Sie tun. Haben Sie die Datenbank auf
Ihrem Rechner und knnen sich selbst Rechte vergeben, so loggen Sie sich als DBA ein und geben
dem SRC-User zunchst DBA-Rechte: grant dba to src.
Das erste Teilergebnis ist geschafft, die ersten Daten sind bewegt. Weiter unten werden mehr Details
vorgestellt.
Connectors und Database-Links
Erhalten Sie beim Generieren von Mappings Fehlermeldungen ber nicht bekannte Tabellen, dann
kann ein fehlender DB-LINK die Ursache sein. Das ist dann der Fall, wenn Quell und Zielschema
unterschiedlichen Datenbankinstanzen angehren. Die in der Oracle-Datenbanktechnik bekannten
DB-Links verbergen sich hinter dem Punkt Connectors in dem Location-Zweig des Deploy-Trees. Sie
haben als Sie die Module BESTELLUNGEN und WAREHOUSE anlegten auch fr jedes Modul
eine Location definiert. Die Locations sind in dem Tree zu erkennen. Die Locations reprsentieren
den DB-Link als physische Verbindung innerhalb der Datenbank und zeigen ausgehend von dem
Schema DWH in das Schema SRC hinein. Sie wrde gebraucht, wenn SRC und DWH Schemen in
unterschiedlichen Instanzen lgen.
Arbeiten Sie mit unterschiedlichen Instanzen und fehlt Ihnen ein Connector, so erstellen Sie einen
Connector explizit.
ffnen Sie in dem WAREHOUSE BUILDER-Hauptfenster unter Oracle den Punkt Locations
Navigator.
Gehen Sie auf LC_DWH und ffnen Sie die zugehrigen Objekte ber das +-Zeichen Vergeben
Sie einen Namen (z. B. CONN_SRC).
Unter DB Connectors finden Sie vorhandene Connectors oder Sie knnen ber die rechte
Maustaste einen Connector definieren. (Wenn Sie innerhalb desselben Schemas arbeiten
bentigen Sie keinen Connector).
Sie haben auch ber die rechte Maustaste die Mglichkeit, ber die Generate-Option die DDL
fr den Database-Link zu erzeugen.
Im Deployment-Manager erscheint jetzt der neuer Connector.
Deployen Sie ihn in das Zielschema DWH in der Datenbank.
Jetzt sollten Sie keine Zugriffsprobleme mehr haben.
Intelligenter Generierungsmechanismus
In dem jngsten Warehouse-Builder-Release muss man sich nicht mehr um die Connectoren
kmmern. Der Warehouse-Builder stellt im Verlauf der Generierung selbstndig fest, ob ein DatabaseLink in Form eines Connectors ntig ist oder nicht. Ist er ntig, so wird er im Hintergrund automatisch
generiert.
Diesen Mechanismus kann man ber die Konfigurations-Parameter eines Mappings umgehen
(->rechte Maustaste auf den Mapping-Namen -> Configuration). Hier haben Sie die Mglichkeit einen
Database-Link-Namen und einen Schema-Namen fr jede Tabelle des Mappings anzugeben. Diese
werden dann beim Generieren genommen.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

79/299

Configuration eines Mappings


Von dieser Vorgehensweise ist jedoch abzuraten. Die Mglichkeit besteht nur noch aus Grnden der
Abwrtskompatibilitt zu lteren Releasen. Dort war dies ntig. Der Intelligente
Generierungsmechanismus nimmt dem Entwickler diese Arbeit ab. Auerdem verlieren Sie damit
die Mglichkeit den Mapping-Code mit einer einzigen Schalterstellung flexibel in ein anderes System
zu generieren.
Um dies zu erreichen ndert man nur die Zuordnung einer Location. So lange Objekte noch nicht
generiert sind, werden sie in der folgenden Form beschrieben:
{location.<object_name>}.
Im Verlauf der Generierung lst OWB den location-String auf und ersetzt ihn durch den passenden
Database-Link-Namen.
Mit dieser DB-Link-Mechanik kann die Programmstruktur immer die gleiche bleiben, auch wenn
andere Quell- und Zieldatenbanken gewhlt werden sollten. Sie stellt eine Verknpfung zwischen der
Logik im Mapping und den tatschlichen physischen Datenbanken dar. Auch die meisten Gateways, z.
B. nach DB2 oder SQL Server, funktionieren nach dieser Logik. So knnen sie auf entfernt liegende
Tabellen auch in nicht-Oracle-Datenbanken - so zugreifen, als wrden diese lokal liegen.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

80/299

Locations und Connectoren beschreiben die Beziehungen zwischen Modulen


Smart-Code Generation
Wenn Sie Gelegenheit haben, Daten aus einer anderen Datenbank-Instanz auf einem anderen
Rechner zu lesen und dabei einen Database-Link verwenden, betrachten Sie sich doch mal den
generierten PL/SQL-Code. Sie werden sehen, dass OWB fr den Fall von Database-Links mit InlineViews arbeitet.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

81/299

6. Ein erster Blick in das Repository mit dem WebBrowser


An dieser Stelle soll schon mal ein erster Blick in das Repository des Warehouse Builders geworfen
werden. In den folgenden Beispielen wird immer wieder auf Auswertungen des Repositories
verwiesen.
Das Repository ist von Beginn an mit installiert worden. Es beinhaltet zunchst alle
Entwicklungsinformationen (Design-Daten). Mit dem Deployment und Test in dem Beispiel zuvor,
bestehen jetzt auch Laufzeitinformationen. Sie knnen sich diese in einem HTML-Browser ansehen.
Die generierten Mappings kommunizieren ihre Laufzeitdaten mit dem Runtime-System, das sich im
Regelfall in dem Zielschema, also dem eigentlichen Warehouse befindet. Hier sind statistische
Informationen (gelesene, geschriebene, abgewiesene Stze usw.) ebenso gespeichert, wie die
fehlerhaften Stze.
Aufruf des Repository Browsers
Um den Metadaten-Browser zu nutzen, ist zunchst der OWB Browser Listener zu starten (JavaAnwendung).
Diesen starten Sie separat wie folgt:

Starten Sie zunchst den OWB Browser Listener ber den folgenden Aufruf (fr Windows):
D:\ora\product\11.2.0\dbhome_1\owb\bin\win32\startOwbbInst.bat

Danach startet ein Fenster mit diversen Meldungen. Sie sollten warten bis die letzte Meldung
.....initialized erscheint.

Console fr Listener mit Kontrollmeldungen

Starten Sie jetzt ber das Start Men den Repository Browser (oder starten Sie sie den
Repository-Browser ber das Tools-Men im Design Center).

Starten des Metadatenbrowsers


Es erscheint die Anmeldemaske, in der Sie die Repository-Zugangsdaten eintragen knnen.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

82/299

Anmeldemaske Repository
Danach erscheint die folgende Auswahl in der Sie durch die Projekte und die Module in den Projekten
navigieren knnen. Diese Darstellung zeigt Design-Metadaten.

Metadaten-Baum

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

83/299

Um auf die Runtime-Metadaten zu gelangen, whlen Sie im unteren Bereich die Option Control
Center Reports.

Zugriff auf die Runtime-Informationen des Repositories


Whlt man den Execution Schedule Report, so kann man ber eine zustzliche Selektion nach
Execution Name
Execution Status
Start Date und
End Date
gezielt einzelne Jobs ansteuern.

Einschrnkung auf die Anzeige eines gestarteten Mappings

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

84/299

Detailinformationen zu den gelaufenen Job findet man in der rechten Spalte der Jobzeile oder wenn
Sie den Mapping-Namen direkt aufrufen.

Detail-Darstellung eines gelaufenen Mappings

Detailinformationen zu dem vorher selektierten Job

Der Fortschritt des Ladelaufes kann durch wiederholtes Drcken des REFRESH-Knopfes kontrolliert
werden.
An dieser Stelle knnen Ladelufe auch angehalten bzw. auch gestartet werden.
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

85/299

Design-Repository Browser
ber die Option Design Repository: Navigation des Hauptfensters gelangen Sie in den MetadatenBrowser.

Einstieg zum Design Repository Browser


In diesem Design Repository Browser erffnet sich Ihnen eine Baumdarstellung aller Objekte des
Repository. Um die bersicht zu erleichtern, kann man einen Fokus setzen, z. B. auf das Modul
Warehouse.

Metadatenobjekte des Moduls WAREHOUSE

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

86/299

Oder auf ein Mapping innerhalb dieses Moduls:

Metadatenobjekte des Mappings MP_TRASNAKTIONEN_4_WHERE


Die Brillen-Symbole auf der rechten Seite ermglichen einen Zugang zur Impact- und LineageAnalyse.
Impact- / Lineage-Analyse direkt aus OWB heraus
Um eine Impact- bzw. Lineage-Analyse direkt aus dem OWB heraus zu erhalten, gengt es im Design
Center mit der rechten Maustaste auf ein Objekt zu drcken, und dann die Impact- oder LineageOption zu drcken.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

87/299

Impact- / Lineage-Option im Design Center


Hier nur ein Ausschnitt aus einer Impact-Analyse. Die dicken Kstchen mit dem Plus-Symbol kann
man durch einen Doppelklick aufklappen. Dahinter verbergen sich Mappings. Die Darstellung kann
sehr komplex werden, wenn man die Suche von zentralen Tabellen aus startet, die in vielen Mappings
verwendet werden.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

88/299

Graphisch dargestellte Impact-Analyse


Zur besseren bersichtlichkeit sollte man sich bei komplexen Darstellungen, passende Teilausschnitte
vergrern, und diese dann drucken. Eventuell mssen die Teilausschnitte dann wieder
zusammengeklebt werden.

Ntzliche Hilfsmittel
Validate:
In dem Mapping-Editor kann vieles kombiniert werden, was spter zur Laufzeit nicht laufen wrde.
Deswegen ist es sinnvoll ein Mapping zu validieren, auch wenn die Validierung optional ist. Fhren
Sie folgenden Versuch durch:

ndern Sie ber das Property-Fenster fr die Tabelle WH_TRANSAKTIONEN das numerische
Feld Kundencode auf den Datentyp varchar.
Drcken Sie das Validate-Symbol
in der Kopfleiste des Editors
Sie bekommen jetzt in dem Generation Results-Fenster Warnmeldungen angezeigt. Die erste
besagt, dass die Tabelle WH_TRANSAKTIONEN nicht mehr mit der in dem Repository
gespeicherten Version bereinstimmt (hier msste synchronisiert werden). Zum anderen zeigt
eine Meldung an, dass der Typ des Felds KUNDENCODE im Ausgabebereich des Joiners nicht
mit dem Zielfeld der Zieltabelle bereinstimmt.

Durch einen Doppelklick in den Textbereich kann man die komplette Meldung anzeigen.
Unter Validation Details stehen Hinweise, wie man die Situation beheben kann. In fast allen Fllen
sind diese Empfehlungen sinnvoll.
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

89/299

Wenn Warnungsmeldungen erscheinen, kann die sptere Generierung erfolgreich verlaufen es muss
aber nicht so sein. Erscheinen echte Fehlermeldungen (rotes Symbol), ist eine Generierung
unmglich.

Ergebnis-Meldungen des Validate-Aufrufes


Der Validate-Mechanismus arbeitet sehr genau und stellt eine groe Hilfe bei der Vermeidung von
Fehlern dar. In der aktuellen Version wird der Validate-Prozess bei Generierungen jeder Art
automatisch immer gestartet.
Tipp:
Tritt eine ungewhnliche Fehlersituation vor allem bei dem Deploy der Datenbankobjekte auf,
so findet man durch den Validierungs-Prozess meist den passenden Hinweis.
Ad Hoc-Generierungen im Mapping-Editor
SQL-Erfahrene knnen sehr schnell einem Programmcode ansehen, ob er tauglich ist oder nicht.
Daher bietet der Mapping-Editor auch die Mglichkeit der Zwischengenerierung direkt aus dem Editor
heraus.
Drcken Sie das Generate-Symbol
in der Kopfleiste des Editors.

In dem Generation Result Fenster wird Ihnen ein Package-Code-Extrakt gezeigt. Zur besseren
Lesbarkeit sind die vielen Aufrufe fr die Statistik und Fehlerbehandlung entfernt.
Den Code knnen Sie herauskopieren und separat testen.

Im Kopf des Generation Result Fensters finden Sie eine List box Generation Style mit den
Optionen Full und Intermediate.
Whlen Sie Intermediate.
Markieren Sie in dem Mapping-Fenster INOUTGRP1 von WH_TRANSAKTIONEN. Das Insert ....
Into .....Select from ....-Statement erscheint in dem Generation-Result-Fenster.
Markieren Sie nach und nach auch andere Gruppenfelder in dem Mapping und Sie erkennen, wie
sich der generierte Code ndert.
In der List box Aspect knnen Sie fr diese Tabelle auch unterschiedlich DML-Befehle anwhlen. Die
Optionen ndern sich in Abhngigkeit von der Situation, in der sich die Tabelle befindet.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

90/299

Generierung von Intermediate Result


In diesem Mapping sind das sehr einfache Beispiele. Bei komplexeren Mappings ist diese Technik ein
wichtiges und stndiges Hilfsmittel.
Tipp:
Das Intermediate-Result-Ergebnis kann in vielen Fllen direkt in SQL*Plus berfhrt werden.
Somit kann man sehr schnell das jeweilige Statement testen. Kopieren ber Edit Select All
oder
CTRL-A -> CTRL-C -> CTRL-V.
Anzeigen des Execution Plans direkt aus dem Mapping
ber die Option Explain kann der Execution Plan fr das gerade angezeigt Statement dargestellt
werden.

Anzeigen Execution Plan


Kopieren von Metaobjekten
Alle Objekte knnen mit Hilfe des Kontextmens (rechte Maustaste) kopiert werden, auch komplexe
Mappings und ber Modulgrenzen hinweg. Allerdings nur innerhalb eines Projektes.
Das ist praktisch, wenn Sie ein Mapping zu Testzwecken umbauen wollen, aber eventuell auf die
Ursprungsversion wieder zurckkehren mssen.
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

Stand/letzte nderung 9/16/16

91/299

329869597

Oracle Warehouse Builder Step-By-Step

92/299

7. Die Operatoren zum Transformieren


Transformieren ist eine der wichtigsten Aktivitten bei der Aktualisierung eines Data Warehouse. Die
wichtigsten Operatoren zum transformieren sind in diesem Kapitel zusammen gefasst.
Es sind:
Joiner
Splitter
Filter
Deduplicator (Distinct)
Aggregator
Lookup
Functions und Procedures
Parameter
Set (Union, Union All, Minus, Intersect)
Text-Files
Pivoting
Table Functions
Sorter

Mehrere Tabellen ber JOIN verbinden und einlesen Join Operator


Den Join-Operator haben wir oben bereits kennen gelernt. In dem nchsten Szenario-Schritt ergnzen
wir das Mapping um mehrere Quelltabellen ARTIKEL und KUNDE.

Erstellen Sie ein zweites Mapping MP_TRANSAKTIONEN_2_JOINER.


Tipp:
Kopieren Sie hierfr das Mapping MP_TRANSAKTIONEN (rechte Maustaste COPY/PASTE)
und RENAME auf das neu entstandene Objekt COPY_OF_MP_TRANSAKTIONEN mit der
rechten Maustaste.

ffnen Sie das Mapping.


Ziehen Sie ber das Explorer-Fenster die beiden Tabellen ARTIKEL und KUNDE aus dem Modul
OLTP in den Editor, wie bereits bekannt.
(Wenn die Tabellen nicht ber das Modul OLTP sichtbar sind, importieren Sie die Tabellen mit der
IMPORT-Funktion des Kontextmens am Modulnamen.)
Erweitern Sie den Joiner um zwei weitere INGRP-Bereiche und benennen Sie die Gruppen
ARTIKEL und KUNDE. (Rechte Maustaste auf den Joiner-Kopf -> Open Details).

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

93/299

Anlegen neuer Input-Gruppen in dem Joiner

Ziehen Sie die INOUTGR-Bereiche der neuen Tabellen in die jeweiligen Eingabegruppenbereiche
des Joiners

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

94/299

Display Set
Da die Kundentabelle etwas mehr Columns besitzt, wird der Ausgabebereich des Joiners sehr lang
und unbersichtlich. Um die Situation in den Griff zu bekommen, gibt es mehrere Hilfsmittel:
Zum einen: Display Sets verwenden. Nicht alle Columns werden genutzt. Wir blenden nur diejenigen
Columns ein, die auch wirklich gebraucht werden.
Lschen Sie den Eingabegruppenbereich mit dem Namen Kunde wieder aus dem Joiner (Open
Details). Das ist der schnellste Weg, alle Linien weg zu bekommen, und legen Sie ihn wieder neu
an.
ffnen Sie jetzt das Kontextmen der Tabelle Kunde (rechte Maustaste auf den Kopf der Tabelle).
Whlen Sie den Punkt Display Set.
Erfassen Sie in der Liste unter Name den neuen Eintrag Joiner und selektieren Sie in dem
unteren Bereich die Felder KUNDENNR / GESCHLECHT / VORNAME / NACHNAME / TITEL /
STATUS

Festlegen eines Display Sets


Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

95/299

OK.
Whlen Sie jetzt in dem Kontextmen der Tabelle Kunde ber den Punkt Select Display Set
die neu entstandene Option Joiner.
Jetzt sollten nur noch die vorher gewhlten Spalten zu sehen sein.

Auswahl des passenden Display Sets

Ansicht nach Auswahl des Display Sets

Ziehen Sie jetzt den INOUTGR-Bereich der so verkrzten Kunden-Tabelle in den entsprechenden
Eingangsbereich des Joiners.
Ergnzen Sie jetzt die Join-Bedingung (Markieren des Kopfs des Joiners -> Property Fenster ->
Join Condition wie in dem Bild angezeigt).

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

96/299

Die neue Join-Condition


Erweitern Sie jetzt die Zieltabelle WH_Transaktionen um die zustzlichen Felder, die Sie jetzt in dem
OUTGR-Bereich des Joiners finden.
Tipp:
Die Reihenfolge der Spalten in der OUTGRP1-Gruppe orientiert sich an der Reihenfolge der
Eingabegruppen. Dies hilft bei der Orientierung vor allem dann, wenn gleichbenannte Attribute
aus verschiedenen Eingabetabellen geliefert werden. Doppelte Spaltennamen unterscheidet
OWB durch das Anhngen eines Zhlstrings (z. B. BESTELLNR_1)
Tipp:
Die Spalten in der OUTGRP1-Gruppe knnen auch mit Hilfe von Prfixen leicht unterschieden
werden. ffnen Sie hierzu den Joiner-Editor (rechte Maustaste auf den Kopf des Joiners ->
Open Details) und fgen Sie vor allen Column-Namen des INGRP-Bereichs einen Prfix ein
(z. B. K_).
Die Prfixkennzeichnung wird in den Ausgabebereich bertragen.
Eine weitere Hilfe hierzu sind die Display Sets (rechte Maustaste auf den Kopf des Joiners ->
Use Display Set -> Selektieren der jeweiligen Option.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

97/299

Hilfsmittel Prfixe bei der Vergabe von Attributnamen innerhalb einer Attributgruppe

Ziehen Sie die Felder Artikelname / Einzelpreis und Status in die Zieltabelle WH_Transaktionen.
Es erscheint ein Zwischenfenster ber das Sie festlegen knnen, in welcher Art und Weise die
Spaltennamen in die Zieltabelle bernommen werden. Mit Go bernehmen Sie alle. Sie knnen
aber auch den Prfix K_ wieder ausblenden, indem Sie Ignore Source Prefix whlen.

berprfen Sie die Richtigkeit des Mappings mit Validate. Sie erhalten die Information, dass die
Tabelle WH_TRANSAKTIONEN nicht mehr synchron mit dem Repository ist.
Sie mssen die Tabelle synchronisieren (rechte Maustaste auf WH_Transaktionen -> Synchronize ->
Voreinstellungen lassen -> OK).
Generieren und Testen Sie das neue Mapping entweder direkt ber den Project Tree oder ber das
Control Center. Sie mssen dabei auch die Ziel-Tabelle WH_TRANSAKTIONEN erneuern, d. h. Sie
sollten die Option REPLACE fr die Tabelle whlen. Diese wird zwei Skripte erzeugen: ein DROP
TABLE und ein CREATE TABLE.

Wechseln Sie in das Control Center.


Sie stellen fest, dass sich der Zustand der Objekte gendert hat. WH_Transaktionen_2 steht auf
NEW und das Mapping MP_TRANSAKTION_2 auf Not Deployed.
Dieses sollten Sie ndern, indem Sie neu generieren.

An diesem Beispiel knnen Sie eine wichtige Aufgabe des Control Centers erkennen: Es zeigt Ihnen
auf, welche Objekte sich im Verlauf des Entwicklungsprozesses gendert haben. Sie erkennen,
welche Generierungen Sie nachziehen mssen.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

98/299

Der neue Zwischenstand des Beispiel-Mappings (MP_TRANSAKTIONEN_2_JOINER)


Tipp:
Haben Sie mit der Gre der Tabellen und dem beschrnkten Platzangebot im Editor
gekmpft? Wenn ja, sollten sie die Anzahl der angezeigten Attribute auf die tatschlich
gemappten Attribute beschrnken.

Rechte Maustaste auf die Attributgruppe der Tabelle, die Sie in der Anzeige
verkleinern mchten.
Option Use Display Set -> MAPPED.

Diese Option Use Display Set ist zudem sehr praktisch, wenn Sie nur Spalten von einem Join-Zweig
sehen wollen. Schalten Sie zu Testzwecken zwischen den Optionen hin und her, um den Effekt
kennen zu lernen.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

99/299

Die verschiedenen Display-Sets

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

100/299

Automapper
An diesem Beispiel lsst sich gut eine weiter praktische Funktion des Mapping Editors darstellen: Der
Automapper. In diesem Release sind viele solcher praktischen Funktionen eingebaut worden.

Lschen Sie die Verbindungslinien zwischen OUTGR1 des Joiners und der Zieltabelle
WH_TRANSAKTIONEN. (Linie markieren und Delete-Taste drcken).
Ziehen Sie eine Linie von OUTGR1 des Joiners auf INOUTGRP1 der Zieltabelle
WH_TRANSAKTIONEN.
Es erscheint der Automapper.
Im rechten Bereich knnen Sie unterhalb von Source Conditions in den leeren Feldern die
Anfangsbuchstaben von potentiellen Spaltennamen eintragen. Es erscheint ein Selektionsfenster
mit allen in Frage kommenden Spalten, von denen Sie sich die passende aussuchen knnen.

Auto Mapper

In mehrere Zieltabellen schreiben - Splitter-Operator


In einem Mapping knnen Sie sowohl aus mehreren Tabellen lesen und gleichzeitig in mehrere
Zieltabellen schreiben. In mehrere Zieltabellen knnen Sie ber den "Splitter" schreiben.
Aufgabenstellung: In Abhngigkeit von dem Feld "Status" der Tabelle WH_TRANSAKTIONEN

sollen in zwei zustzlichen Zieltabellen die Felder Name, Kundencode und Bestellmenge geschrieben
werden. In dem Status-Feld kann stehen P (wie Privatkunde) und F (wie Firmenkunde).

Erstellen
Sie
wieder
eine
Kopie
von
MP_TRANAKTIONEN_2_JOINER
nach
MP_TRANSAKTIONEN_3_SPLITTER.
Ziehen Sie den Splitter-Operator zustzlich in den Editor und positionieren Sie ihn rechts neben
die Tabelle WH_TRANSAKTIONEN.
Ziehen Sie die Felder Kundencode, Bestellmenge, Bestell_Total sowie Status aus
WH_TRANSAKTIONEN in den Eingabebereich des Splitters.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

101/299

ndern Sie die Namen OUTGP1/2 in die sprechenden Namen Privatkunde und Firmenkunde.
(-> rechte Maustaste auf den Splitterkopf und dann Open Details).

Umbenennung der Splitter-Groups

Markieren Sie die Ausgabegruppe Privatkunde und gehen Sie ber den Property Inspector in
das Feld Split Condition um in den Expression Builder zu gelangen.

Festlegen der Split-Condition ber den Property Inspector

Sie gelangen in den Expression Builder

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

102/299

Split-Condition im Expression Builder


Erzeugen Sie hier die Bedingung:
INGRP1.STATUS = 'P'
Wiederholen Sie den Vorgang fr die Ausgabegruppe Firmenkunde mit der Bedingung
INGRP1.STATUS = 'F'
Erzeugen Sie zwei neue Tabellen WH_TRANS_PRIVAT und WH_TRANS_FIRMA.
Ziehen Sie jetzt die kompletten Ausgabegruppen des Splitters also Privatkunden und
Firmenkunden in die jeweiligen Eingabegruppen der Zieltabellen. Alle Attribute mssten
bernommen werden.
Betrachten Sie zur Kontrolle das generierte Ergebnis ber das Generate-Symbol im Fensterkopf.

Erzeugen Sie jetzt die neuen Tabellen in dem Modul Warehouse (-> rechte Maustaste auf den
Tabellenkpfen -> Create And Bind).
Generieren Sie die beiden neuen Tabellen und das neue Mapping.

Betrachten Sie sich die Ergebnisse der neuen Tabellen ber den Relational Data Viewer:

Ergebnisse nach dem Splitter-Lauf

Exkurs: Multiple-Inserts in einem Kommando


Betrachten Sie das Insert-Statement fr die beiden neuen Zieltabellen in dem Generation Result
Fenster genau (ab etwa Zeile 120). Sie werden feststellen, dass der Warehouse Builder ein sog.
Multiple Insert Statement generiert hat (Funktionalitt der Oracle Datenbank ab Version 9i).
Dies ist ein bedingtes Schreiben in zwei Tabellen gleichzeitig, wobei die Eingabemenge aus
einem einzigen Select entnommen wurde. Alles in allem handelt es um ein einziges SQLKommando das die Datenbank sehr performant und parallelisiert abarbeitet.
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

103/299

Ausschnitt aus dem generierten Code:


INSERT
/*+ APPEND PARALLEL("WH_TRANS_PRIVAT") APPEND PARALLEL("WH_TRANS_FIRMA") */
ALL
WHEN "STATUS" = 'P'/* SPLITTER.PRIVATKUNDEN */ THEN
INTO
"WH_Trans_Privat"
("BESTELLMENGE",
"KUNDENCODE",
"BESTELL_TOTAL",
"STATUS")
VALUES
("BESTELLMENGE$1",
"KUNDENCODE$1",
"BESTELL_TOTAL$1",
"STATUS")
WHEN "STATUS" = 'F'/* SPLITTER.FIRMENKUNDEN */ 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 */)
);

Das neue Mapping sollte jetzt wie folgt aussehen.

Der neue Zwischenstand des Beispiel-Mappings (MP_TRANSAKTIONEN_3_SPLITTER)

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

104/299

Exkurs: Wie viele Tabellen passen in ein Mapping und wie werden
sie kombiniert
Sie knnen beliebig viele Joiner und Splitter mit beliebig vielen beteiligten Tabellen in einem Mapping
kombinieren. Die Zwischentabelle WH_TRANSAKTIONEN in dem gezeigten Beispiel ist nur
entstanden, weil es in dieses Demo-Szenario gut passte. Wir htten auch Joiner und Splitter direkt mit
einander vereinen knnen.
Es knnen auch beliebig viele Ladeschritte nacheinander in einem Mapping folgen, wobei eine
Zieltabelle eine Quelltabelle in einem Folgeschritt darstellt, usw.

Abarbeitung mehrerer Ladevorgnge in einem Mapping


Auch das parallele Abarbeiten von unabhngigen Tabellen ist mglich:

T1 T4 und X1 X4 werden nacheinander geladen. Die Tabellen mssen nicht in demselben


Ladestrang liegen.
Auch komplexe Strukturen sind erlaubt, wie das folgende Beispiel zeigt:

T1 T4 und X1 X4 werden nacheinander geladen ber einen Joiner auf TX1-2 vereinigt und ber
einen Splitter wieder in V1-2 und W1-2 gespalten.
Es gibt nur die Einschrnkung, dass Sie die Flle der Inserts, die der Warehouse Builder generiert,
nicht mehr berschauen knnen.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

105/299

Tipp:
Fllen Sie nur die Operatoren in den Mapping-Editor, die auch zur Abarbeitung einer
zusammenhngenden Teilaufgabe notwendig sind. In der Regel ist das das Verndern einer
Tabelle oder von logisch zusammenhngenden Tabellen. Man kann sich hier an
Geschftsprozessen orientieren.

Filter und Bedingungen (Where Operator)


Ein Filter schrnkt die Verarbeitung von Stzen aus den einzelnen Tabellen ein. Er wird in SQL mit
Hilfe der WHERE-Bedingung des SELECTS realisiert. Bereits bei dem JOINER-Operator ist eine
WHERE-Bedingung erzeugt worden. Wir htten also bereits dort einen Filter definieren knnen, indem
wir die Join-Bedingung modifiziert htten. Das Ergebnis wre das gleiche gewesen, aber
unbersichtlicher. Man verwendet OWB u. a. aufgrund der Mglichkeit zur Dokumentation. Eine JoinOperation und eine Filter-Operation sind logisch zwei unterschiedliche Dinge, auch wenn sie mit
denselben SQL-Schlsselwrtern realisiert sind.
Aufgabenstellung: Es sollen nur Kunden mit Kundenummer > 1000 geladen werden.

Erstellen Sie in dem Modul WAREHOUSE durch Kopie aus MP_TRANSAKTIONEN_3_SPLITTER


das neue Mapping MP_TRANSAKTIONEN_4_WHERE.
Minimieren Sie zunchst alle Operatoren, damit Sie leichter eine bersicht bekommen.

Mapping mit minimiert dargestellten Operatoren

Ziehen Sie das Filter-Symbol

aus der Palette und der Untergruppe Transformationen in

die Editorflche. Am besten zwischen die Tabelle Kunde und den Joiner-Operator.
Durch einen Doppelklick auf die Tabelle Kunde knnen sie das minimierte Symbol aufklappen, so
dass Sie alle Spalten sehen.
Machen Sie das gleiche mit dem Joiner-Operator. Hier allerdings entstehen zu viele Spalten.
Schalten Sie am besten die Display Set-Option des Joiners fr Kunden an.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

106/299

Hinzufgen eines Filters

Markieren Sie die Linien zwischen KUNDE und dem Joiner, so dass sie sich blau frben und
lschen Sie diese.
Ziehen die ganze (!) Gruppe INOUTGRP1 von KUNDE auf die Gruppe INOUTGRP1 des Filters.
Ziehen Sie diese INOUTGRP1-Gruppe auf den Kunden-Bereich des Joiners.
Das Connect Fenster erscheint. Whlen Sie hier die Option Match by name of Source and
target attributes und dann Ignore target prefix mit K_. (Wenn sie in den Tests vorher die
Kundenspalten mit K_ gekennzeichnet haben) ansonsten Ignore case differences.
Drcken Sie auf Preview. Alle Feldnamen werden automatisch im rechten Bereich bernommen.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

107/299

Der Auto Mapping-Wizard

OK
Stellen Sie jetzt die Filterbedingung ber den Property Inspector ein.

Die Filterbedingung

Generieren Sie das neue Mapping und testen Sie es.


Tipp:
Benennen Sie das neue Filterobjekt um z. B. Kunden_groesser_1000. Das macht das
Mapping lesbarer.

Wir haben den Filter zwischen die Quelltabellen und den Joiner gesetzt, alternativ htten wir ihn auch
nach dem Joiner setzen knnen. Der generierte Code wird allerdings gleich bleiben. Die
Filterbedingung wird als Bestandteil in die WHERE-Klausel mit aufgenommen.
Achtung: Wie in dem Beispiel gezeigt, ist es ntig alle Columns zunchst in den Filter und
dann erst in den Joiner flieen zu lassen. Wrde man dies nur mit der einen Column tun, die
einzuschrnken ist und die brigen Columns direkt mit dem Joiner verbinden, dann htte der Joiner
zwei Operatoren als Quelloperator. Eine Fehlermeldung wrde dies anzeigen.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

108/299

Betrachten Sie sich nach einer Generierung im Mapping-Editor den Code fr die Filterbedingung.

Die Warehouse Builder baut die ber den Filter-Operator definierte Bedingung in die Where- Klausel,
die bereits durch die Join-Bedingung entstanden war, ein.
Das Generierungsergebnis sieht jetzt so aus (Ausschnitt):
...
FROM
"SRC"."BEST_POSITION" "BEST_POSITION",
"SRC"."BESTELLUNG" "BESTELLUNG"
WHERE
( "BEST_POSITION"."BESTELLNR" = "BESTELLUNG"."BESTELLNR" ) AND
( "BESTELLUNG"."KUNDENCODE" > 1000 )
);

Das neue Mapping hat jetzt folgendes Aussehen:

Mapping WH_Transaktionen_4_WHERE

Exkurs: Zieltabellen automatisch leeren - Truncate


Unsere Zieltabellen WH_TRANS_PRIVAT und WH_TRANS_FIRMA und auch die Zwischentabelle
WH_TRANSAKTIONEN fllen sich mit jedem Test, die wir durchfhren um mehrere 1000 Stze.
Eigentlich mssten wir zwischen allen Tests manuell eine TRUNCATE-Anweisung direkt in der
Datenbank absetzen. Hier ein kleiner Vorgriff auf die Update / Delete / Insert-Steuerung, die weiter
unten noch erklrt wird: Wir knnen die Zieltabellen auch auf TRUNCATE / INSERT umstellen, so
dass OWB zunchst einen TRUNCATE durchfhrt bevor mit INSERT in die Datenbank geschrieben
wird.
ndern Sie ber das Property-Inspector-Fenster den Loading Type fr alle betroffenen Tabellen
auf TRUNCATE / INSERT.
Generieren Sie das Mapping neu und testen Sie es.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

109/299

Einstellen des Loading Type zum initialen TRUNCATE auf eine Ziel-Tabelle

Beliebige Ausdrcke in einem SQL-Kommando - Der ExpressionBuilder


Beliebige Ausdrcke, Berechnungen, Wandlungen, aber auch besondere Prfungen integriert der
Expression-Builder in den Datenfluss. Mit diesem Operator fhren Sie Ausdrcke in den Select-Teil
des SQL Kommandos ber die normalen Column-Namen hinaus ein.
Anforderung: Leiten Sie aus den Bestellungen und

Bestellpositionen

eine Information mit

zustzlichen Feldern fr
Berechnung Gesamtwert pro Position (Artikelpreis mal Menge)
Rechnungsflligkeitsdatum (Lieferdatum + 20),
Berechnung Bruttogesamtwert
ab.
Die Inhalte der neuen Felder sind zu berechnen.

Kopieren Sie das Mapping WH_TRANSAKTIONEN_4_WHERE und machen Sie daraus


WH_TRANSAKTIONEN_5_EXPR.
Fgen Sie aus der Palette den Expression-Operator
in das Mapping zwischen den
Joiner und die Tabelle WH_TRANSAKTIONEN.
Ziehen Sie die 3 Felder BESTELLMENGE, DATUM und EINZELPREIS aus dem Ausgangsbereich
des Joiners in den INGR1-Bereich der Expression.
Kopieren Sie das Feld BESTELL_TOTAL aus der Zieltabelle WH_TRANSAKTIONEN in den
OUTGRP1-Bereich der Expression. (rechte Maustaste -> Copy / Paste)
Verbinden Sie das neue Feld in der Expression mit dem Zielfeld BESTELL_TOTAL in der
Zieltabelle.
ffnen Sie das Expression-Editor-Fenster (-> rechte Maustaste auf den Kopf der Expression ->
Option Open Details).
Markieren Sie in der linken Schrittfolgeanzeige den Punkt Output Attributes
Sie sehen in der Liste rechts das Feld BESTELL_TOTAL, fr das Sie jetzt eine Rechenregel
hinterlegen knnen.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

110/299

Auflistung aller OUTGR-Attribute mit der Mglichkeit eine Expression zu definieren

In der dritten Spalte der Darstellung (das ist die Spalte ohne Kopf) sehen Sie drei Punkte.
Setzen Sie einen Doppelklick auf diese Punkte. Der Expression Builder wird erscheinen.
Formulieren Sie die Rechenregel BESTELLMENGE * EINZELPREIS
Besttigen Sie die weiteren Dialoge mit OK

Expression Editor
Die weiteren beiden Regeln erfassen wir hnlich.
ffnen Sie das Expression-Editor-Fenster (-> rechte Maustaste auf den Kopf der Expression ->
Option Open Details).
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

111/299

Erfassen Sie unter der Schrittfolgeanzeige Output Attributes die Felder:


- RECHNUNGSDATUM (DATE)
- BRUTTOWERT (NUMBER)

Formulieren Sie die zweite Regel in dem Sie auf Bestelldatum die Zahl 20 addieren.

Expression Rechnungsdatum
Und die dritte Berechnung fr den Bruttowert ist etwas komplexer. Hier werden 16% des
Gesamtwertes berechnet und zu dem Gesamtwert hinzu addiert.

Expression Bruttowert
Sie knnen fr alle Berechnungen auch ein Validate durchfhren, das erspart spteres Korrigieren.

Benennen Sie den Namen des Operators um, z. B. auf Berechnungen, damit er sprechen wirkt.

berfhren Sie jetzt die neuen Felder des Ausgangsbereichs der Expression in die Tabelle
WH_TRANSAKTIONEN. Die Felder RECHNUNGSDATUM und BRUTTOWERT entstehen dort
neu.
Synchronisieren Sie die Tabelle WH_TRANSAKTIONEN mit dem Modul Warehouse (rechte
Maustaste Synchronize). Achten Sie darauf dass Sie die Option Outbound whlen, damit
nderungen aus dem Mapping in die Tabellendefinition des Moduls bertragen werden und nicht
umgekehrt.
Generieren Sie die genderte Definition der Tabelle WH_TRANSAKTIONEN mit dem Control
Center (Achtung Option REPLACE).
und erzeugen Sie das neue Mapping.
Betrachten Sie sich die Tabelleninhalte ber den Data Viewer

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

112/299

Die neuen Tabelleninhalte von WH_TRANSAKTIONEN


Tipp:
Wir haben in diesem Beispiel alle Rechenoperationen in eine Expression hineingehngt. Das
war bewusst so gemacht. Wir htten auch fr jede Expression einen separaten Operator
whlen knnen. Allerdings wrde diese Vorgehensweise das Mapping mit unntig vielen
Operatoren auffllen und es wre unbersichtlich.

Der neue Zwischenstand: Das Mapping MP_TRANSAKTIONEN_5_EXPR

CASE Strukturen im Expression Builder


Der CASE Ausdruck macht SELECT-Abfragen flexibler. Das CASE gehrt mit zu den mchtigsten
Sprachmitteln des heutigen SQL. Es ersetzt das schwerer verstehbare DECODE. Mit dieser
Konstruktion knnen manche Prfroutinen oder Lookups in andere Tabellen entfallen. Bedingte
Verarbeitungen und Prfungen sind leicht mglich. Es ist auch ein wichtiges Hilfsmittel bei der noch zu
besprechenden Thematik Mengenbasiertes oder Satzbasiertes Laden.
Die CASE-Klausel kann die folgende Form haben:
SELECT
CASE feldname (oder Ausdruck)
WHEN Wert_X THEN Returnvalue_X
WHEN Wert_Y THEN Returnvalue_Y
ELSE Kein Wert
END
FROM Tabelle;
Um sicher zu sein, ob eine besondere Variante mglich ist, kann man entsprechende Tests mit der
DUAL-Tabelle durchfhren.
select
case 1
when 1 then 'EINS'
when 0 then 'NULL'
else 'NICHTS' end
from dual;

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

113/299

Je nachdem, was Sie an Stelle der 1 einsetzen liefert der Gesamtausdruck entsprechende Werte
zurck.
Anforderung: In dem vorhergehenden Beispiel konnten wie im Data Viewer fr das berechnete
Feld BESTELL_TOTAL einen 0-Wert finden. Die Ursache liegt in dem Feld BESTELLMENGE das
ebenfalls eine 0 beinhaltet. Offensichtlich gibt es Bestellungen, in denen nichts bestellt wurde. Diese
Fehlbestellungen sollten markiert und spter ausgesondert werden. Die Markierung soll in einem
zustzlichen Feld FEHLMENGE aufgenommen werden. Wenn eine Fehlmenge auftritt, soll dort eine
1 eingetragen werden.

Kopieren Sie das Mapping WH_TRANSAKTIONEN_5_ EXPR und machen Sie daraus
WH_TRANSAKTIONEN_6_CASE.
Ziehen Sie eine zustzliche Expression in das Mapping-Feld zwischen den Joiner und die Tabelle
WH_TRANSAKTIONEN und rechts unterhalb der bestehenden Expressionen BERECHNUNGEN.
(Wir erzeugen einen zustzlichen Operator, um die Thematik CASE hervorzuheben und um zu
zeigen, wie Expressions kombiniert werden knnen.)
berfhren Sie das Feld BESTELL_TOTAL aus dem Ausgabebereich der Expression
BERECHNUNGEN in den Eingabebereich der neuen Expression.
Editieren Sie die neuen Expression (-> rechte Maustaste -> Open Details) indem Sie das neue
Feld FEHLMENGE (number) unter dem Reiter Output Attributes erfassen. Benennen Sie die
Expression Fehlmenge.
ffnen Sie fr das neue Feld Fehlmenge den Expression Editor ber den Property Inspektor.
Fgen Sie die folgende CASE-Anweisung ein:

Expression Editor mit CASE-Anweisung

Nachdem Sie den Editor geschlossen haben berfhren Sie das Feld FEHLMENGE der neuen
Expression in die Tabelle WH_TRANSAKTIONEN.
Synchronisieren Sie die Tabelle WH_TRANSAKTIONEN wieder ber die Synchronize-Option
Outbound.
Generieren Sie die Tabelle WH_TRANSAKTIONEN und das neue Mapping und testen Sie es.

Jetzt mssten alle fehlerhaften Liefermengen mit 1 markiert sein.

Markierung von fehlerhaften Bestellmengen mit 1 in dem Feld FEHLMENGE


Der neue Zwischenstand: Das Mapping MP_TRANSAKTIONEN_6_CASE
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

114/299

Das Mapping MP_TRANSAKTIONEN_6_CASE


2. Beispiel
Zur besseren bung hier noch ein zweites Beispiel:
In der Kundentabelle ist ein Statusfeld enthalten um Kunden in Privat- oder Firmenkunden zu
kategorisieren. In einem Auswertebericht soll jedoch nicht der Code P bzw. F abgebildet werden,
sondern der sprechende Text Privatkunde, Firmenkunde bzw. ein Fehlertext, wenn kein Wert
vorhanden ist. Die SQL-Konstruktion lautet:
Hierzu kann man eine weitere Expression zwischen den Joiner und der Tabelle
WH_TRANSAKTIONEN setzen und in der Tabelle ein weiteres Feld STATUSBESCHREIBUNG
aufnehmen.
Diese CASE-Lsung im Expression Builder lautet:

Verwendung von CASE im Expression Builder


Alles andere erfolgt analog wie in dem vorherigen Beispiel.
Die CASE-Anweisung wird sehr hufig verwendet. Diese Beispiele zeigen aber auch wie schnell man
iterativ die Mappings erweitern kann und zugleich das ntige Ma an bersichtlichkeit behlt.

Deduplicator Operator (DISTINCT Option)


Zum Erstellen von Listen mit eindeutigen Eintrgen wird in der SQL-Sprache die DISTINCT-Option
verwendet
Anforderung: Erstellen Sie eine Tabelle mit den Nummern aller verkauften Artikel pro Jahr.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

115/299

Hierzu wird aus der Toolbox der Deduplicator-Operator verwendet und Sie mssen ber eine
Expression die Jahreszahl aus dem Bestelldatum ableiten.

Kopieren Sie das Mapping WH_TRANSAKTIONEN_6_CASE und machen Sie daraus


WH_TRANSAKTIONEN_7_DISTINCT.
Ziehen Sie den DEDUPLICATOR-Operator
in das Mapping-Feld rechts neben die
Tabelle WH_TRANSAKTIONEN.
Ziehen Sie zustzlich einen Expression-Operator in das Feld.
berfhren Sie aus der Tabelle WH_TRANSAKTIONEN die Spalte Datum in den ExpressionOperator und fgen Sie in diesem Operator das Output-Feld Jahr (varchar2(4)) ein.
Benennen Sie den Operator JAHR.
Leiten Sie in dem Expression-Operator die Jahreszahl nach der folgenden Funktion ab:
to_char(INGRP1.BESTELLDATUM ,'YY').

berfhren Sie jetzt das Feld ARTIKELNR aus der Tabelle WH_TRANSAKTIONEN und das
Ausgabefeld der Expression JAHR in den INOUTGRP1-Bereich des Deduplicators.
Erstellen Sie ein neues Tabellenobjekt BESTELLTE_ARTIKEL rechts neben dem Deduplicator.
Fhren Sie die beiden Felder des Deduplicators in die neue Tabelle.
Synchronisieren Sie die neue Tabelle mit dem Modul WAREHOUSE (-> rechte Maustaste auf den
Kopf der neuen Tabelle -> Option Create And Bind).
Generieren Sie die neue Tabelle und das neue Mapping.
Testen Sie es und betrachten Sie sich die neue Tabelle in dem Data Viewer.

Der Zwischenstand des Mappings MP_TRANSAKTIONEN_7_DISTINCT


Tipp:
Umgang mit dem Data Viewer
Der Data Viewer wird die Stze aus der neuen Tabelle so anzeigen, wie sie die Datenbank
liefert, also unsortiert. Das ist gerade bei einer mit DISTINCT erzeugten Tabelle nicht sehr
leserlich. Die SQL-Schlsselwrter ORDER BY feldname knnen hier helfen. Unter der Option
Where Clause im Data Viewer kann man diese Schlsselwrter eintragen. Allerdings haben
wir keine Where-Klausel und mssen diese simulieren: Testen Sie den Ausdruck:
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

116/299

1=1 order by Jahr,Artikelnr.

Data Viewer mit simulierter WHERE-Klausel


Die Order By - Funktion macht natrlich nur dann Sinn, wenn die nachfolgende Verarbeitung auch
sortierte Stze verarbeiten kann, z. B. bei dem Schreiben in Textdateien oder der Weiterverarbeitung
in einem aufrufenden SQL-Statement.

Aggregieren von Daten (SUM, AVG)


Fr die Aggregation von Daten (SUM, AVG usw.) ist der Aggregator-Operator zustndig. Sie hngen
ihn zwischen Quell- und Zieltabelle und dort nimmt er die aggregierten, sowie die Group-By-Felder
auf.
Die Handhabung des Operators weicht von den bisher beschriebenen etwas ab, denn fr das zu
generierende SQL sind zwei Komponente zu definieren:
o Schlsselwrter wie: SUM, AVG, COUNT, MAX, STDDEV, STDDEV_POP, STDDEV_SAMP,
VARIANCE, VAR_POP, VAR_SAMP und
o Die Group By Klausel
Anforderung: Erstellen Sie eine Tabelle mit den aggregierten Umstzen pro Kunde.
Das zugehrige SQL zu dieser Anforderung lautet:
SELECT SUM(Feld_X) FROM Tabelle_X GROUP_BY Feld_y

Kopieren Sie das Mapping WH_TRANSAKTIONEN_7_DISTINCT


in das neue Mapping
WH_TRANSAKTIONEN_8_AGG.
Erstellen Sie eine neue Tabelle mit dem Namen UMSATZ_PRO_KUNDE und platzieren Sie diese
rechts neben die Tabelle WH_TRANSAKTIONEN.
Ziehen Sie den Aggregator-Operator
in den Editor zwischen die Tabelle
WH_TRANSAKTIONEN und die neue Tabelle.
berfhren Sie die Felder KUNDENCODE und BESTELL_TOTAL in den INGR1-Bereich des
Aggregators.
Definieren Sie jetzt den GROUP BY Ausdruck: Markieren Sie mit der Maus den Kopf des
Aggregators. In dem Property Inspektor erscheint jetzt ein Feld mit dem Namen Group By
Clause. ber dieses Feld gelangen Sie in den Group By Clause Editor.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

117/299

Property Inspector zum Festlegen der Group By Klausel

Schieben Sie das Feld KUNDENCODE in die rechte Flche

Festlegen der GROUP BY Klausel

OK.
In der Mapping-Flche sehen Sie jetzt, dass das Feld KUNDECODE in dem OUTGR1-Bereich
des Aggregators erscheint.
ffnen Sie wieder den Aggregator Editor und erfassen unter Output Attributes das neue Feld
SUMME_PRO_KUNDE.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

118/299

Sie erkennen wieder die dritte Spalte mit den drei Punkten. Selektieren Sie dieses Feld um in den
Expression Builder fr die Aggregation zu gelangen.

Whlen Sie unter:


Function
-> SUM
ALL/DISTINCT
-> ALL
Attribute
-> BESTELL_TOTAL
Whlen Sie abschlieend: Use Above Values.

Festlegungen fr die SUM-Anweisungen

Benennen Sie den Aggregator SUMME_PRO_KUNDE.


Tipp:
Sie knnen unter Expression auch manuell Eintrge vornehmen. Z. B. sind alle analytischen
Funktionen hier mglich.

Verbinden Sie die Ausgabefelder des Aggregation-Operators mit der Zieltabelle UMSATZ_PRO
KUNDE.
Erfassen Sie in dieser neuen Tabelle UMSATZ_PRO KUNDE zustzlich die Felder

ORTNR
BUNDESLAND
REGION

Die zuletzt erfassten Felder bentigen wir spter.

Erstellen Sie die neue Tabelle in dem Modul WARHOUSE (-> rechte Maus auf den Kopf der
Tabelle -> Create And Bind).
Generieren Sie die neue Tabelle und das Mapping ber das Control Center und testen Sie das
Mapping.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

119/299

Das Ergebnis im Data Viewer


Das erweiterte Mapping sieht jetzt so aus:

Das Mapping MP_TRANSAKTIONEN_8_AGG

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

120/299

Lookup Tabellen lesen


Eine der hufigsten Transformationen bei dem Laden von Daten in das Data Warehouse, ist das
Dekodieren von Schlsselinformationen ber Referenzwerte in einer anderen Tabelle. Hierzu nutzen
Sie den Key-Lookup-Operator.
Anforderung: Die in dem Vorbeispiel erstellte Tabelle Umsatz_Pro_Kunde soll um RegionenInformationen angereichert werden, d. h. pro Kunde sind Bundesland und die Wohnregion des
Kunden hinzuzufgen. Als Referenztabelle dient die Tabelle ORTE aus dem SRC-Schema.

Kopieren Sie das Mapping WH_TRANSAKTIONEN_8_AGG


WH_TRANSAKTIONEN_9_LOOKUP.

in

das

neue

Mapping

Eine nachtrgliche nderung in ein Mapping einbauen


Um spter einen Lookup auf die Orte-Tabelle durchfhren zu knnen, ist ein Schlssel ntig: der OrteSchlssel. Dieser ist in der Tabelle UMSATZ_PRO_KUNDE nicht enthalten. Wir haben zwei
Mglichkeiten zu dieser Nummer zu gelangen:
Wir nehmen einen separaten Lookup auf die Kundentabelle vor, um die Ortenummer zu
erhalten oder
wir gehen zurck in den Joiner und ziehen aus der Quelltabelle das Feld ORTNR nach.
Die zweite Variante ist sicher besser, denn die erste htte eine zustzliche Leseoperation auf die
Kundentabelle zur Folge, wir wrden in einem Mapping zweimal auf die Kundentabelle zugreifen.

Fhren Sie das Feld ORTNR aus der Tabelle KUNDE in den entsprechenden Eingangsbereich
des Joiners. Zur besseren Orientierung knnen Sie fr den Joiner das Display Set fr den Kunden
selektieren. Beachten Sie, dass das Feld auch durch den Filter-Operator zu fhren ist.
Ziehen Sie das Feld weiter in die Tabelle WH_TRANSAKTIONEN.
Aus WH_TRANSAKTIONEN muss es jetzt noch in den Aggregator SUMME_PRO_KUNDE
gelangen.
Nehmen Sie das neue Feld ORTENR ber den Open Details in die GROUP BY Klausel mit auf.
ORTENR wird danach in dem Ausgangsbereich des Operators erscheinen.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

121/299

Hinzufgen des Feldes ORTNR in die Group By Klausel


Das Ganze sieht etwas aufwndig aus, aber durch die graphische Untersttzung behlt man den
berblick. Die nderung ist dennoch schnell durchgefhrt. Der Vorgang zeigt aber auch, dass
komplexere Mappings nicht von Beginn an geplant werden knnen und nderungen immer auf der
Tagesordnung stehen.

Ziehen Sie den Lookup-Operator

aus der Palette zwischen den Aggregator

SUMME_PRO_KUNDE und die Tabelle UMSATZ_PRO_KUNDE.

Es erscheint der Lookup-Operator Wizard mit der ersten Aufforderung den neuen Operator zu
benennen. Geben Sie dem neuen Operator den Namen ANREICHERN_KUNDE. (Step 1/5)

Einer Lookup-Operator wird angelegt

OK
(Step 2/5) Next
Besttigen Sie alle Dialoge mit Next, ohne, dass Sie einen Eintrag vornehmen. Sie erhalten in
dem Mapping-Editor einen leeren Lookup-Operator

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

122/299

Die jetzt bersprungenen Eintragungen holen wir spter nach. Diese Vorgehensweise ist insgesamt
schneller.

berfhren Sie aus dem Aggregations-Operator das Feld ORTENR in den INGRP1-Bereich des
neuen Operators.
ffnen Sie nur diesen Operator ber die rechte Maustaste mit Open Details.

Auswahl der Lookup-Tabelle

Unter Lookup Tables selektieren Sie ber die List Box die ORTE-Tabelle aus dem Modul
BESTELLSYSTEM (Schema: OLTP). Wenn diese Tabelle noch nicht in dem Modul vorhanden ist,
importieren Sie diese aus dem Schema OLTP.
Die Auswahl Input und Output Attribute knnen Sie ignorieren, sie sind durch unsere Vorarbeiten
schon versorgt.
Unter Lookup Conditions whlen Sie fr Lookup Table Column das Feld ORT_NR und unter Input
Attribute das Feld ORTENR

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

123/299

Festlegen des Lookup-Kriteriums

Schlieen Sie den Editor mit OK


Verbinden Sie jetzt die Felder BUNDESLAND und REGION des Lookup-Operators mit der
Feldern BUNDESLAND und REGION der Zieltabelle UMSATZ_PRO_KUNDE.

Synchronisieren Sie die Tabellen WH_TRANSAKTIONEN und UMSATZ_PRO_KUNDE mit dem


Modul WAREHOUSE (-> rechte Maustaste auf den Kopf der jeweiligen Tabellen -> Synchronize ->
Option Outbound....)
Sie mssen jetzt die genderten Tabellen neu generieren:
WH_TRANSAKTIONEN
UMSATZ_PRO_KUNDE
und natrlich das neue Mapping

Testen Sie es und betrachten Sie sich die Tabelle UMSATZ_PRO_KUNDE im Data Viewer
Tipp:
Denken Sie bei Ihren Tests daran, die Tabelle UMSATZ_PRO_KUNDE
auf
TRUNCATE/INSERT zu stellen, damit Sie nicht aus Versehen bei wiederholten Lufen mit
alten Werten arbeiten.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

124/299

Ergebnis der Lookup-Operation


NULL-Werte verhindern
Bei der Durchsicht der Ergebnisdaten in der Tabelle UMSATZ_PRO_KUNDE ist zu erkennen, dass in
einigen Stzen kein Wert fr BUNDESLAND und REGION angezeigt wird. Das ist auch erklrbar,
denn der Lookup-Operator wird im SQL-Code mit einem Outer-Join realisiert, der fr den Fall, dass
kein Wert in der Referenztabelle gefunden wird, ein NULL-Wert zurckliefert. Fr diesen Fall ist es
praktisch, diese Stze mit einem String z. B. Keine oder falsche Ortsangabe zu markieren. In einem
nachgelagerten Schritt knnen Sie diese Stze herausfiltern und korrigieren.
Wir lsen die Aufgabe, indem wir in dem Lookup-Operator ANREICHERN_KUNDE fr die
Rckgabefelder BUNDESLAND und REGION eine Funktion z. B. NVL mitgeben.

ffnen Sie dazu den Lookup-Editor des Operators ANREICHERN_KUNDE (-> rechte Maustaste
auf den Kopf des Operators -> Open Details).
Gehen Sie auf No-match Rows.
Tragen Sie unter Default Value den String
Keine oder falsche Ortsangabe ein.
Achten Sie darauf dass das Zielfelder in der Tabelle UMSATZ_PRO_KUNDE (BUNDESLAD und
REGION die richtige Gre haben. Der String ist sehr lang. Sonst gibt es spter beim Starten des
Mappings Fehler.

Das Festlegen Markierungstexten fr den NULL-Fall


Die Zieltabelle sieht jetzt so aus:

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

125/299

Die Tabelle UMSATZ_PRO_KUNDE mit der Markierung Keine oder falsche Ortsangabe im NULLFall
Ist die Lookup-Tabelle nicht eindeutig, das heit gibt es mehrere Treffer-Werte, so kann man ber die
Auswahl Multiple Match Rows eine zustzliche Auswahl treffen. Z. B. First Row.

Das Mapping sieht jetzt so aus:

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

126/299

Das Mapping MP_TRANSAKTIONEN_9_LOOKUP

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

127/299

Verwenden von Funktionen und Prozeduren Die erweiterbare


Funktionsbibliothek
Es gibt Anforderungen, die nicht mit einfachen SQL Befehlskomponenten zu lsen sind. Hier helfen
zustzliche PL/SQL- oder Java-Funktionen. Solche Funktionen sind in der Funktionsbibliothek zu
finden. Sie knnen eigene Funktionen innerhalb von Warehouse Builder programmieren oder
bestehende aus einer Datenbank importieren oder mit anderen Werkzeugen die Funktionen erstellen
und sie dann ber die Datenbank importieren.
Diese Funktionen/Prozeduren sind die Schnittstelle hin zur freien Programmierung. Beliebige
Aktivitten in der Datenbank sind mglich. Die erweiterbare Funktionsbibliothek des Warehouse
Builder ist damit ein Sammelort fr alle zum Aufbau des Warehouse ntigen Routinen.
In Funktionen oder Prozeduren sind auch solche Rechen- und Transformationsoperationen zu
konzentrieren, die man an anderen Stellen wieder verwenden will. Die Expressions, die wir bereits
kennen gelernt haben, finden wir nur innerhalb eines Mappings fest hinterlegt. Man kann den Code
allenfalls mit Cut/Paste in ein anderes Mapping kopieren, dann ist es aber nicht mehr derselbe Code
und er kann getrennt und ohne Synchronisation gendert werden.
Funktionen sind nur innerhalb der Funktionsbibliothek zu ndern. Nachdem sie in die Datenbank
deployed wurden, wirken sie in allen Mappings in denen sie verwendet wurden gleichermaen.
Sie knnen Funktionen und Prozeduren an zwei Stellen definieren:
innerhalb der Module (Die Objekte sind nur innerhalb eines Moduls sichtbar)
ber den Globals Navigator (Die Objekte sind im gesamten Projekt sichtbar)

Definitions-Orte von Funktionen und Prozeduren

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

128/299

Die Mglichkeit Funktionen und Prozeduren in Modulen zu definieren ergibt nur einen
dokumentarischen Sinn. Wenn die Objekte spter die Datenbank generiert werden, sind sie auch
allgemein zugnglich. Auch wenn Sie innerhalb eines Mappings ein Objekt heranziehen, haben Sie
Zugriff auf alle Funktionen und Prozeduren in allen anderen Modulen.
Tipp:
Bleibt die Frage, wo man die Objekte am sinnvollsten definiert. Hier gibt es nur die Regel:
Beziehen sich Funktionen nur auf die Tabellen in dem jeweiligen Modul, dann sollte man sie
dort ablegen. Man kann somit Metadaten auf Modul-Ebene leicht mit anderen Projekten
austauschen und hat alle Objekte zusammen. Sind es generelle Funktionen (z. B.
Zeitumrechnungen, oder testdatengenerierende Funktionen), so sollte man sie in dem Globals
Navigator ablegen.
ber die Copy-Funktion knnen Sie bestehende Routinen als Vorlage nutzen. Das erleichtert die
Arbeit. Neue Funktionen/Prozeduren erstellt Sie ber den Wizard der jeweils immer ber die rechte
Maustaste und dann ber New ... startet.
Aus dem komfortablen Editor heraus kann die neu erstellt Routine direkt in die Datenbank gestellt und
getestet werden.
Tipp:
:

Das Zusammenfassen wichtiger und immer wieder zu benutzenden Funktionen/Prozeduren


in einer Bibliothek ist hilfreich, um eine projektbergreifende Bibliothek ber einen lngeren
Zeitraum wachsen zu lassen. Es entsteht eine sog. Ressourcen-Bibliothek, die ber den
Metadaten-Loader in eine beliebige OWB-Umgebung hineinkopiert bzw. wieder um neue
Funktionen ergnzt und herausgeholt werden kann.
Anforderung: Fr die beiden Tabellen WH_TRANS_PRIVAT und WH_TRANS_FIRMA soll eine

Bonusberechnung durchgefhrt werden. Die Berechnung des Bonus unterliegt mehreren Regeln:
Fr Firmenkunden:
- werden bis 50% des Umsatzes mit 2% belegt
- weitere 20 % mit 4%
Fr Privatkunden:
- werden die ersten 30% mit 1% des Umsatzes belegt
- weitere 10% mit 2%.
Es ist eine Funktion zu erstellen, die sowohl fr Firmen- und Privatkunden einsetzbar ist.
Die Funktion wird zwei Aufrufparameter haben:
- Statusflag (F oder P)
- BESTELL_TOTAL.
Sie wird eine ermittelte Bonussumme zurckliefern.
Wir entschlieen uns eine Funktion innerhalb des Moduls WAREHOUSE zu definieren.
Anlegen einer Funktion

Erstellen Sie eine Funktion BONUS_Berechnung (-> rechte Maustaste auf Functions innerhalb
des Transformations-Astes in dem Warehouse-Modul.
Erfassen Sie zwei Aufrufparameter fr die Funktion: KUNDENSTATUS (varchar2) und
BESTELL_TOTAL (number).

Aufruf-Parameter der Funktion


Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

129/299

Jetzt erhalten Sie unter Implementation die Mglichkeit den Funktions-Code zu erfassen. Whlen
Sie hierzu den Punkt Code-Editor.

In dem Editor-Fenster ist bereits ein Code-Template vorbereitet. Dieses Template an sich ist schon
ablauffhig, bewirkt durch die NULL-Schlsselwrter jedoch nichts. An diesen Stellen mssen
nderungen vorgenommen werden.

Template fr den Funktions-Code, aufgefllt mit NULL-Ausdrcken

Erfassen Sie den Code wie folgt:

Funktion Bonus_Berechnung

Den Code zum Kopieren um das Schreiben zu sparen:


if KUNDENSTATUS = 'F' Then -- Firmenkunde
return ((BESTELL_TOTAL* 0.5)*0.02) + ((BESTELL_TOTAL* 0.2)*0.04);
end if;
if KUNDENSTATUS = 'P' Then -- Privatkunde
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

130/299

return ((BESTELL_TOTAL* 0.5)*0.02) + ((BESTELL_TOTAL* 0.2)*0.04);


Else return 0;
end if;

Testen Sie den Code jetzt ber den Menpunkt Test Deploy Function.
Testen knnen Sie direkt im Zielschema in der Datenbank (DWH) z. B. folgenden Funktionstest:

Speichern Sie den Code mit SAVE unter dem Menpunkt Code ab. und beenden Sie den Wizard
mit OK

Verwenden einer Funktion


Diese Funktion soll in das Beispiel integriert werden:

Kopieren Sie das Mapping WH_TRANSAKTIONEN_9_LOOKUP in das neue Mapping


WH_TRANSAKTIONEN_10_Function.
Ziehen Sie aus der Palette einen Transformation Operator
rechts
neben den Splitter.
Ein Fenster ffnet sich, ber das Sie die Funktion BONUS_BERECHNUNG in dem Modul
WAREHOUSE auswhlen knnen. OK

Auswahl der neuen Funktion ber den Function-Operator

Verbinden Sie die Felder STATUS und BESTELL_TOTAL aus dem Splitterausgang fr
Privatkunden mit den jeweiligen Eingabefeldern der Funktion.
Erzeugen Sie in der Zieltabelle WH_TRANS_PRIVAT ein neues Feld BONUS (number).

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

131/299

Verbinden Sie das Feld VALUE der Funktion mit dem neuen Feld BONUS in der Zieltabelle
Wiederholen Sie den Vorgang fr die Tabelle WH_TRANS_FIRMA.

Verwendung des Function-Operators im Mapping

Synchronisieren Sie die Tabellen WH_TRANS_PRIVAT und WH_TRANS_FIRMA (-> rechte


Maustaste auf die Tabellenkpfe -> Synchronize -> Option Outbound)
Generieren Sie die genderten Tabellen (Replace Option whlen) und das Mapping.
Die Funktion mssen Sie nicht mehr generieren, wenn Sie diese vorher bereits getestet haben.
Testen Sie das neue Mapping und betrachten Sie sich die Tabellen im Data Viewer.

Sie sehen, dass die Funktion BONUS_BERECHNUNG zweimal in dem Mapping vorkommt. OWB
nummeriert alle wiederholt vorkommenden Operatoren durch.

Der aktuelle Stand des Szenarios sieht so aus:

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

132/299

Das Mapping MP_TRANSAKTIONEN_10_FUNCTION

Verwenden von Aufrufparametern


Mappings knnen variabel gehalten werden indem Aufrufparameter von auen auf Einstellungen
innerhalb des Mappings einwirken. In unserem Beispiel haben wir einen Filter eingebaut
(Kundennummer > 1000). Diese Einschrnkung ist ein fr alle Mal festgeschrieben. Mit einem
Aufrufparameter knnen wir diese Filterbedingung variabel halten.
Aufrufparameter knnen Sie wie ein Attribut einer Tabelle innerhalb des Mappings weiterverwenden.
Innerhalb des spter generierten Mappings, stellt der Parameter einen einfachen Aufrufwert dar, den
Sie von der aufrufenden Instanz her bestimmen knnen.
Hilfreich sind Vorbelegungen fr das Attribut, falls mal vergessen wird, spter einen Parameter
mitzugeben.
Anforderung: Definieren Sie einen Aufrufparameter um den Filter zur Kundenselektion variabel zu
halten.

Kopieren Sie das Mapping WH_TRANSAKTIONEN_10_FUNCTION in das neue Mapping


MP_TRANSAKTIONEN_11_Para.
Ziehen Sie aus dem Pre/Post Processing-Bereich der Palette den Mapping Input-Operator
in den linken Bereich des Mappings
ffnen Sie den Detail-Editor fr diesen neuen Operator (-> rechte Maustaste auf den Kopf des
Operators -> Option Details).
Erfassen Sie das Feld AB_KD_NUMMER (Numeric) unter dem Reiter OUTPUT ATTRIBUTES.
Nennen Sie den Operator KD_NR_FILTER.
Klappen Sie den Filter-Operator KUNDE_GROESSER_1000 auf, und fhren Sie das neue Feld
des Parameter-Operators zustzlich in den Filter-Operator, so dass dort ein neues Feld erscheint.

Einsatz von Aufrufparameter in einem Mapping

Gehen Sie ber den Property Inspector in die Filter Condition des Filters.
Lschen Sie in dem rechten Bereich den Wert 1000 und ersetzen Sie ihn durch den Feldnamen
AB_KD_NUMMER aus der Liste die Sie links sehen.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

133/299

Ersetzen des festen Wertes der Filterbedingung durch einen Aufrufparameter

Benennen Sie den Filter-Operator noch um, z. B. auf FILTER_KUNDE, denn der alte Name passt
jetzt nicht mehr.
Generieren Sie das neue Mapping mit dem Control Center.
Und testen Sie das Mapping

Parametereingabe und Aufruf des Mappings


Wenn Sie das Mapping ber das Control Center starten, werden Sie feststellen mssen, dass Sie
keinerlei Daten mehr in Ihren Tabellen haben. Das ist verstndlich, denn Sie hatten noch keine
Chance einen sinnvollen Parameter fr die neue Filterbedingung anzugeben. Hierzu mssen Sie eine
Voreinstellung des OWB verndern, damit OWB Ihnen das Fenster zur Parametereingabe einblendet.

ffnen Sie die Preferences unter dem Pull-Down-Men-Punkt Tools

Setzen Sie ein Hkchen fr Prompt for excecution parameters unter OWB / Deployment

Preferences-Einstellung zum Anhalten des Start-Vorgangs eines Mappings um Parameterwerte


eingeben zu knnen

Starten Sie das Mapping jetzt noch einmal und Sie bekommen ein Auswahlfenster mit allen
Aufrufparametern angezeigt.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

134/299

Parametereingabe-Dialog Eingabemglichkeit von Parameterwerten


im Verlauf des Mapping-Aufrufs

Nachdem Sie den Wert fr den Parameter gesetzt haben, knnen Sie die weitere Verarbeitung mit
OK starten.
Tipp:
Wenn Sie das Parametereingabe-Fenster nicht sehen, obwohl Sie sicher sind, dass Sie die
passende Prferenz gesetzt haben, speichern Sie alle Daten und starten Sie OWB neu.
Danach sollte es funktionieren.

Das neue Mapping sieht jetzt so aus:

MP_TRANSAKTIONEN_11_PARA

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

135/299

Set Operator (UNION, UNION ALL, MINUS, INTERSECT)


Mit dem Mengenoperator Set verarbeiten Sie wie in der Mengenlehre die Ergebnismengen von 2 und
mehr SELECT-Befehlen.
Es gilt:
UNION: Die Ergebnisse von 2 oder mehreren SELECTs werden zusammengefasst, doppelte
Stze eliminiert.
UNION ALL: Wie vorher, jedoch bleiben doppelte Stze erhalten
MINUS: Die Ergebnismenge eines zweiten SELECTS wird von der Ergebnismenge des ersten
SELECTS abgezogen.
INTERSECT: Es werden nur diejenigen Stze geliefert, die in beiden (oder mehr) SELECTErgebnismengen vorhanden sind.
Beachten Sie bei dem Umgang mit dem SET-Operator, dass alle SELECTs die gleiche Feldstruktur
haben. Die Zieltabelle kann davon abweichen aber nur, wenn es die implizite Typkonvertierung der
Datenbank erlaubt. Wandlungen von NUMBER nach VARCHCHAR2() sind z. B. erlaubt umgekehrt
fhrt es jedoch zu einem Fehler.
Anforderung:
Es sollen alle Kunden gefunden werden, die noch nicht bestellt haben. Vorgehensweise:
1. Zusammenfassen von allen Firmen- und Privatkunden (UNION)
2. Abziehen dieser gefundenen Kundenmenge von der Ursprungstabelle Kunde aus dem Schema
OLTP (MINUS).

Kopieren Sie das Mapping MP_TRANSAKTIONEN_11_Para


MP_TRANSAKTIONEN_12_SET.

Ziehen Sie 2 Set-Operatoren

Fr den ersten Set-Operator versorgen Sie die INGRP-Bereiche durch die Tabellen
WH_TRANS_FIRMA und WH_TRANS_PRIVAT. Setzen Sie seine Properties auf UNION (Property
Inspector)
Den zweiten SET-Operator versorgen Sie bei INGRP1 mit der Tabelle KUNDE und den INGRP2Bereich durch den OUTGRP-Bereich des ersten Set-Operators. Nehmen Sie allerdings jeweils nur
das Kundennummern (Code)-Feld mit. Stellen Sie die Eigenschaften des zweiten Operators auf
MINUS.
Erzeugen Sie jetzt eine neue Tabelle KUNDE_OHNE_BESTELLUNG und berfhren Sie das eine
Ausgangsfeld des Operators in die neue Zieltabelle.

Stand/letzte nderung 9/16/16

in

das

neue

Mapping

in den Editor.

329869597

Oracle Warehouse Builder Step-By-Step

136/299

Set Operator und Einstellmglichkeit ber Property Inspector

Erzeugen Sie die neue Tabelle in dem Modul WAREHOUSE (-> rechte Maustaste auf den Kopf
der Tabelle -> Create And Bind) und generieren Sie die neue Tabelle und das neue Mapping ber
das Control Center.
Testen Sie das Mapping und betrachten Sie sich die Ergebnisse mit dem Data Viewer.

Das neue Mapping sieht jetzt so aus:

MP_Transaktionen_12_Set

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

137/299

Schreiben von Textdateien


Ebenso wie das Schreiben in eine Datenbank kann auch in eine Textdatei geschrieben werden. Dies
ist oft notwendig, wenn Ergebnisse zu protokollieren sind oder Daten ber einen Workflow verschickt
werden mssen. Im Ergebnis sind die folgenden Formate direkt aus einem Mapping heraus mglich:
Textfile im CSV-Format
Textfiles im Fixed Length Format
XML Dateien
Erzeugen wir zunchst eine einfache CSV-Datei.
Anforderung: Protokollieren Sie alle

bestellten

Artikel,

indem

Sie

die

Tabelle

BESTELLTE_ARTIKEL in eine Textdatei schreiben

Erstellen Sie deswegen ein neues Mapping mit dem Namen MP_TRANSAKTIONEN_13_TEXT
Ziehen Sie die Tabelle BESTELLTE_ARTIKEL aus dem Modul WAREHOUSE in die MappingFlche.
Ziehen Sie jetzt aus der Component Palette (Bereich Source/Target) den Flat File Operator
in die Editorflche rechts neben die Tabelle BESTELLTE_ARTIKEL
Ein Auswahlfenster mit den in dem Projekt befindlichen Textdateien erscheint. Whlen Sie den
Punkt Create unbound operator with no attributes und vergeben Sie einen Namen fr die
knftige Textdatei, z. B. Protokoll_Verkaufte_Artikel
OK

Hinzufgen eines Flat File Operators

Klappen Sie die Tabelle BESTELLTE_ARTIKEL auf und berfhren Sie alle Attribute der Tabelle in
den Textdatei-Operator.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

138/299

Beispiel-Mapping zum Beschreiben einer Textdatei


Der Operator der Text-Datei muss jetzt noch in ein Modul fr Flat-Files berfhrt werden. Ein Modul fr
Text-Dateien ist vor allem durch einen Bezug zu dem Betriebssystem geprgt, d. h. bei der Definition
des Moduls muss man einen Speicherort von Dateien in dem Dateiverzeichnis des Betriebssystems
angeben.

Definieren Sie zunchst ein Modul vom Typ Text mit dem Namen MO_Protokolle.

Erstellen eines Moduls vom Typ Text

Sie bentigen hierzu eine passende Location

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

139/299

Festlegen einer Text-File-Location

Jetzt knnen Sie den Flat File Operator mit diesem Modul verknpfen (-> rechte Maustaste auf
den Kopf des TextdateiOperators -> Create and Bind)

Zuweisen des File-Operators zum File Modul

Jetzt mssen Sie vor dem Generieren nur noch auerhalb des Mappings unter den ConfigurationEinstellungen des Mappings den tatschlichen Namen der noch nicht existierenden Zieldatei
angeben.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

140/299

Festlegen des Dateinamens ber Configuration des entsprechenden Mappings

Generieren Sie das neue Mapping. Testen Sie es und berprfen Sie die Existenz der neuen
Datei in dem Dateiverzeichnis, das unter der Location des File-Moduls angegeben ist.

Der Validation-Vorgang wird eine Warnung aufzeigen. Die Ursache liegt in den nicht vorhandenen
Spalten der potentiellen Zieltabelle. Weil es sich um eine Textdatei handel kann es keine Spalten
geben.
Tipp:
Das Verfahren eignet sich generell gut, um Textfiles aus Datenbanktabellen zu erzeugen.
Oftmals sollen auch die Spaltenberschriften als Kopfzeile in die Textdatei geschrieben
werden. Hierzu muss man bei den Property Inspector zur Textdatei in dem Mapping-Editor ein
Hkchen fr die Option File contains a header row setzen.

Properties der Textdatei


Tipp:
Aus den so entstandenen Text-File-Definitionen lassen sehr leicht wieder External Tables
erstellen um diese Textinformationen wieder in eine Oracle-Datenbank zu schreiben. Es
mssen nicht mehr die Metadaten der Textdatei durch das Sampling erzeugt werden, weil sie
durch das Create And Bind im Mapping bereits da ist.
XML-Dateien erzeugen
Mit einem einzigen Klick knnen Sie die eben erzeugte Datei auch als XML-Datei herstellen.
Setzen Sie das Hkchen in dem Configuration Fenster unter Flat File Operators (-> Output as
XML file).
Testen Sie es aus

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

141/299

Ausschnitt aus generierter XML-File

Unterschiedliche Ausgabeziele
Das Schreiben in eine Tabelle und in eine Text-Datei kann aus demselben Mapping heraus erfolgen.

Vervollstndigen Sie jetzt das bisher erstellte Mapping zu den Bestelldaten um eine Funktion, bei
der die Tabellen UMSATZ_PRO_KUNDE und
BESTELLTE_ARTIKEL in eine Textdatei
geschrieben wird.
Kopieren Sie sich das Mapping MP_TRANSAKTIONEN_12_SET und nennen Sie das neue
Mapping MP_TRANSAKTIONEN_14_Proto
Fgen Sie jeweils einen Text-Operator ein und geben Sie ihm den Namen
LIST_UMSATZ_PRO_KUNDE bzw. LIST_BESTELLTE_ARTIKEL.
berfhren Sie die Felder der Tabellen UMSATZ _PRO_KUNDE sowie BESTELLTE_ARTIKEL in
die Text-Operatoren.
berfhren Sie die neuen Definitionen in das zuvor angelegte Text-Modul.

Verwenden des Text-File-Operators

Ergnzen Sie die Dateinamen unter Configuration des Mappings.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

142/299

Festlegen der Dateinamen

Deployen Sie das Mapping und testen Sie es.

Das gesamte Mapping sieht jetzt wie folgt aus:

Mapping MP_TRANSAKTIONEN_14_PROTO

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

143/299

Sortieren von Stzen - Der Sort Operator


Sortieren von Stzen in einer Tabelle ergibt aus Datenbanksicht wenig Sinn. Aber wenn die Stze die
Datenbank verlassen und z. B. in eine Textdatei geschrieben werden sollen, dann kann sortieren
hilfreich sein.
Der Sorter bernimmt diese Arbeit.
Anforderung: Die in dem vorher erstellen Mapping erzeugten Textdateien sollten sortiert
ausgegeben werden.

Kopieren Sie sich das Mapping MP_TRANSAKTIONEN_14_Proto und nennen Sie das neue
Mapping MP_TRANSAKTIONEN_15_SORT
Fgen Sie 2 Sorter Operatoren in das Mapping.
Lschen Sie die Verbindungslinien zwischen den Tabellen UMSATZ_PRO_KUNDE und
BESTELLTE_ARTIKEL zu den jeweiligen Text-Operatoren (Markieren und lschen).
Verbinden Sie die OUTGRP1 - Felder der Tabellen mit den INOUTGRP1-Bereichen der Sorter.
Verbinden Sie jetzt die INOUTGRP1-Bereichen der Sorter mir den Text-Datei-Operatoren.
In dem Auto-Mapper-Dialog knnen Sie die Funktion Match by name of source and target
attributes benutzen.
Legen Sie jetzt ber den Property Inspector die ORDER BY - Folge fest.

Festlegen der Sortierkriterien

Deployen Sie das Mapping und testen Sie es

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

144/299

Mapping MP_TRANSAKTIONEN_15_SORT

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

145/299

Selbsterstellte Schreibroutinen
Grundstzlich kann man sich auch eine Textschreibroutine von Hand programmiert erstellen.
Der Aufruf einer solchen Prozedur kann im Verlauf eines Mappings oder aus dem Workflow heraus
erfolgen. Das hier abgedruckte Beispiel schreibt bei jedem Aufruf eine Zeile weg. D. h. die Zeile sollte
bereits "montiert" sein bevor sie als p_line1 der Prozedur bergeben wird. Dies ist im Mapping zu
regeln. Eine solche Routine ist als Protokolldatei-Routine ntzlich.
CREATE OR REPLACE PROCEDURE SL1 (p_Dir in Varchar2, p_file in varchar2, p_line1 in varchar2)
AS
v_FileHandle UTL_FILE.FILE_TYPE;
BEGIN
-- Open the output file in append mode.
-- v_FileHandle := UTL_FILE.FOPEN(p_FileDir, p_FileName, 'a');
v_FileHandle := UTL_FILE.FOPEN(p_Dir ,p_file, 'w');
UTL_FILE.PUT_LINE(v_FileHandle, p_line1);
-- Close the file.
UTL_FILE.FCLOSE(v_FileHandle);
EXCEPTION
-- Handle the UTL_FILE exceptions meaningfully, and make sure
-- that the file is properly closed.
WHEN UTL_FILE.INVALID_OPERATION THEN
UTL_FILE.FCLOSE(v_FileHandle);
RAISE_APPLICATION_ERROR(-20061,
'SD: Invalid Operation');
WHEN UTL_FILE.INVALID_FILEHANDLE THEN
UTL_FILE.FCLOSE(v_FileHandle);
RAISE_APPLICATION_ERROR(-20062,
'SD: Invalid File Handle');
WHEN UTL_FILE.WRITE_ERROR THEN
UTL_FILE.FCLOSE(v_FileHandle);
RAISE_APPLICATION_ERROR(-20063,
'SD: Write Error');
WHEN UTL_FILE.INVALID_PATH THEN
UTL_FILE.FCLOSE(v_FileHandle);
RAISE_APPLICATION_ERROR(-20063,
'SD:Falscher Pfad');
WHEN OTHERS THEN
UTL_FILE.FCLOSE(v_FileHandle);
RAISE;
END ;

Pivoting mit SQL Mitteln - Der Pivot-Operator


Gerade bei dem Verarbeiten von Textdateien kann es vorkommen, dass in den Columns eines Satzes
Informationen enthalten sind, die auf mehrere Stze verteilt leichter verarbeitet werden knnen.
Beispiel: Eine Excel-Tabelle enthlt eine Jahresbersicht mit Artikelumstzen. Die Tabelle besteht aus
Spalten mit Monatswerten. Whrend des Ladens der Excel-Tabelle in das Warehouse mssen aus
einem Satz mit 12 Monatswerten 12 Stzen mit jeweils einem Monatswert entstehen.
Diese Aufgabenstellung lsen wir mit dem Pivot-Operator
Um das Beispiel einfach zu halten wurde aus den Beispieldaten bereits eine Tabelle mit dem Namen
ARTIKEL_UMSATZ gemacht.
Sie enthlt die folgenden Stze:

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

146/299

Die Ausgangsdaten fr das Pivot-Mapping

Erstellen Sie in dem Warehouse-Modul ein neues Mapping mit dem Namen MP_Pivot.
Ziehen Sie die Tabelle ARTIKEL_UMSATZ aus dem Modul Bestellsystem in den Mapping-Editor.
Wenn die Tabelle noch nicht vorhanden ist, importieren Sie diese aus dem Modul OLTP.

Erstelle Sie eine neue Tabelle Artikelumsatz-Monat und erfassen Sie die Attribute Artikel_nr,
Umsatz und Monat wie folgt:

Quell- und Zieltabelle des Pivot-Mappings

Ziehen Sie jetzt den Pivot-Operator

Als erstes legen Sie den Namen fest. Nennen Sie ihn UMSATZ_PRO_MONAT.
Den nchsten Schritt der Definition In-/Out-Groups berspringen Sie, weil das System bereits die
Vorgaben mit INGRP1 und OUTGRP1 gettigt hat. (Sie knnten auch mehrere Eingabegruppen
verwenden. Unser Beispiel enthlt jedoch nur eines).
Im folgenden Schritt bernehmen Sie die Eingabeattribute der Quelle und schieben diese in das
rechte Fenster. In unserem Fall sind das alle Attribute der Quelltabelle.

Stand/letzte nderung 9/16/16

aus der Toolbox in die Editorflche. Ein Wizard startet.

329869597

Oracle Warehouse Builder Step-By-Step

147/299

Eingabefelder fr den Pivot-Operator

Jetzt knnen Sie die Attribut-Eigenschaften der Felder des Pivot-Operators festlegen, z. B. die
Schlsseleigenschaft eines Feldes.

Festlegen des Schlsselfelds der Eingabetabelle

Jetzt mssen Sie die gewnschten Ausgabeattribute des Pivot-Operators festlegen. In unserem
Beispiel kennt der Operator bis jetzt nur das Schlsselfeld Artikel_nr. Erfassen Sie jetzt ein Feld
Umsatz um die Umsatzwerte (numerisch) darzustellen und ein Feld Monat fr die Monatsnamen.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

148/299

Definieren des Row-Locator-Felds


An dieser Stelle ist der Begriff Row Locator zu erklren. In der Quelltabelle sind die Monatswerte in
einer Reihe mit zwlf Spalten abgelegt. Jedem Feld dieser Reihe kommt virtuell eine bestimmte Rolle
zu, das erste Feld reprsentiert eine Januarsumme das 2. eine Februarsumme usw. In der Zieltabelle
gibt es diese eindeutige Rolle nicht mehr. Hier existiert keine Spaltenposition mehr, anhand der wir
erkennen knnen, ob es sich um einen Januar- oder Februarwert handelt. Um dennoch eine
Orientierung zu erhalten um welchen Monat es sich handelt, sollten Sie ein optionales Hilfsfeld fr den
Monatsnamen einfhren. Dieses Feld ist optional aber sinnvoll. Dieses Attribut mit dem Monatsnamen
heit Row Locator.

Markieren Sie jetzt das Feld Monat als Row Locator Feld.
In dem letzten Schritt legen Sie das Schema der Satzfolgen fest. Das Prinzip des Pivoting besteht
darin, fr die Anzahl der Spalten einer Quelltabelle eine entsprechende Anzahl Zeilen in der
Zieltabelle zu erstellen. Zwlf Spalten produzieren somit zwlf Zeilen und jede Zeile der Quelle
erzeugt eine Gruppe von zwlf Zeilen der Zieltabelle. Jetzt bestimmen Sie die Inhalte der Felder
dieser zwlf Zeilen.
Fgen Sie zunchst 12 Zeilen ein (Add) Row1 bis Row12.
Das Schlsselfeld Artikel_nr kann nicht mehr verndert werden, weil es als Schlsselfeld
gebraucht wird. Alle anderen Felder sind mit Null vorbelegt. Legen Sie fr das Umsatzfeld in der
ersten Zeile das Quellfeld INGRP1.JANUAR fest. Fr die zweite Zeile whlen Sie
INGRP1.FEBRUAR usw. In der Monatsspalte definieren Sie dann die Monatsnamen fr die
jeweiligen Zeilen
Und jetzt Finish

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

149/299

Editor fr den Pivoting-Operator

Verbinden Sie die OUTGRP-Felder des Pivot-Operators mit der Zieltabelle

Pivoting Mapping (Demo: MP_Pivot)


Alle Einstellungen knnen nachtrglich ber Edit (rechte Maustaste auf den Kopf des Pivot-Operators
wieder gendert werden.

Schieben Sie die neue Tabelle Artikelumsatz in das Warehouse-Modul.


Generieren Sie die neue Zieltabelle und das neue Mapping und testen Sie es.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

150/299

Das Ergebnis:

Inhalte der Ergebnisstabelle Artikelumsatz nach der Pivoting-Operation.

Unpivoting mit SQL Mitteln - Der Unpivot-Operator


[Der Unpivot-Operator ist analog zu dem Pivot-Operator zu bedienen.]

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

151/299

Table Functions einfach und schnell mit OWB erstellen


Table Functions werden immer dann zu Rate gezogen, wenn zur Lsung einer komplexen Aufgabe die
SQL-Mittel erschpft sind aber PL/SQL-Routinen zu langsam erscheinen. Table Functions erlauben
komplexe Programmierung wie in PL/SQL, sie knnen aber mengenbasiert anstelle einer Tabelle in
einem mengenbasierten Select - Statement genutzt werden und sind damit schnell.
Ein zweiter Vorteil ist die Pipelined-Verarbeitung. Sie liefern einem aufrufenden SQL-Statement bereits
die ersten Stze bevor die komplette Verarbeitung abgeschlossen ist.
Table Functions sind, wie der Name schon sagt, Funktionen. In einem Select-Statement werden sie
jedoch an der Stelle einer Tabelle eingesetzt. Sie liefern auch nicht nur einen Wert zurck, wie eine
Funktion, sondern eine Gruppe von Stzen (Set).
Nested Tables und Object Types
Daher sind zur Definition einer Table Function Vorarbeiten ntig. Man bentigt einen Rckgabe-Typ
vom Typ TABLE. Dieser muss definiert werden. In OWB sind das die Nested Tables unter dem Punkt
USER DEFINED TYPES des jeweiligen Modules. Eine Tabelle definiert sich ber eine RecordStruktur, also einer Ansammlung von Feldern. Eine solche Record-Struktur definiert man sich als
eigenen Object Type. Auch diese Objekte findet man in OWB unter dem Punkt USER DEFINED
TYPES des jeweiligen Modules.
Damit sind alle Bausteine benannt und wir knnen eine Table Function definieren.
Anforderung: Bentigt wird eine Funktion, die eine definierbare Anzahl Tagen in einem vergangen
Zeitraum nummeriert zurckliefert, so dass damit eine Tabelle beschrieben werden kann. Der
Zeitraum soll ber zwei Zahlenwerte bestimmbar sein.
Es wird ein Datenstrom mit einer Record-Struktur bentigt, die aus 2 Feldern besteht:
Aufsteigende Nummer
Eine Datumsangabe

Erstellen Sie einen Object Type mit dem Namen OT_TAGESLISTE (rechte Maustaste auf Object
Types unter User Defined Types in dem Project Navigator)
Vergeben Sie die Columns TAG_NR (number) und TAG_DATUM (varchar2(10))

Jetzt bentigen Sie einen Table Type, der diese Record-Struktur nutzt.
Erstellen Sie einen Table Type (Nested Table) mit dem Namen NT_TAGELISTE (rechte Maustaste
auf Nested Tables unter User Defined Types in dem Project Navigator).
Nutzen Sie bei der Definition den so eben erstellten Object Type OT_TAGESLISTE.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

152/299

Ausschnitt Projects Navigator: User Defined Type


Jetzt beginnt die eigentliche Definition der Table Function.
Erstellen Sie einen Table Function mit dem Namen TF_TAGE_VON_BIS (rechte Maustaste auf
Table Function unter Transformations in dem Project Navigator).
Nutzen Sie als Return Type den eben definierten Table Typ NT_TAGELISTE.

Definieren Table Function

Definieren Sie 2 Aufrufparameter VON (number) und bis (number)

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

153/299

Aufrufparameter der Table Function

Jetzt knnen Sie die Funktion aus dem angezeigten Template heraus programmieren.

Code-Editor-Fenster zur Erstellung der Table Function

Um die Aufgabenstellung einfach zu halten, ist hier ein Beispiel-Code dargestellt:


--initialize variables here
-- main body
out_nr number;
out_datum varchar2(10);
n
number;
BEGIN
n := von - bis;
LOOP
exit when n = 0;
out_datum := to_char(sysdate-(n+bis),'DDMMYYYY');
out_datum := sysdate - (n + bis);
out_nr := n;
n := n-1;
PIPE ROW (ot_tagesliste(out_nr,out_datum));
END LOOP
RETURN;
EXCEPTION
WHEN OTHERS THEN
null; -- enter any exception code here
RETURN ;
END;

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

154/299

Deployen Sie Object Type, Table Type und Table Function.

Der nchste Schritt zeigt die Verwendung der Table Function in einem Mapping.

Erstellen Sie ein Mapping mit dem Namen MP_TF.


Ziehen Sie die eben erstellte Table Function in die Editor-Flche (

Versorgen Sie die INGRP-Felder der Table Function ber zwei Konstanten (Constant Operator
). Felder definieren mit rechter Maus und Open Details)

Legen Sie Default - Werte fr die Konstanten-Felder an (ber Property Inspector, bei Feld VON
den Wert 10, bei Feld BIS den Wert 5.
Definieren Sie jetzt eine neue Tabelle mit dem Namen TAGE_ERGEBNIS.
berfhren Sie alle Outgrp1 - Felder der Table Function in die neue Tabelle.
Erzeugen Sie die neue Tabelle in dem Modul WAREHOUSE (rechte Maustaste und dann Create
and Bind)
Deployen Sie die neue Tabelle TAGE_ERGEBNIS und das Mapping MP_TF und testen Sie es.

Mapping MP_TF

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

155/299

8. Daten in Das Data Warehouse importieren


Die Quellen Oracle - basierter Data Warehouse Systeme sind am hufigsten eine andere Oracle
Datenbank oder Textdateien. Auch wenn das schon seit vielen Jahren so ist, so stellt diese Art der
Quellen auch heute noch mehr als 60 bis 70 % dar.
In diesem Kapitel wird auf folgende Import - Varianten eingegangen:
Textdateien
ODBC
JDBC
XML
Cobol Copy Books

Integrieren von Textdateien


Bislang haben wir nur Tabellen aus einer Oracle Datenbank verarbeitet. Hier sollen weitere mgliche
Quellen vorgestellt werden. Eine der wichtigsten Quellen sind Textdateien. Unter Textdateien
verstehen wir ASCII (oder EBCEDIC)-Dateien, die auf der Betriebssystemebene vorliegen. In der
Regel liegen sie in 2 Formaten vor:
1. Dateien bei denen ein Separator (z. B. ;) die Felder der Stze unterteilt (CSV- oder Comma
Separated Values-Strukturen).
2. Dateien mit Felder fester Lnge (Fixed Length)
Zudem knnen Dateien mehrere Satzarten enthalten. Ein Satzkennzeichen identifiziert die einzelnen
Satzarten.
Seit dem Datenbank-Release Oracle 9i steht die Technik der External Tables zur Verfgung um
Textdateien in die Warehouse-Datenbank einzulesen. Diese Technik ersetzt in den meisten Fllen die
davor genutzte Technik des SQL-Loaders.
In beiden Fllen ist zunchst die Struktur der Textdatei einzulesen also der Metadaten Import
durchzufhren. Der WAREHOUSE BUILDER gruppiert die Textdateien in einem separaten Modul.
Textdateien sind meist bestimmten Themenbereichen oder Abteilungen zugeordnet. Auch hier helfen
die Module, um die unterschiedlichen Textobjekte nach fachlichen Kriterien zusammen zu fassen.
Aufgabenstellung: Eine Liste mit Ortsnamen liegt als CSV-Datei vor. Lesen Sie diese ein. Sie

bildet spter die Grundlage fr eine Orte-Dimension.

Definieren Sie in dem Projects Navigator unter dem Punkt Files ein neues Modul mit dem Namen
FF_Orte
ber die rechte Maustaste whlen Sie dann den Punkt NEW Flat File Module.
Ein Wizard startet in dem Sie den Namen fr das neue Modul anlegen knnen. Nennen Sie ihn
FF_ORTE.
Die Angabe ber das Verzeichnis in dem die Datei liegt, verbirgt sich hinter einer Location. Sie
mssen also jetzt eine Location definieren. Whlen Sie die Option Edit und Sie knnen genaue
Angaben zur Location machen. ndern Sie am besten auch den Namen der Location z. B. auf
LC_FF_ORTE, weil der vorgeschlagene Name sehr lang und wenig sprechend ist. Whlen Sie
das Verzeichnis, in dem sich die Beispieldatei Orte.LST befindet.
Whlen Sie ber den Wizard das Verzeichnis aus, in dem die Datei zu finden ist. Die Dateien
selbst werden nicht angezeigt. Die Dateinamen werden erst bei dem spteren Import-Vorgang
festgelegt.
(Bei UNIX-Systemen ist hier ein entsprechender UNIX-Pfad anzugeben. Er muss allerdings hierzu
von der Windowsumgebung her sichtbar sein).

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

156/299

Nachdem Sie Next und Finish gedrckt haben erscheint das neue Modul. Die neue Location
(LC_FF_ORTE) finden Sie jetzt auch unter dem Connection Explorer wieder und zwar unter
Locations / Files.
Starten Sie jetzt den Import-Wizard (-> rechte Maustaste auf den Namen des neuen Moduls ->
Import -> Flat File.)
Whlen Sie Add Sample File und suchen Sie in dem Dialog nach der Datei ORTE.LST
Achtung Demodaten: Orte.csv / Orte.lst)

Importieren Textdatei: Auswahl der Quelldatei

Ein Test ber die Option View Sample File zeigt Ihnen, dass Sie die richtige Datei gewhlt haben.
Starten Sie jetzt die Option Import und dann Next.

Erste Sicht auf die Textdatei zur Orientierung

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

157/299

Sie erkennen die Semikolon-Zeichen als Feld-Trenner. Diese mssen aufgelst werden. Auerdem
bentigen wir noch Spaltenberschriften.

Whlen Sie Next


Legen Sie das Semikolon als Field Delimiter fest und kontrollieren Sie, dass alle Felder
entsprechend separiert dargestellt sind.

Festlegen von Separator-Zeichen und Textbegrenzer

Unsere Datei enthielt keine Kopfzeile, das bedeutet, dass wir jetzt die Dummy-Feldbezeichner C1,
C2 durch sprechende Namen ersetzen mssen. Whlen Sie in dieser Reihenfolge:

C1: Ortenummer
C2: Ortename
C3: Kreisnummer
C4: Kreisname
C5: Bundeslandnummer
C6: Bundesland
C7: Regionennummer
C8: Regionenname

Next und Finish

Wir haben jetzt die Metadaten fr diese Datei erfasst. Es ist folgende Struktur:

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

158/299

Anzeigen der Eigenschaften einer bereits eingelesenen Textdatei


ber das Kontextmen (rechte Maustaste auf den Dateinamen) knnen sie im Projects Navigator
nachtrglich Eintragungen vornehmen, jedoch nicht den Dateinamen bzw. Pfad.
Wie werden EBCDIC-Dateien eingelesen?
EBCDIC-Dateien werden genauso gelesen, wie ASCII-Dateien. Hier stellt man jedoch einen anderen
Zeichensatz im Verlauf des Samplings ein. Die Tatsache, dass OWB die ersten 1000 Stze zum
Analysieren bereits anzeigt und bei EBCDIC auch gleich in ein ASCII-lesbares Format umwandelt, ist
sehr hilfreich um z. B. eine unbekannt Satzlnge fr Fixed-Format-Dateien herauszufinden. Werden
manche Zeichen nicht richtig dargestellt, so hat man die falsche Satzart erwischt.
Wie werden Dateien z. B. auf Unix-Servern eingelesen?
Warehouse Builder kann im Verlauf des Sampelns nur Dateien lesen, die in dem unmittelbaren Zugriff
ber das Dateiverzeichnis des Entwicklungsrechners liegen. Sind die einzulesenden Dateien auf
einem anderen Rechner, so mssen die Verzeichnisse (Laufwerke) dieses anderen Rechners dem
Entwicklungsrechner bekannt gemacht werden. Das gilt auch fr UNIX Betriebssysteme. Ist dies nicht
mglich, so muss fr den Zeitraum der Entwicklung die Datei (eine Beispieldatei oder die ersten 100
Stze der Datei) auf den Entwicklungsrechner kopiert werden.
Tipp:
Wenn Sie Textdateien mit vielen Spaltenberschriften besitzen und diese nicht einzeln
schreiben wollen, suchen Sie nach Tabellen mit analogen Spaltennamen. Erstellten Sie sich
ein Mapping in dem Sie als Ziel eine neue Textdatei whlen. Indem Sie die ganze Gruppe aus
der Tabelle in die Zieldatei ziehen, bernimmt diese die Spaltennamen. Erzeugen Sie die
Datei in einem Textmodul neu und Sie haben dort die gewnschte Tabellenbeschreibung.

Einlesen von Textdateien ber External Tables


Textdateien ldt man seit dem Oracle 9i Datenbank-Release am einfachsten mit den sog. External
Tables in die Datenbank.
External Tables behandeln Sie wie normale Tabellen. In der Projektarbeit hat sich die berlegenheit
der External Tables gegenber dem SQL*Loader deutlich gezeigt.
Die Vorteile:
1. Staging -Tabellen entfallen. Der gesamte Ladevorgang gestaltet sich homogener und
kompakter, weil kein separates Programm neben der Datenbank zustzlich zu starten ist.
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

159/299

2. Es knnen Joins auch auf externe Tabellen gebildet werden.


3. Zum Filtern, Aggregieren und Wandeln knnen Sie SQL-Mittel und PL/SQL-Prozeduren
nutzen.
4. Das Datenbanksystem regelt selbstndig die Parallelisierung im Verlauf der Verarbeitung der
Stze, die aus der Textdatei gelesen werden.
Erstellen einer External Table aus einer Textdatei-Definition
Bislang wurden die Metadaten der zu lesenden Textdatei erfasst. Die External Table - Definition nutzt
diese Metadaten

Definieren Sie unter dem Modul WAREHOUSE eine External Table mit dem Namen EX_ORTE
(-> rechte Maustaste und dann New External Table)
Im Verlauf des Wizard-Dialogs erscheint eine Liste aller Textdateien, die in dem Projekt definiert
sind.
Whlen Sie die Datei Orte_lst
Next
Whlen Sie die Location an der sich die Textdatei befindet (LC_FF_ORTE).
Beenden Sie den Dialog mit Finish.
Die Definition zur Textdatei Orte_lst liefert also die
Vorlage fr die External Table-Definition EX_ORTE.

Bereits jetzt ist die External Table nutzbar.


Deployen Sie die External Table und testen Sie das Objekt z. B. ber den Data Viewer

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

160/299

Test der generierten External Table mit dem Data Viewer

Wie entsteht die Directory-Definition in der Datenbank?


Wenn Sie External Tables kennen, dann wissen Sie, dass zu ihrem Funktionieren die Existenz eines
sog. Schema-bergreifenden Directory-Objektes in der Datenbank ntig ist. ber dieses Objekt wird
der Dateiname mit dem jeweiligen Dateiverzeichnis-Pfad verknpft. Damit ist man flexibler, wenn man
z. B. das Verzeichnis wechseln will, aber den Dateinamen behalten mchte.
Durch das Deployen der External Table wurde bereits die passende Directory - Definition mit generiert.
Die Information dazu stammt aus der Location zu dem Flat File Modul.
Die Definition lautet:
CREATE DIRECTORY LC_FF_ORTE
AS '{{LC_FF_ORTE.RootPath}}';
Die Definition der External Table selbst lautet:
CREATE TABLE "EX_ORTE"
(
"ORTENUMMER" INTEGER,
"ORTENAME" VARCHAR2(255),
"KREISNUMMER" INTEGER,
"KREISNAME" VARCHAR2(255),
"BUNDESLANDNUMMER" INTEGER,
"BUNDESLAND" VARCHAR2(255),
"REGIONENNUMMER" INTEGER,
"REGIONENNAME" VARCHAR2(255)
)
ORGANIZATION EXTERNAL (
TYPE ORACLE_LOADER
DEFAULT DIRECTORY LC_FF_ORTE
ACCESS PARAMETERS (
RECORDS DELIMITED BY NEWLINE
CHARACTERSET WE8MSWIN1252
STRING SIZES ARE IN BYTES
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

161/299

NOBADFILE
NODISCARDFILE
NOLOGFILE
FIELDS
TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '"' AND '"'
NOTRIM
(
"ORTENUMMER" CHAR,
"ORTENAME" CHAR,
"KREISNUMMER" CHAR,
"KREISNAME" CHAR,
"BUNDESLANDNUMMER" CHAR,
"BUNDESLAND" CHAR,
"REGIONENNUMMER" CHAR,
"REGIONENNAME" CHAR
)
)
LOCATION (
'orte.LST'
)
)
REJECT LIMIT UNLIMITED
NOPARALLEL
;
Sie knnen die External Table jetzt von verschieden Stellen aus nutzen, z. B. auch aus SQLPlus:

Test der External Table-Definition mit SQL Plus


Die External Table wird verwendet wie eine Tabelle, also kann man auch den Data Viewer verwenden,
obwohl die hier gezeigten Stze nicht in der Datenbank stehen.
External Tables in einem Mapping benutzen

External Tables benutzen Sie in den Mappings wie normale Tabellen.

Erzeugen Sie in dem Modul WAREHOUSE ein Mapping MP_EX_Orte


Ziehen Sie aus der Palette das Symbol fr die External Tables
in die Editorflche.
Whlen Sie in dem erscheinenden Dialog die External Table EX_ORTE unter dem Modul
WAREHOUSE aus.
Erzeugen Sie eine neue Tabelle in dem Mapping-Editor, indem Sie das Tabellensymbole
aus

der Palette in die Editorflche rechts neben die External Table ziehen und unter
Create unbound operator with no attributes den Namen Orte_Tab anlegen.
Ziehen Sie die Spalten der External Table in die neue Tabelle.
Erzeugen Sie die neue Tabelle auch in dem Modul WAREHOUSE (-> rechte Maustaste auf den
Kopf der neuen Tabelle -> Option Create and Bind).
Drcken Sie OK und kopieren Sie alle Columns der External Table in die neue Zieltabelle.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

162/299

Verwenden einer External Table im Mapping

Generieren Sie die neue Tabelle ORTE_TAB und das Mapping und testen Sie das Mapping und
die Ergebnisse in der Tabelle ber den Data Viewer.
Dies war ein sehr einfaches Mapping. Bedenken Sie, dass sie alle SQL-Lese-Operationen auf
External Tables durchfhren knnen, also auch Joiner, Splitter, Filter, Aggregationen, Pivot,
Unpivot, Table Functions.... Weiter unten folgen hierzu weitere Techniken.
Zur Demonstration kann ein Mapping MP_TRANSAKTIONEN_16_EXT_TAB erstellt werden.
Der Joiner zu Beginn des Mappings soll um eine zustzliche Orts-Einschrnkung erweitert werden,
damit nur diejenigen Bestell-Stze in das System gelangen, die von Kunden mit eine definierten OrteNummer gettigt wurden.

Kopieren Sie sich das Mapping MP_TRANSAKTIONEN_15_SORT und nennen Sie das neue
Mapping MP_TRANSAKTIONEN_16_EXT_TAB
Ziehen Sie mit Drag and Drop dir External Table Definition, die Sie zuvor anlegten in die EditorFlche.
Erweitern Sie den Joiner im linken Bereich des Mappings um eine INGRP mit dem Namen Orte
Ziehen Sie die Felder der External Table in die ORTE-Ingrp des Joiners.
Ergnzen Sie die Join- Bedingung ber den Property Inspector

Erweitern der Join-Bedingung ber die Einbeziehung einer External Table


Deployen Sie das Mapping und testen Sie es.
Das Mapping sieht jetzt so aus:

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

163/299

Mapping MP_TRANSAKTIONEN_16_EXT_TAB

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

164/299

Einlesen von Dateien mit dem SQL Loader


(Dies ist eine alte Variante oder nur anzuwenden, wenn nur eine Oracle 8i-Datenbank vorhanden ist.
Daher wird dieser Abschnitt sehr knapp gehalten und ist nur zur Vollstndigkeit aufgenommen.
Arbeiten Sie den Abschnitt nur dann durch, wenn fr Sie das Erzeugen von Control Files fr den
Loader wichtig ist).
Dateien knnen in einem Oracle Warehouse auch ber den klassischen SQL Loader angebunden
werden. Dieses separate Programm ist auerhalb der Datenbank zu starten. Der Warehouse Builder
generiert den Steuer-Code (CTL-Dateien) fr den SQL-Loader. Die Metadaten zu den Dateien sind
innerhalb des OWB-Repositories vorgehalten.
Dateien werden innerhalb der Mappings wie Tabellen behandelt.
Dateien knnen die Strukturen CSV (Comma Separated Value) oder Fixed Length (feste
Spaltenlnge) und mehrere Satzarten haben.
Erzeugen Sie in dem Modul WAREHOUSE ein Mapping MP_SQL_LOADER
Ziehen Sie das Flat File-Symbol
aus der Palette in den Editor.

Whlen Sie die Flat File Orte_lst und besttigen Sie mit OK bzw. Finish.
Ziehen Sie das TABLE-Symbol
aus der Palette in den Editor und erstellen Sie eine neue

Das

Tabelle Orte_Neu.
Verbinden Sie jetzt die Flat File-Attribute von der Quelle in die Zieltabelle.
Generieren Sie alle Objekte.
Anstelle der Generierung in die Datenbank wird ein Control-File erzeugt. Der Speicherort fr diese
Control File ist unter Configuration des Mapping anzugeben.
Ergebnis

ist

ein

Control-File-Script

fr

den

SQL-Loader:

Generiertes Loader Script

Zum korrekten Lauf muss die Location des Moduls, aus dem die Textdatei stammt, registriert sein
(rechte Maustaste auf den Location-Namen und dann Option Register).
Sie knnen auch im Verlauf des Deploy-Prozesses das CTL-File ber die Deploy To File Option in
ein Zielverzeichnis Ihrer Wahl schreiben und unabhngig von dem Warehouse Builder mit eigenen
Mitteln weiterarbeiten, z. B. mit einer Batch-Datei fr den Loader-Aufruf:

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

165/299

sqlldr userid=DW/DW,control=MP_ORTE.ctl,log=log.log

Einlesen Excel-Sourcen
Excel-Dateien kann man auch als CSV-Dateien ber External Table laden. Dazu muss man jedoch,
die Excel-Datei als CSV-Datei umformen, was eine manuelle Ttigkeit ist. Ab OWB 11.2 lassen sich
sogenannte Plattforms definieren. Eine Plattform lsst sich hnlich bedienen wie ein Modul fr eine
Oracle Datenbank. Man definiert ein Modul und startet den Import-Vorgang fr die Metadaten der
einzulesenden Objekte.
Die Excel-Plattform wird ber eine Reihe von OMBPLUS Kommandos erstellt. OMBPlus wird zwar
erst weiter unten erklrt, aber hier und in der Dokumentation sind die fertigen Script-Teile zu finden,
die man mit Cut/Paste einfach ausfhrt.
Die folgenden Script-Teile stammen aus der Dokumentation. Ziehen Sie diese ebenfalls zu Rate, um
die Skripte auszufhren.
http://download.oracle.com/docs/cd/E18283_01/owb.112/e10582/platform_extensions.htm#CHDHEGEX

Starten Sie OMBPlus ber das Windows Start-Men:

Es erscheint ein Betriebssystem-Prompt:

Als erstes mssen Sie sich anmelden:


z. B.
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

166/299

OMBCONNECT OWB112/OWB112@localhost:1521:orcl USE WORKSPACE 'OWB'


Dann erstellen Sie die Plattform mit
OMBCREATE PLATFORM 'MICROSOFT_EXCEL' SET PROPERTIES (BUSINESS_NAME) VALUES ('Microsoft Excel')

Alle weiteren Kommandos sind OMBALTER-Anweisungen und 1:1 wie unten dargestellt auszufhren.
OMBALTER PLATFORM 'MICROSOFT_EXCEL' SET PROPERTIES (DRIVER_CLASS,URI_TEMPLATE)
VALUES('sun.jdbc.odbc.JdbcOdbcDriver','jdbc:odbc:Driver={Microsoft Excel Driver
(*.xls)}\;DBQ=<filename>\;DriverID=22\;READONLY=true')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' SET PROPERTIES (LOCAL_OBJECT_MASK) VALUES ('%SCHEMA.%OBJECT')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' SET PROPERTIES (DATE_MASK) VALUES ('DATETIME')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' SET PROPERTIES (DDLNULL) VALUES ('null')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' SET PROPERTIES (NUMERIC_MASK) VALUES ('NUMBER')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' SET PROPERTIES (VARCHAR_MASK) VALUES ('VARCHAR(%L)')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' SET PROPERTIES (LOCAL_OBJECT_MASK) VALUES ('%OBJECT')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' SET PROPERTIES (DEFAULT_MAX_NAME_LEN) VALUES ('30')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' SET PROPERTIES (REMOTE_OBJECT_MASK) VALUES ('%OBJECT')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' ADD PLATFORM_TYPE 'LOGICAL'
OMBALTER PLATFORM 'MICROSOFT_EXCEL' MODIFY PLATFORM_TYPE 'LOGICAL' SET PROPERTIES(SYNTAX) VALUES
('LOGICAL')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' ADD FROM_PLATFORM_TYPEMAP 'LOGICAL_TOG' SET PROPERTIES
(FROM_DATATYPE, TO_DATATYPE) VALUES ('LOGICAL', 'CHAR')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' ADD TO_PLATFORM_TYPEMAP 'LOGICAL_FROMG' SET PROPERTIES
(FROM_DATATYPE, TO_DATATYPE) VALUES ('CHAR', 'LOGICAL')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' ADD PLATFORM_TYPE 'CURRENCY'
OMBALTER PLATFORM 'MICROSOFT_EXCEL' MODIFY PLATFORM_TYPE 'CURRENCY' SET PROPERTIES(P1,P1MIN,
P1MAX,P1DEFAULT,P1TYPE) VALUES ('precision','1', '64000', '1','range')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' MODIFY PLATFORM_TYPE 'CURRENCY' SET PROPERTIES(P2,P2MIN,
P2MAX,P2DEFAULT,P2TYPE) VALUES ('scale','1', '18', '1','range')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' MODIFY PLATFORM_TYPE 'CURRENCY' SET PROPERTIES(SYNTAX) VALUES
('CURRENCY(%precision,%scale)')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' ADD FROM_PLATFORM_TYPEMAP 'CURRENCY_TOG' SET PROPERTIES
(FROM_DATATYPE, TO_DATATYPE) VALUES ('CURRENCY', 'NUMERIC')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' ADD PLATFORM_TYPE 'NUMBER'
OMBALTER PLATFORM 'MICROSOFT_EXCEL' MODIFY PLATFORM_TYPE 'NUMBER' SET PROPERTIES(P1,P1MIN,
P1MAX,P1DEFAULT,P1TYPE) VALUES ('precision','1', '64000', '1','range')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' MODIFY PLATFORM_TYPE 'NUMBER' SET PROPERTIES(P2,P2MIN,
P2MAX,P2DEFAULT,P2TYPE) VALUES ('scale','1', '18', '1','range')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' MODIFY PLATFORM_TYPE 'NUMBER' SET PROPERTIES(SYNTAX) VALUES
('NUMBER(%precision,%scale)')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' ADD FROM_PLATFORM_TYPEMAP 'NUMBER_TOG' SET PROPERTIES
(FROM_DATATYPE, TO_DATATYPE) VALUES ('NUMBER', 'NUMERIC')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' ADD TO_PLATFORM_TYPEMAP 'NUMBER_FROMG' SET PROPERTIES
(FROM_DATATYPE, TO_DATATYPE) VALUES ('NUMERIC', 'NUMBER')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' ADD PLATFORM_TYPE 'DATETIME'
OMBALTER PLATFORM 'MICROSOFT_EXCEL' MODIFY PLATFORM_TYPE 'DATETIME' SET PROPERTIES(SYNTAX) VALUES
('DATETIME')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' ADD FROM_PLATFORM_TYPEMAP 'DATETIME_TOG' SET PROPERTIES
(FROM_DATATYPE, TO_DATATYPE) VALUES ('DATETIME', 'DATETIME')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' ADD TO_PLATFORM_TYPEMAP 'DATETIME_FROMG' SET PROPERTIES
(FROM_DATATYPE, TO_DATATYPE) VALUES ('DATETIME', 'DATETIME')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' ADD PLATFORM_TYPE 'VARCHAR'
OMBALTER
PLATFORM
'MICROSOFT_EXCEL'
MODIFY
PLATFORM_TYPE
'VARCHAR'
SET
PROPERTIES(P1,P1MAX,P1DEFAULT,P1TYPE) VALUES ('size','64000', '1','range')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' MODIFY PLATFORM_TYPE 'VARCHAR' SET PROPERTIES(SYNTAX) VALUES
('VARCHAR(%size)')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' ADD FROM_PLATFORM_TYPEMAP 'VARCHAR_TOG' SET PROPERTIES
(FROM_DATATYPE, TO_DATATYPE) VALUES ('VARCHAR', 'VARCHAR')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' ADD TO_PLATFORM_TYPEMAP 'VARCHAR_FROMG' SET PROPERTIES
(FROM_DATATYPE, TO_DATATYPE) VALUES ('VARCHAR', 'VARCHAR')

Danach finden Sie unter Databases im Project Navigator die weitere Gruppe oder Plattform Microsoft
Excel.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

167/299

Eine weitere Plattform Microsoft Excel ist eingerichtet


ber die rechte Maustaste kann ein neues Modul vom Typ Microsoft Excel erstellt werden.

Ein neues Modul wird angelegt

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

168/299

Das Modul wird ber eine Location an die Excel-Datei, bzw. an das Dateiverzeichnis gebunden

Unter User Name und Password steht jeweils DUMMY. Excel hat keine User ID und Password aber
es muss dennoch ein Wert in der Maske stehen.
Schema bleibt leer und Port ist 1521.
Eintragung unter URL.
jdbc:odbc:Driver={Microsoft Excel Driver (*.xls)};DBQ=D:/Szenario/Testdaten/Staedte.xls;DriverID=22;READONLY=true

Nach der Anlage des Moduls kann man, wie gewohnt mit der rechten Maustaste die entsprechenden
Tabellenbeschreibungen einlesen.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

169/299

Import Metadata

Import Metadaten

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

170/299

Einlesen von ODBC-Quellen


(Dies ist eine ltere Darstellung. Das Verfahren hat sich jedoch nicht gendert).
ODBC hat sich als Standard-Datenaustausch-Verfahren etabliert. ODBC hilft meist dann, wenn es
keinen direkten Zugriff zu einem System gibt. Gerade in Office-Umgebungen ist ODBC verbreitet. MS
Access oder Excel knnen Sie sehr leicht mit Hilfe von ODBC an das Warehouse anschlieen. Mit
dem Warehouse Builder greifen Sie auf ODBC-Quellen ebenso selbstverstndlich zu wie etwa auf
Oracle-Tabellen. Hier nutzen Sie die Mglichkeit der Oracle-Datenbank auf eine externe ODBC-Quelle
zugreifen zu knnen. Die Datenbank-Mglichkeit nennt man HSODBC oder Heterogenous Services.

Funktionsweise und bentigte Komponenten des ODBC-Zugriffs


Die Einrichtung auf einem ODBC-fhigen Windows-Rechner sieht wie folgt aus:
1. Es muss ein Oracle-Listener auf dem Rechner laufen, auf dem auch die ODBC-Quelle zur
Verfgung steht.
2. Definieren einer ODBC-Quelle als System-DSN (Siehe hierzu die blichen Verfahren unter
Windows). Die ODBC-Quelle sollte zunchst getestet werden, um sicher zu gehen, dass diese
auch funktioniert. Machbar ist dies z. B. mit dem Programm "C:\Program Files\Microsoft
Office\Office\MSQRY32.EXE"
In dem Beispiel in dieser Unterlage heit die ODBC-Quelle -->
Orte
<-Es wurde eine Excel-Datei als ODBC-Objekt gewhlt. (Jede andere ODBC-Quelle wre
natrlich auch mglich.)
Jetzt mssen drei Dateien modifiziert werden:
- %ORACLE_HOME%\network\admin\listener.ora
- %ORACLE_HOME%\network\admin\tnsnames.ora
(
Achtung jetzt kommt ein neues Verzeichnis:)
- %ORACLE_HOME%\hs\admin\inithsodbc.ora
3. In der TNSNAMES ist ein neuer TNS-Eintrag vorzunehmen, z. B.
ORA9.DE.ORACLE.COM =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = Aschlauc-de)(PORT = 1521))
)
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

171/299

(CONNECT_DATA =
(SERVICE_NAME = ORA9)
)
)
Orte.DE.ORACLE.COM =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = Aschlauc-de)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = Orte)
)
(HS=OK)
)
4. In der LISTENER-Datei ist ein neuer Aufruf einzutragen, z. B.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\ora9)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = ORA9)
(ORACLE_HOME = D:\ora9)
(SID_NAME = ORA9)
)
(SID_DESC =
(SID_NAME = Orte)
(ORACLE_HOME = D:\ora9)
(PROGRAM = hsodbc)
)
)

5. In dem Oracle-Home-Verzeichnis gibt es ein Verzeichnis mit dem Namen HS mit der Datei
%ORACLE_HOME%\hs\admin\inithsodbc.ora als Beispiel einer ODBC-Konfigurationsdatei.
Kopieren Sie diese und benennen Sie die neue Datei nach dem Muster:
initeigenerODBCName.ora also in diesem Beispiel initOrte.ora. Hier nehmen sie folgende
Eintrge vor.
#
# HS init parameters
#
HS_FDS_CONNECT_INFO = Orte
HS_FDS_TRACE_LEVEL = off
6. Jetzt sollte in SQLPlus noch ein neuer DBLink zur ODBC-Quelle definiert werden, z. B.
create database link DBL_Orte using 'Orte.de.oracle.com'
Unter using ist der Name anzugeben, wie er auch in der TNSNAMES verwendet wurde.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

172/299

Testen des ODBC-Aufrufs:


Hier ist der Name des Karteireiters innerhalb von EXCEL
anzugeben. Jede Kartei stellt eine eigene Tabelle dar.
Beachten Sie das $-Zeichen vor dem DB-Linknamen.
SQL>
select
ORT_sicher_excel$@dbl_orte;
OrteNr
---------1
2
3
4
5
6
7
8
9
10
11

from

Ort
----------------------------Berlin
Braunschweig
Bremen
Dortmund
Elmshorn
Essen
Hannover
Kaiserslautern
Karlsruhe
Kiel
Ludwigsburg

Anzeigen aller mglichen Tabellen ber die ODBC


Quelle:
select * from all_tables@dbl_orte
Verwenden von ODBC-Quellen ber den Warehouse-Builder
Alle ODBC-Objekte knnen wie normale Tabellen
in den Mapping-Editoren betrachtet werden.
Definieren Sie ein separates Quellmodul fr eine
ODBC-Quelle. Bei der Definition des DB-Links
knne Sie die Option Use for Heterogenous
Services whlen.
Ausnahme:
Es wird Ihnen nicht gelingen fr eine ExcelTabelle einen solchen DB-Link anzulegen, denn
das System fragt Sie nach User Name und
Password.
Eine Excel-Tabelle hat so etwas nicht. Bei Access
oder SQL Server oder DB2/UDB ist dies mglich.
Erstellen Sie einen View fr Excel-Tabellen. In der
View-Definition nutzen Sie den oben definierten
DB-Link.

Einlesen von XML-Dateien


(Ist in Vorbereitung wenn jetzt bereits ein Beispiel gebraucht wird, bitte ber den Autor anfordern)

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

173/299

9. Ein Mapping bersichtlich strukturieren und


darstellen
Die Beispiel-Mappings sind bisher zunehmend komplexer geworden. Das wurde in diesem
Step_By_Step-Dokument mit Absicht so gemacht, um aufzuzeigen, dass der Komplexitt in solchen
Mappings keine Grenzen gesetzt sind.
In der Praxis sollte man die Mappings aus Grnden der Dokumentation und der besseren Lesbarkeit
so einfach wie mglich halten. Das bedeutet allerdings nicht, dass fr das Beschreiben jeder Tabelle
ein eigenes Mapping gemacht werden sollte.
Die Gre eines Mappings sollte eine fachlich beschreibbare Funktionseinheit abdecken. D. h. dass
fachlich zusammenhngende Tabellen auch gemeinsam in einem Mapping bearbeitet werden sollten.
Ein Beispiel hierfr sind Master-Detail-Beziehungen oder generelle alle Strukturen, wie sie z. B. auch
in Dimensionen vorkommen.

Folder-Darstellung in Mappings
Zur besseren Strukturierung von komplexen Mappings kann man Operatoren in Foldern
zusammenfassen. Die Objekte verschwinden in der graphischen Darstellung hinter dem FolderSymbol.

Option Folder in dem Mapping-Editor zu erstellen

Markieren Sie die Objekte, die zusammengefasst werden sollen (entweder ber einen Kasten
oder durch nacheinander Selektieren bei gedrckter Shift-Taste).
Whlen Sie dann die Folder-Option.

Aussehen des Mappings vor der Strukturierung durch Folder

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

174/299

Aussehen des Mappings nach der Strukturierung durch Folder

Suchen in komplexen Mappings


Das Suchen z. B. nach Spaltennamen in Mappings, kann je nach Komplexitt des Mappings sehr
mhsam sein. Hier hilft die Suchfunktion im Mapping-Editor. Sucht man z. B. nach Spaltennamen,
dann wird der gefundene Name anschlieend in die Mitte des Mappings gezoomt.

Das Suchfenster wird ber den Pulldown-Men-Punkt Search aufgerufen.

Suche nach Namen in komplexen Mappings

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

175/299

10.
Erzeugen von Auswertemodellen in einem
Data Mart
Fr Auswertezwecke haben sich in der Praxis mehrere Datenmodelle und Techniken etabliert, die je
nach Anwendungsfall in Abhngigkeit von den Rahmenbedingungen ihre Strken ausspielen knnen.
Die klassischen Auswerte-Datenmodelle in der relationalen Datenbankwelt sind das Star-und das
Snowflake-Schema. Oracle bieten zustzlich die OLAP-Option als alternatives Speicherverfahren an.
Bei diesem Verfahren sind Kennzahlen bereits vorberechnet.
Warehouse Builder erlaubt die Definition und die Erstellung von allen 3 Varianten. Die
Metadatendefinition erfolgt jedoch nur einmal. Zu dem Zeitpunkt der Generierung entscheidet man
sich dann fr die jeweilige physische Ausprgung.
Moduleinteilung und zusammenhngende Informationen
Fr Data Marts kann man neben Stage und Warehouse aus dokumentarischen Grnden ein separates
Modul benutzen. Hier knnen Dimensionen und Faktentabellen aus einem zusammenhngenden
Themengebiet zusammengefasst sein.
Grundstzlich knnen beliebig viele Dimensionen und Faktentabellen definiert werden. ber die
Verwendung des Wizzards zum Aufbau von Faktentabellen legt der Benutzer die
Zusammengehrigkeit von Dimensionen und Fakten fest. Dimensionen knnen in mehreren
Starschemen gleichzeitig genutzt werden. Damit ist es leichter, Abfrageinhalte ber Data MartGrenzen und Faktentabellen hinweg synchron zu halten (Conforming Dimensions).

Wozu werden Dimensionen gebraucht


Zum einen sind Dimensionen fundamentaler Bestandteil eines Starschemas wie dies bereits in dem
einleitenden Kapitel zu den Dimensionen und Sichten ausgefhrt wurde. Logisch gesehen
reprsentieren sie die Geschftsobjekte, ber die der Warehouse-Benutzer Informationen abfragt.
Aus Sicht der Datenbank liefern sie wertvolle Hinweise zur Optimierung von Benutzerabfragen. Das
Datenbanksystem wird sich an den Hierarchie-Level der Dimension orientieren um Benutzerabfragen
automatisch auf vordefinierte Summentabellen (Materialized Views) umzulenken. Dieses QueryRewrite-Verfahren wird unten nher erlutert.
Technisch gesehen, entstehen in der Datenbank nach dem Generieren:
- eine oder mehrere relationale Tabellen (je nach dem ob ein Star- oder Snowflake-Schema beim
Generieren gewhlt wurde)
- ein Datenbankobjekt Dimensional Table. Dieses hat eine Hilfsfunktion fr den Datenbank-Optimizer
bei der Steuerung des Query Rewrite Verfahrens in der Datenbank.
Verwendet man die Oracle OLAP Option in der Datenbank, so dient die Dimension-Beschreibung der
Definition der OLAP-Wrfel. Oracle Warehouse Builder wird aus diesen Definitionen einen OLAPWrfel herstellen.

Aus welchen Teilen besteht eine Dimension


Idealerweise beinhaltet eine Dimension die zu erwartende Drill-Down- bzw. Roll-Up-Struktur der
Abfragen der Warehouse-Benutzer. Um Trends zu erkennen verdichtet man Detailinformationen ber
gleiche Eigenschaften auf einer Makroebene. Artikel fasst man so zu Artikelgruppen zusammen, Orte
werden auf Kreis- oder Landesebene in der Summe betrachtet, Mitarbeiter ber Abteilungen oder
Sparten in ein globales Bild eingestuft. ber Trends auf der Makroebene lassen sich Rckschlsse auf
die Detailebene ziehen. Besonderheiten auf der Einzelelementebene werden deutlich, aber auch
Ausreier auf der Einzelebene werden nivelliert usw.
Fr ein Level einer Hierarchie wird blicherweise ein identifizierendes Element festgelegt ein
Levelschlssel und weitere beschreibende Attribute. Auf der untersten Ebene liegt der Primary Key
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

176/299

der Dimensionstabelle. Dieser Schlssel wird bei dem relationalen Star Schema als Foreign Key in die
Faktentabelle vererbt.
Bei der Definition der Level ist darauf zu achten, dass abfragefhige Columns gefunden werden.
ber diese Columns fragt der Warehouse-Benutzer spter ab und das Auswertewerkzeug zeigt sie
dem Benutzer zur Selektion an. Diese Columns knnen gleichzeitig die Abfrageschlsselwrter fr die
Endbenutzer sein.
Business Key - Surrogate Key
Bei der Schlsselvergabe gibt es noch ein besonderes Phnomen. Meist wird in Data Warehouse
Systemen ein eigenstndiger knstlicher Schlssel erzeugt. Das ist notwendig, weil in einem
Warehouse System Informationen aus mehreren operativen Systemen zusammengefasst sind. Dort
sind die Informationen oftmals nach anderen Schlsseln sortiert und abgelegt, so dass das
Warehouse einen neuen System-bergreifenden Schlssel braucht. Der Oracle Warehouse Builder
trgt diesem Umstand Rechnung, in dem er in den Wizzards zur Erstellung der Dimensionen die
Schlsselarten Business und Surrogate (Starschema) vorsieht.
Beispiel Artikeldimension:
Auf den Hierarchieleveln gibt es
die Levelschlssel und jeweils
noch ein Levelattribut (Langtext).
Auf dem untersten Level gibt es
noch
zustzlich
einen
Artikelschlssel als Primary Key
der Dimension. Er bernimmt die
Fremdschlsselbeziehung
zur
Faktentabelle.

Schema einer Dimension


Die Artikeldimension ist ber eine Denormalisierung der 3 Stammdatentabellen Artikel, Artikelgruppe
und Artikelsparte zu einer einzigen Tabelle entstanden.
Zu jeder Dimensionstabelle definiert man ein passendes Mapping. Hier findet die Denormalisierung
statt. Werden neue knstliche Schlssel gebraucht, so kann dieser, in diesem Mapping ber eine
Sequenz erzeugt werden.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

177/299

In dem nebenstehenden
Beispiel
verzichtete
man auf das Erstellen
eines
zustzlichen
Schlssels
fr
die
Dimension Artikel, da
die
Artikelnummer
bereits eine laufende
Nummer ist.

Beispiel-Mapping zum Anlegen einer Dimension

Der Primary Key der Dimensionen


Nach welchen Regeln sollten die Primary-Keys der Dimensionen im Warehouse aufgebaut sein?
Aus der klassischen Datenmodellierung gibt es folgende Regeln fr Primary Keys (PKs):
PKs sollten ber lange Zeitrume hinweg stabil bleiben. Artikelnummern, die sich fter ndern,
eignen sich z. B. nicht. Wie sollen im Warehouse ber Jahre hinweg Trends gemessen
werden, wenn sich die Schlssel ndern?
PKs sollten kompakt aufgebaut sein. Zusammengesetzte Schlssel eignen sich nicht. Die
kompakteste Form ist eine laufende Nummer.
PKs sollten nicht noch zustzlich in Bedeutungsbestandteile zerfallen. Z. B. gruppenbezogene
Prfix- oder Suffixangaben, Masken.
Zusammengefasst ist das Bilden einer laufenden Nummer in den meisten Fllen die ideale
Vorgehensweise.
Eine Aufgabenstellung bei dem Aufbau des Starschemas ist folglich das Neubilden der Primary Key.
Innerhalb des Warehouse-Builders wird man hierzu eine Sequenz (Datenbankobjekt) nutzen, die bei
jedem Zugriff einen neuen Schlssel liefert.
Der Originalschlssel, z. B. die Artikelnummer aus den Stammdaten, sollte ebenfalls mit in die
Dimension bernommen werden, denn nur ber den Originalschlssel knnen Rckverweise auf die
operativen Quellen nachvollzogen werden. Es wird mglich sein, aus dem Warehouse heraus ber
diese Schlssel auf die Originaldaten der operativen Vorsysteme zuzugreifen. Auch bei Updates
helfen die Originalschlssel, denn nur hierber sind zu ndernde Stze identifizierbar.
Empfehlungen fr die Planung und den Aufbau von Dimensionen:
Verwenden Sie denormalisierte Strukturen, die nach Mglichkeit in einer Tabelle vorhanden
sind (nicht noch zustzliche normalisierte Strukturen, etwa Snowflake)
Die Beziehungen zwischen der Faktentabelle und der Dimension sollte unique sein, d.h.
eine echte n:1 Beziehung. Dies ist im Vorfeld durch den Aufbau der Dimension im ETLProzess zu prfen. Auf Datenbank-Contraints zwischen Faktentabelle und Dimensionen sollte
verzichtet werden. Sie bremsen die Ladeperformance aus.
Die Dimension sollte in sich stimmig sein. D.h. der Schlssel eines unteres Levels muss exakt
auf einen Schlssel des darber liegenden Levels passen (N:1-Struktur). Prfungen durch die
Prozedur validate_dimension im DBMS_SUMMARY-Package unter SYS knnen hier helfen.
Fakten-Stze sollten immer ein Pendant zu den jeweiligen Dimensionsstzen haben.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

178/299

Faktentabellen erhalten keinen explizit erstellten Primary Key. Der PK der Faktentabelle ergibt sich
aus der Kombination aller Foreign Keys zu den Dimensionstabellen. Diese Schlsselkombination
muss nicht eindeutig sein.

Dimensionen ber den Star Schema Wizard erstellen


Der Warehouse Builder hat einen speziellen Wizard um ein Starschema zu definieren. Man geht in
zwei Schritten vor:
1. Erstellen aller relevanten Dimensionen.
2. Erstellen der Faktentabelle, wobei hier die Beziehungen zu mglichen Dimensionen in dem
Modul automatisch erkannt wirden.
Bei der Definition von Dimensionsobjekten werden 4 Objekte entstehen:

Eine Tabelle, in der die Daten in der Datenbank abgespeichert sind

Eine Primary Key- Definition (Index)

Ein Dimensional Table-Objekt

Ein Sequence-Objekt zum Bilden des knstlichen Schlssels.


Dimension Artikel
Aufgabenstellung: Erstellen einer Dimension mit Artikeln:
- unterstes Level Artikel mit einer Artikel_ID
- Level2 Artikelgruppendaten
- Level3 Artikelspartendaten
Zustzlich zu dem Originalschlssel soll ein knstlicher Schlssel fr die Dimension aufgebaut
werden.

Gehen Sie mit der rechten Maustaste in dem Modul Warehouse auf den Punkt DIMENSIONS
und whlen Sie hier die Option New Dimension.
Der Dimension-Wizard startet. Vergeben Sie den Namen DIM_ARTIKEL. Next.
Legen Sie den Storage type auf ROLAP fest (kann man spter wieder ndern).
Im nchsten Schritt legen Sie Attribute fest, die spter den Leveln zugeordnet werden knnen.
Whlen Sie hier die Attribute:
- ID (Surrogate, number)
- Original_Nummer (Business, number)
- Name (varchar2(32))
- Beschreibung (varchar2(50))

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

179/299

Festlegung der Attribute, die spter den einzelnen Level zugeordnet werden knnen
Die folgende Maske fragt nach dem Level. Es ist also fr jeden Level ein Levelname zu vergeben.
Next.

Definition der Dimensions-Hierarchie-Level

Jetzt sind die vorher festgelegten Attribute den Levels zuzuordnen. Whlen Sie:
Level Artikel:
ID, Original_Nummer, Name, Beschreibung
Level Gruppe:
ID, Name
Level Sparte:
ID, Name

Zuordnung von Attributen zu Levels. Hier am Beispiel von Level Artikel

Danach whlen Sie die Slowly Changing Dimension Option. Nehmen Sie hier den einfachsten Fall
Option 1. Next.

Jetzt ist die erste Dimension angelegt und sie erscheint in dem Project Explorer des Design Centers.
Dort knnen Sie alle Einstellungen auch wieder ber den Object Editor ansehen und nachtrglich
modifizieren.
Eine nderung wollen wir zustzlich noch anbringen: Fr den Surrogate Key sollte automatisch ein
Oracle Datenbank Sequence-Objekt entstehen.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

180/299

Rufen Sie hierfr den Object Editor fr die neue Dimension auf.

Data Object Explorer mit der neuen Dimension

Hier finden Sie unter der Option Attributes in dem oberen Bereich eine List-Box, mit der Sie ein
Sequence-Objekt festlegen, das im Verlauf des spteren Beschreibens eindeutige Schlsselwerte
erzeugt. Der Wizzard legt eine solche Sequenz automatisch an.

Bis jetzt haben wir lediglich die logische Definition einer Dimension angelegt. Es fehlt noch das
Gegenstck in Form einer relationalen Tabelle. Hierzu ist ein Bind-Vorgang ntig.

Drcken mit der rechte Maustaste im Project Navigator auf die neue Dimension auf und whlen
Sie die Option Bind.

Jetzt legt OWB automatisch eine relationale Tabelle als Gegenstck zur Dimensionstabelle an. Sie
knnen dies in der Darstellung Physical Bindings im Editor-Feld erkennen.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

181/299

Bind: Ableiten einer relationalen Tabelle aus der Dimensionen-Definition

Das Ergebnis ist jetzt eine zustzliche Tabelle, die Sie auch in dem Project Navigator sehen knnen.
Sie werden auch die Sequence finden, die zur Bildung des knstlichen Schlssels in einem spter zu
definierenden Mapping gebraucht wird.

Generieren Sie jetzt alle Objekte, die neu entstanden sind mit dem Control Center.

Zu Ihrer Orientierung sind hier die generierten Skripte dargestellt.


CREATE TABLE "DIM_ARTIKEL"
(
"DIMENSION_KEY" NUMBER NOT NULL,
"BESCHREIBUNG" NVARCHAR2(50),
"ORINIGAL_NUMMER" NUMBER(1),
"ARTIKEL_NAME" VARCHAR2(32),
"ARTIKEL_ID" NUMBER,
"GRUPPE_ID" NUMBER,
"GRUPPE_NAME" VARCHAR2(32),
"SPARTE_NAME" VARCHAR2(32),
"SPARTE_ID" NUMBER
)
;
ALTER TABLE "DIM_ARTIKEL" ADD
CONSTRAINT "DIM_ARTIK_DIMENSION_KEY_PK" PRIMARY KEY
("DIMENSION_KEY")
;
CREATE DIMENSION DIM_ARTIKEL
LEVEL "ARTIKEL" IS
"DWH"."DIM_ARTIKEL"."ARTIKEL_ID"
LEVEL "GRUPPE" IS
"DWH"."DIM_ARTIKEL"."GRUPPE_ID"
LEVEL "SPARTE" IS
"DWH"."DIM_ARTIKEL"."SPARTE_ID"

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

182/299

HIERARCHY
"STANDARD" (
"SPARTE" CHILD OF
"GRUPPE" CHILD OF
"ARTIKEL"
)
ATTRIBUTE
"ARTIKEL" DETERMINES (
"DWH"."DIM_ARTIKEL"."BESCHREIBUNG",
"DWH"."DIM_ARTIKEL"."ORINIGAL_NUMMER", "DWH"."DIM_ARTIKEL"."ARTIKEL_NAME" )
ATTRIBUTE "GRUPPE" DETERMINES ( "DWH"."DIM_ARTIKEL"."GRUPPE_NAME" )
ATTRIBUTE "SPARTE" DETERMINES ( "DWH"."DIM_ARTIKEL"."SPARTE_NAME" )
;
Create Sequence "DIM_ARTIKEL_SEQ"
START WITH 1 INCREMENT BY 1
;

Mapping zum Erstellen der Dimension


Anforderung: Gebraucht wird ein Mapping zum Befllen der neuen Artikeldimension:
Als Quellen dienen Artikel, Artikelgruppe, Artikelsparte aus dem SRC-Schema.

Erstellen Sie ein neues Mapping mit dem Namen MP_ARTIKEL


Ziehen Sie ber den Explorer die drei Tabellen Artikel, Artikelgruppe und Artikelsparte aus dem
Source-Modul (BESTELLSYSTEM) in die Editorflche.
Ergnzen Sie das Mapping um die Zieltabelle DIM_ARTIKEL und die Sequence
DIM_ARTIKEL_SEQ aus dem vorigen Abschnitt. (Achtung: benutzen Sie die Tabelle
DIM_ARTIKEL, nicht das Dimensions-Objekt).
Ziehen Sie einen Joiner zwischen die Quell- und die Zieltabelle. Prparieren Sie den Joiner so,
dass er drei Quelltabellen aufnehmen kann und benennen Sie die Eingabegruppen entsprechend
der Eingabetabellen.
Verbinden Sie jetzt die Quelltabellen mit dem Joiner. bernehmen Sie einfach die kompletten
Attributgruppen.
Definieren Sie die Join-Bedingung wie unten im Bild dargestellt.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

183/299

Join-Bedingung den Mappings zur Bildung der Artikeldimension

Verbinden Sie jetzt nach folgender Vorschrift den Ausgang des Joiners mit der Zieltabelle:
Quelle
DIM_ARTIKEL_SEQ.NEXTVAL
ARTIKEL.ARTIKELNR
ARTIKEL.ARTIKELNAME
ARTIKEL.ARTIKELNR
ARTIKEL.ARTIKELGRUPPENNR
ARTIKELGRUPPE.ARTIKELGRUPPENNAM
E
ARTIKELSPARTE.ARTIKELSPARTENNAME
ARTIKELGRUPPE.ARTIKELSPARTENNR

Ziel
DIMENSION_KEY
ORINIGAL_NUMMER
ARTIKEL_NAME
ARTIKEL_ID
GRUPPE_ID
GRUPPE_NAME
SPARTE_NAME
SPARTE_ID

Generieren Sie das Mapping und testen Sie es. Achtung: es kann nicht passenden Feldlengen
kommen. berprfen Sie dieses vorher mit dem Validate in dem Mapping.

Mapping MP_Artikel
Das Ergebnis:

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

184/299

Ausschnitt aus der Dimensionstabelle


Um das Zielmodell zu vervollstndigen, erstellen Sie in den nchsten Schritten in der gleichen Art die
Dimensionstabellen DIM_REGION und DIM_KUNDE.
Dimension Regionen
Die Regionen-Dimension und die zugehrige Tabelle haben hat die folgenden Definitionen:

Dimension und zugehrige Tabelle DIM_REGION

Um diese Dimension mit Daten zu fllen, laden sie aus den Beispieldaten die Tabelle REGIONEN.
Das Mapping hierzu sieht sehr einfach aus:

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

185/299

Mapping MP_Regionen
Dimension Kunde
Die Kunden-Dimension sollte hnlich schnell und einfach erstellbar sein. Im Gegensatz zu den
anderen Dimensionen besteht diese jedoch nur aus einem Level: der Kunde selbst.

Erstellen Sie eine Dimension DIM_KUNDE und verwenden Sie als Muster hierfr und fr die
Inhalte die Tabelle KUNDE aus dem Schema OLTP (Beispieldaten).
Definieren Sie in dem Editor nur ein Level: KUNDE.
Verwenden Sie keine Sequence.

Die Tabellen- und Dimensionsdefinition DIM_KUNDE


Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

186/299

Vorsicht Falle: Die Vorgabe besagte, dass nur ein Level in der Hierarchie erstellt werden soll.
Oracle Warehouse Builder wird jedoch mindestens zwei Levels von Ihnen fordern. Das merken Sie
sptestens bei der Generierung. Dieses Verhalten ist eine Einstellung von OWB. Die
multidimensionale Speicherkomponente der OLAP-Option erfordert dies.
Fgen Sie deswegen in die Dimension noch einen Dummy-Level ein z. B. Name_Total.

Erstellen Sie hierzu das passende Mapping MP_KUNDE und verwenden Sie die folgenden
Herleitungen. Quelle ist die Tabelle KUNDE aus dem SRC-Schema und Ziel ist die neu erstellte
Dimension.
Quelle
DIMENSION_KEY
STATUS
KUNDENNUMMER
TELEFAX
TITEL
STRASSE
KONTAKPERSON
EINKOMMENSGRUPPE
GESCHLECHT
BRANCHE
WOHNART
FIRMENRABATT
ANZ_KINDER
VORNAME
ORTNR
GEBURTSDATUM
BILDUNG
TELEFON
BERUFSGRUPPE
KUNDENART
NAME
ANREDE

Ziel
KUNDE.KUNDENNR
KUNDE.STATUS
KUNDE.KUNDENNR
KUNDE.TELEFAX
KUNDE.TITEL
KUNDE.STRASSE
KUNDE.KONTAKTPERSON
KUNDE.EINKOMMENSGRUPPE
KUNDE.GESCHLECHT
KUNDE.BRANCHE
KUNDE.WOHNART
KUNDE.FIRMENRABATT
KUNDE.ANZ_KINDER
KUNDE.VORNAME
KUNDE.ORTNR
KUNDE.GEBDAT
KUNDE.BILDUNG
KUNDE.TELEFON
KUNDE.BERUFSGRUPPE
KUNDE.KUNDENART
KUNDE.NACHNAME
KUNDE.ANREDE

Mapping MP_Kunde
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

187/299

Generieren und testen Sie die neuen Objekte.

Ergebnismenge DIM_KUNDE

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

188/299

Die Zeitdimension
Es fehlt noch die Zeitdimension. Hier gibt es bei Oracle Warehouse Builder ein Standardverfahren,
das bis hin zur fertigen und mit Daten gefllten Dimension fhrt.

Starten Sie in dem Design Center mit der rechten Maustaste bei Dimensions den Wizard zur
Erstellung einer Zeitdimension ber New. Es startet ein Dialog-Fenster ber das Sie Time
Dimension whlen knnen.

Erstellen einer Zeitdimension ber separaten Wizard

Vergeben Sie den Namen DIM_ZEIT. Next.


Whlen Sie die Option ROLAP. Next.
Jetzt werden Sie nach dem Zeitraum gefragt, fr den Sie die Definition haben wollen.
Whlen Sie als Startjahr 1996 und fr die Zeitdauer 14 Jahre (Die Beispieldaten haben diese
breite Spanne, es sind sogar Daten aus dem Bereich jenseits der Gegenwart enthalten: ein Fall
fr das Data Profiling).

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

189/299

Auswahl des Zeitfensters fr die Zeitdimension

Im nchsten Schritt whlen Sie die Hierarchiestufen fr die Zeitdimension. Whlen Sie
Jahr/Quartal/Monat/Tag.

Festlegen der Hierarchiestufen der Zeitdimension


Nachdem Sie jetzt Next gedrckt haben, wird OWB eine Reihe von Objekten anlegen. Das knnen Sie
an dem Protokoll leicht erkennen. Es entsteht sogar ein Mapping.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

190/299

Generierungsprotokoll fr alle Objekte rund um die Zeitdimension

ffnen Sie das das neu erstellte Mapping DIM_ZEIT_MAP. Whlen Sie die Option Autolayout. Sie
knnen die einzelnen Objekte betrachten.

Generiertes Mapping zur Erstellung der Zeitdimension

Generieren Sie die neuen Objekte. Beachten Sie alle Objekte, die automatisch erzeugt wurden.
Das sind
DIM_ZEIT
DIM_ZEIT_SEQ
DIM_ZEIT_MAP

Starten Sie das Mapping und betrachten Sie sich das Ergebnis in dem Data Browser.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

191/299

Geladene Stze des Mappings zur Erstellung der Zeitdimension


Das Ergebnis

Auszug mit Beispieldaten


Wenn Sie sich die Daten genau betrachten, werden Sie sehen, dass die Zeitdimension Felder
beinhaltet, an die sie zunchst vielleicht nicht gedacht haben. Das sind Felder fr die Anzahl Tage
einer Zeitperiode oder Start- und Endtag einer Periode. Diese Felder sind fr die Wrfel der Oracle
OLAP-Option wichtig.
Selbst gemachte frei-definierbare Zeit-Dimension
Wenn Sie eine einfacher strukturierte Zeitdimension erstellen wollen, dann whlen Sie bei der
Definition die Option fr Standarddimensionen.
Zum Fllen der so erstellen Zeitdimension knnen Sie die kleine Prozedur verwenden, die bei den
Beispieldaten mitgeliefert wird:
days_Tabelle_Create_und_Prozedur_und_Aufruf_Dt_Modell.sql
In diesem Script ist zunchst die Definition einer Hilfstabelle TAGE angegeben. Und schlielich die
Prozedur TIME_GEN. Beide Objekte kann man ber SQL Plus anlegen. und die Prozedur dann ber
EXECUTE und den passenden Parametern aufrufen.
---- Die Tabelle Tage
drop Table Tage;
CREATE TABLE TAGE (
Datum_ID
NUMBER(4) NOT NULL,
Datum_Desc
DATE NOT NULL,
Tag_des_Monats
NUMBER(2) NOT NULL,
Tag_des_Jahres
NUMBER(3) NOT NULL,
Woche_des_Jahres
NUMBER(2) NOT NULL,
Monats_Nummer
NUMBER(2) NOT NULL,
Monat_Desc
VARCHAR2(9) NOT NULL,
Quartals_Nummer
NUMBER(1) NOT NULL,
Jahr_Nummer
NUMBER(4) NOT NULL
);
-------------------------------------------------------------------------- Die Prozedur Time_Gen
create or replace procedure Time_Gen
(startdate DATE, enddate DATE) AS
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

192/299

incdate DATE;
recno INTEGER;
Begin
incdate := startdate;
recno := 1;
while incdate <= enddate LOOP
insert into Tage(Datum_ID ,
Datum_Desc,
Tag_des_Monats,
Tag_des_Jahres,
Woche_des_Jahres,
Monats_Nummer,
Monat_Desc,
Quartals_Nummer,
Jahr_Nummer)
Values (recno,
incdate,
TO_NUMBER(TO_CHAR(incdate,
TO_NUMBER(TO_CHAR(incdate,
TO_NUMBER(TO_CHAR(incdate,
TO_NUMBER(TO_CHAR(incdate,
TO_CHAR(incdate,
'Month'),
TO_NUMBER(TO_CHAR(incdate,
TO_NUMBER(TO_CHAR(incdate,

'DD')),
'DDD')),
'WW')),
'MM')),
'Q')),
'YYYY')));

recno := recno + 1;
incdate := incdate + 1;
END LOOP;
END;

--Beispielaufruf der Prozedur z. B.:


--exec time_gen('01011990','31121999');
-exec time_gen('01011990','31122005');
-exec time_gen(to_date('01011998','DDMMYYYY'),TO_DATE('31122004','DDMMYYYY'));
-exec time_gen(to_date('01011996','DDMMYYYY'),TO_DATE('31122004','DDMMYYYY'));
-- Hilfskommandos
-- alter session set nls_date_format

= 'DD-MON-YY';

Die Faktentabelle
Es fehlt die Faktentabelle in der die Bewegungsdaten von Bestellung und Best_POS
zusammenflieen.
Whrend die Erstellung der Faktentabelle selbst sehr schnell erledigt ist, wird das Mapping etwas
aufwendiger werden, denn hier mssen eine Reihe von Umschlsselungen vorgenommen werden.

Whlen Sie zunchst den Wizard zur Erstellung der Faktentabelle an. Fakten heien in OWB
Cube. Also rechte Maustaste auf Cube und dann die Option New Cube whlen.
Vergeben Sie den Namen F_UMSATZ. Next.
Whlen Sie die Option ROLAP. Next.
Jetzt haben Sie die Mglichkeit die Dimensionen auszuwhlen, die mit der neuen Faktentabelle
verbunden werden sollen. Das bedeutet damit auch, dass Sie in die Faktentabelle die ntigen
Fremdschlssel generiert bekommen.
Whlen Sie hier alle 4 Dimensionen, die Sie zuvor erstellt haben. Next.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

193/299

Auswahl der Dimensionen, die zur Faktentabelle gehren

Jetzt knnen Sie die eigentlichen Faktenwerte festlegen. Whlen Sie die Werte, wie in dem
folgenden Bild:

Festlegung der Measures oder Kennzahlen in der Faktentabelle


Alle Eintragungen der neuen Faktentabelle kann man in dem Object Editor wieder verndern.
Die reinen Definitionsarbeiten sind jetzt allerdings abgeschlossen. Das Befllen der neuen
Faktentabelle kann beginnen.

Die neue Faktentabelle in der graphischen Darstellung des Data Object Editors
Tipp:
In den folgenden Schritten wird die Faktentabelle mit Daten gefllt. Es ist empfehlenswert, im
Verlauf der Testphase die Definition von Foreign-Keys und Indexobjekten zu unterlassen. Das
bremst nur den Entwicklungsfortschritt, da zu Beginn der Entwicklung meist noch fehlerhafte
Stze angeliefert werden. Das Aktivieren von Fremdschlsseln und Indexdefinitionen kann
spter nachgeholt werden.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

194/299

Das Fllen der Faktentabelle


Als Quelle fr das Fllen der Faktentabelle benutzen wir die Tabelle WH_TRANSAKTIONEN aus den
vorhergehenden Schritten. Diese Tabelle ist auch den Beispieldaten beigefgt.

Erstellen Sie ein neues Mapping mit dem Namen MP_F_UMSATZ.


Ziehen Sie die Tabellen F_UMSATZ und WH_TRANSAKTIONEN in die Editorflche
Folgende Felder knnen Sie sofort miteinander verbinden:
Quelle
BESTELLEMENGE
BRUTTOWERT
KUNDENCODE

Ziel
MENGE
UMSATZ
DIM_KUNDE

Fr die Schlsselfelder DIM_ARTIKEL und DIM_ZEIT mssen jetzt Lookup-Werte gefunden werden,
denn die Dimensionstabellen haben andere Schlssel. Bevor man diese Lookups in dem Mapping
Editor entwirft, sollte man sich die Datenwerte der entsprechenden Tabellen vorher genau ansehen.
Hier eignet sich der Data Viewer. Fr die Artikelwerte muss man einen Lookup auf die Tabelle
DIM_ARTIKEL durchfhren und ARTIKELNR mit ORIGINAL_NUMMER vergleichen um aus der
Tabelle DIM_ARTIKEL den Wert DIMENSION_KEY zu erhalten.
(In dem hier dargestellten Beispiel sind in die Werte in Artikel_ID und ORIGINAL_NUMMER zufllig
gleich, da es sich um generierte Daten handelt. Das ist aber nicht die Regel).

Betrachtung ber die Schlsselwerte


Bei der berfhrung der Daten aus WH_TRANSAKTIONEN in die Faktentabelle F_UMSATZ muss
der neue knstliche Schlssel aus DIM_ARTIKEL ber einen Lookup-Operator gelesen werden. Das
Orientierungsfeld hierfr ist das Feld ORIGINAL_NUMMER.
Das fertige Mapping msste dann wie unten dargestellt aussehen. Auf das Fllen der noch leeren
Felder wird hier verzichtet. Hierfr kann man sich beliebige Expressions, also Berechnungen
vorstellen.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

195/299

Mapping MP_F_UMSATZ
Ein Ausschnitt aus der Tabelle F_UMSATZ :

Fakten-Tabelle F_Umsatz
Vermeiden von Fehlern beim Schreiben der Faktentabelle
Wenn man sich die Faktentabelle genau betrachtet, findet man bei einigen Dimensionswerten
(DIM_REGION und DIM_ZEIT) Lcken. Hier sind tatschlich Fehler in der Ausgangsdatenmenge. Der
Lookup-Vorgang in dem Mapping MP_F_UMSATZ lsst diese Lcken zu, wenn in der Lookup-Tabelle
kein passender Wert fr die Eingabestze gefunden wird.
Eine sinnvolle Vorgehensweise ist das nicht, denn die betroffenen Stze sind nicht mehr abfragbar,
Auswerteergebnisse werden verflscht. In der Faktentabelle sollten keine Stze vorhanden sein, die
keinen Eintrag in den Fremd-Schlsselattributen besitzen.
Die beste Vorgehensweise zur Vermeidung solcher Effekte, ist das vorherige Prfen bevor man in die
Faktentabelle schreibt.
Hierzu erstellt man sich eine temporre Tabelle mit den ber Lookups erzeugten Faktenwerten. In die
eigentliche Faktentabelle werden schlielich nur die Stze mit vollstndigen Schlsseln bernommen.
Alle anderen Stze steuert man am besten zusammen mit den Originalwerten in eine separate
Protokolltabelle aus.
Ein solches Mapping kann z. B. so aussehen:

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

196/299

Mapping MP_F_UMSATZ_KORR zum Verhindern von fehlerhaften Foreign-Key-Werten in der


Faktentabelle

Korrigierte Faktentabelle

Ausgesonderte Faktenstze mit mindestens einem fehlenden Schlssel in DIM_REGION oder


DIM_ZEIT

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

11.

197/299

Generierungsstrategien

Set based versus Row based


Die Datenbank als Ladeutility zu nutzen, ist eine gute Wahl, denn die primre Aufgabe der Datenbank
ist es, Daten in groen Mengen zu verwalten aber auch zu bewegen. Um optimale Ladeperformance
zu erzielen, sollten dem Warehouse-Entwickler die Besonderheiten der Oracle-Datenbank bewusst
sein. Die hchste Ladeperformance erreicht die Datenbank mit den nativen Mitteln des SQL. Die
Datenbank arbeitet hier mengenbasiert, sie verarbeitet mehrere Stze gleichzeitig (Set Based).
Plattenlese- und Plattenschreibaktivitten sind blockorientierte Operationen, und das System kann mit
einem (zeitintensiven) physischen IO viele Stze gleichzeitig lesen bzw. schreiben. Das Gegenstck
ist die Einzelsatzverarbeitung (Row Based). Select-Kommandos auf einzelne Stze wie sie in Handprogrammierten Routinen regelmig vorkommen, zwingen das System fr jeden angeforderten Satz
mindestens einen physischen Plattenlesezugriff durchzufhren. Zwar bietet PL/SQL die Mglichkeit
der Cursor-Technik, die mit einem einzigen Select-Befehl die zu verarbeitenden Stze bereits in den
Hauptspeicher liest, doch erfolgt auch hier die nachfolgende Verarbeitung (z. B. Schreiben mittels
Insert) satzweise, und das kostet Zeit.
Die Set-Based-Verarbeitung ist schneller, als die Row-Based-Variante und daher vorzuziehen.
Allerdings besteht nicht immer eine Wahlmglichkeit. Der Update SQL-Befehl ist z. B. eher ein
Kandidat fr die langsamere Variante. Fehlersituationen lassen sich in der Row-Based-Variante
leichter verwalten, weil hier die Fehlerursache direkt auf den fehlerhaften Satz zurckfhrbar ist.
Der Warehouse Builder bercksichtigt diese Unterschiede, in dem er mehrere CodeGenerierungsvarianten anbietet.
Ein Demonstrationsbeispiel:
Betrachten Sie sich das Mapping MP_TRANSAKTIONEN_4_WHERE. Das haben wir angelegt
um die Filter-Bedingung zu testen. ffnen Sie den Editor fr dieses Mapping.
Fhren Sie eine Generierung aus diesem Mapping heraus ber die Menoption Generate durch.
Schalten Sie in dem Kopfbereich des Generation-Result-Fensters den Operating Mode
SET_BASED ein.

Optionen-Wahl fr den Operating Mode


In der List Box Operating mode sehen Sie die 5 Generierungsvarianten des Warehouse Builders.
Das Generation-Result-Fenster eignet sich sehr gut zur Betrachtung dieser Varianten, weil Sie hinund herschalten knnen und sehr viel Verwaltungs-Code weggelassen worden ist.
Die ersten drei Optionen entsprechen der Set based bzw. Row based Variante. Die letzen 2 stellen
eine Mischung zwischen beiden dar, indem sie zuerst mit Set based beginnen und erst im Fehlerfall
(Failover) auf Row based umspringen. Die letzten beiden Varianten sind die aufwendigsten, denn im
Extremfall werden Quellstze zweimal gelesen. Aber wir haben die Chance, dass bei fehlerfreien
Lufen die schnelle SET-based Variante zieht.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

198/299

Der Code fr die Set based Variante:

Ausschnitt Code-Generierung Set based


Dies ist die einfachste und schnellste Ladevariante. Beachten Sie auch den Hint:
/*+ APPEND PARALLEL(WH_TRANSAKTIONEN, DEFAULT, DEFAULT) */
der eingestreut ist.
Commit-Steuerung:
Das System setzt bei dieser Variante nicht bei jedem Insert ein Commit-Kommando ab sondern in
Abhngigkeit von dem Default erst nach 1000 Inserts. Diese Zahl knnen Sie ber Configuration
Properties ndern (rechte Maustaste auf MP_Load_Strategie und dann Configure).
Die Filterbedingung ist in der Where-Klausel zu finden.
Der Code fr die Row based Variante:
Schalten Sie den Operating Mode um auf die Row Based Variante.
Bei der Row based Variante generiert der Warehouse Builder zunchst einen Cursor in der die
Quelldaten inklusive Filter und Join-Bedingung in den Speicher geladen werden.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

199/299

Cursor in der Row based Variante


Und schlielich erfolgt die Abarbeitung des Cursors nach einem Fetch (nicht dargestellt) und der
zeitraubenden Schleife (Loop):

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

200/299

Loop bei der Row based Variante


Commit-Steuerung
Das System setzt ein Commit nach Abschluss der Schleife ab. Es zieht damit wieder die Default
Commit Frequency von 1000 (s. o.).
Die Filterbedingung kann prozedural mit PL/SQL-Programmiermittel realisiert sein oder, wie in
diesem Beispiel, bereits im Cursor-Aufbau erfolgen.
Der Code fr die Row based (Target only) Variante
Die Row based Variante lst die Filterbedingung erst in der Schleife. Die Row based target only
Variante zieht diese Prfung in die Cursor-Aufbauphase hoch, lsst damit also gar nicht so viele Stze
in die Schleife hineinlaufen und ist damit u. U. schneller.
Commit-Steuerung
Das System setzt ein Commit nach Abschluss der Schleife ab. Es zieht die Default Commit Frequency
von 1000 (s. o.).

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

201/299

Der Code fr die Set Based failover to Row based Variante


Hier generiert OWB die Kombination aus beiden Varianten. Luft die Set based Variante auf einen
Fehler, rollt die gesamte bislang durchgefhrte Verarbeitung zurck und beginnt von neuem mit der
Row based Variante. Diese Variante kann in einzelnen Fllen lnger dauern, als wenn gleich die Row
based Variante gewhlt worden wre. Hier sollten Sie eine Entscheidung in Abhngigkeit von der
Datenqualitt treffen.
Der Code fr die Set Based failover to Row based (Target only) Variante
Diese Variante entspricht den vorhergehenden, allerdings ist jetzt die Filterbedingung wieder in den
Cursor hochgezogen.
Steuerung der Generierungsvarianten
Im Default generiert der Warehouse Builder die Variante Set based fail over to row based.
Sie verndern diese Einstellung ber die Mapping Configuration Properies (rechte Maustaste auf
MP_TRANSAKTIONEN_4_WHERE und dann Configure).

Steuerung der Generierungsvarianten

Mit der Set-Based-Variante performante Mappings erzeugen


Da die Set based-Operation die schnellste Variante ist, kann es Situationen geben, in der ein
geschicktes Kombinieren von mehreren Insert Append-Lufen schneller ist, als ein Row Based Lauf.
2 Klassen von Mappings Mappings organisieren
Eine erste Regel besagt, dass Datenflssen mit einer sehr geringen Fehleranflligkeit
zusammenzufassen sind. Umgekehrt werden Datenflssen, die sehr wahrscheinlich Fehler
produzieren auch zusammengefasst und von Beginn an mit der Row-based-Variante gesteuert, so
dass diese erst gar nicht die Set-based-Variante versuchen. Durch die Selektion in fehlertrchtige und
weniger fehlertrchtige Ladeflsse kann man die Anzahl langsamer Mappings bereits reduzieren. Dies
erfordert vorausschauende Planung bei dem Aufbau der Mappings. Die Wahrscheinlichkeit von
Fehlern muss im Vorfeld ermittelt werden. Hier hilft das Data Profiling.
Mappings mit einer Set-based-Verarbeitung kann man schlielich auch zusammenfassen. Wenn keine
Fehler zu erwarten sind, macht man Sammelmappings, in denen mehrere Ladestrnge, d. h. das
Laden von mehreren Zieltabellen, in einem Mapping zusammengefasst ist.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

202/299

Geschickte SQL-Anwendung
Durch die geschickte Anwendung von SQL knnen die meisten Anforderungen heute mit der Setbased-Variante verarbeitet werden.

1.
2.
3.
4.

Ein erstes Beispiel: Es sind mehrere Millionen Stze in eine bereits bestehende und gefllte
Zieltabelle zu berfhren, wenige Stze sind in der Zieltabelle enthalten. Es muss ein umfangreiches
Update vermieden werden:
Lauf Insert Append in eine temporre Tabelle A fr alle Stze, die noch nicht in der Zieltabelle
enthalten sind. (Minus Operation).
Lauf Insert Append in eine temporre Tabelle B fr alle Stze, die bereits in der Zieltabelle
enthalten sind. (Union Operation).
Lauf Insert Append aller Stze der temporren Tabelle A in die Zieltabelle.
Lauf Update aller Stze der temporren Tabelle B in die Zieltabelle.
Mit den Datenbankmitteln ab Oracle 10g Release 2 kann die Problematik generell entschrft werden.
Denn hier gibt es zum einen das MERGE-Kommando, das UPDATE und INSERT vereint. Oracle
Warehouse Builder generiert diese MERGE-Statements. Zum anderen gibt es Error-Tabellen, in die
Stze geschrieben werden, die eine Constraints-Verletzung verursachen.
Inhaltliche Prfungen
Das eben genannte Beispiel lst Flle, in denen es sich lediglich um ein schnelles Updaten von
Tabellen handelt. Besondere Herausforderungen treten jedoch dann auf, wenn Inhalte von
Quellstzen whrend des Ladens geprft werden mssen. Das sind Prfungen wie:
NULL / NOT NULL
Numerisch / alphanumerisch
Gltiges Datumsfeld
Datum in Von/Bis-Bereichen
Summenabgleiche in unterschiedlichen Tabellen
Beliebige Regular Expressions (Spezielle Semantik)
Teilstringprfungen
Wertgltigkeit in Abhngigkeit von Werten aus anderen Tabellen (Lookup)
Alle diese Flle knnen mengenbasiert (Set-based) gelst werden, wie die folgenden Beispiele
zeigen.
Null / NOT Null - Prfung
Anforderung:

Es sollen einzelne Felder (F2, F3) einer Quelltabelle S auf NULL / Not Null

berprft und fehlerhafte Stze aussortiert werden.


In der folgenden Lsung durchlaufen die Feldinhalte von F1 und F2 eine CASE-Anweisung in der im
Fehlerfall ein Kontrollfeld ERR mit der Zahl 1 belegt wird. Dieses Kontrollfeld dient dem folgenden
Splitter, um fehlerhafte Stze in die Fehlertabelle T_ERR auszusteuert. Die korrekten Stze stehen
nach Abschluss in der Tabelle T.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

203/299

Beispiel-Mapping zum Aussteuern von NOT-NULL-Feldern


Die CASE-Anweisung fr das Feld ERR lautet:
case
when INGRP1.F2
else 0
end

is null or

INGRP1.F3 is null then 1

Prfung Numerisch / nicht Numerisch


Eine hnliche Lsung ist mglich fr die Prfung Numerisch / nicht Numerisch.
Hier kann man sich eine kleine Hilfsfunktion erstellen, die einen Wert auf numerisch oder nichtnumerisch prft. Diese Funktion wird dann wie in dem Beispiel zuvor in eine CASE-Anweisung
geschrieben.
Die folgende Funktion liefert einen NULL-Wert zurck, wenn der bergebene alphanumerische
Parameter nicht in einen numerischen berfhrt werden kann.
CREATE OR REPLACE FUNCTION IST_NUMMER(F1 IN VARCHAR2) RETURN NUMBER IS
--initialize variables here
-- main body
BEGIN
return to_number(f1);
EXCEPTION
WHEN OTHERS THEN
RETURN NULL;
END;
/

Die Verwendung in einem CASE-Statement sieht wie folgt aus:


select case
when ist_nummer('666') IS NULL then 'Nicht numerisch'
else 'Numerisch'
end
from Dual

Das dazu passende Mapping hat die gleiche Form, wie das Beispiel zuvor und wird deswegen hier
nicht ausgefhrt.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

204/299

Prfung auf Ist-Datum / Ist Nicht Datum


Genau das gleiche Verfahren ist fr eine Datums-Prfung mglich. Man braucht hier eine andere
Funktion.
CREATE OR REPLACE FUNCTION IST_DATUM("F1" IN VARCHAR2) RETURN DATE IS
--initialize variables here
-- main body
BEGIN
return to_date(f1);
EXCEPTION
WHEN OTHERS THEN
RETURN NULL;
END;

Die Verwendung in einem CASE-Statement sieht dann wieder so aus:


select case
when ist_datum('11-MAR-2006') IS NULL then 'Datumsformatfehler'
else 'OK'
end
from Dual

Oder eine noch einfachere Verwendung:


select ist_datum('11-MAR-2006') from dual

Auch hierzu kann man sich das dazu passende Mapping leicht aus dem obigen Beispiel ableiten.
Summenabgleiche
Anforderung: In zwei Tabellen sind Ertrge mit unterschiedlicher Verdichtung abgelegt. In einer
Bestell-Tabelle ist die Gesamtsumme einer Bestellung erfasst und in einer Bestell-Positionen-Tabelle
sind die Einzelpositionen zu dieser Bestellung mit den Einzelbetrgen einer Position gesammelt. Die
Summe aller Einzelbetrge zu einer Bestellung soll gleich der Gesamtsumme einer Bestellung in der
Bestell-Tabelle sein. Es sollen alle diejenigen Bestellungen gefunden werden, die fehlerhaft sind.
Lsung:
Hinter dieser Anforderung steckt die Gruppenwechsel-Thematik, d. h. wir mssen fr jede
Bestellnummer zunchst die dazu passenden Positionen in der Bestell-Positionen-Tabelle suchen,
deren Einzelertrge zusammen addieren und das Ergebnis mit dem Summenfeld der Bestell-Tabelle
vergleichen.
SQL ist fr eine solche Lsung prdestiniert. In prozeduralen Programmiersprachen msste man
hierfr zwei Schleifen mit einer entsprechenden Kopfverarbeitung fr die Bestellungen realisieren.
Die Mapping-Lsung:

Mapping zur Lsung des Summenvergleichs


Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

205/299

Beide Quelltabellen werden ber einen Joiner und dem Join-Kriterium der Bestellnummer miteinander
verjoint. Damit ist die Zugehrigkeit der Positionsstze aus der einen Tabelle mit den
Bestellsummenstzen der anderen Tabelle gegeben. Die Bestell-Positions-Stze werden jedoch
vorher ber die Bestellnummer durch einen Aggregator gruppiert und die einzelnen Positionswerte pro
Bestellnummer aufaddiert (aggregiert). Im Ergebnis entsteht pro Bestellnummer nur ein Satz, der an
den Joiner weitergegeben wird. Da nur Stze mit abweichenden Summenwerten in die Zieltabelle
gelangen drfen, ergnzt man die Join-Bedingung um einen entsprechenden Eintrag.

Join-Bedingung
Der Deduplicator in dem Mapping soll verhindern, dass doppelte Bestellstze angeliefert werden.
Es sollen einzelne Felder (F2, F3) einer Quelltabelle S auf NULL / Not Null
Komplexere Lsungen - Mit temporren Zwischentabellen arbeiten
Bei komplexeren Lsungen und bei mehreren gleichzeitigen Prfungen bieten sich temporre
Zwischentabellen an. Das Beschreiben und Wiederlesen einer Zwischentabelle kann im Endeffekt
performant sein, als die satzweise Abarbeitung in einer Cursor-gesteuerten prozeduralen PL/SQLSchleife.
Anforderung: In einer Tabellen sind Statusmeldungen zu einem bestimmten Vorgang abgelegt.
Ein Vorgang durchluft eine Reihe von definierten Zustnden. Das Erreichen des Zustands wird ber
einen dazu festgelegten Statuswert (A,B,C,D...) festgehalten. Die Abfolge der Zustnde, also auch die
Abfolge der Statusmeldungen muss chronologisch entsprechend einer Datumsangabe erfolgen. Es
muss also der Status A zeitlich vor dem Erreichen des Status B erfolgen. Um das zu berprfen, wird
ein Datumsfeld mit gepflegt.
Die Datumskennzeichnung der Zustnde erfolgte manuell, kann also fehlerhaft sein. Ein Fehler liegt
dann vor, wenn z. B. der Status C ein frheres Datum besitzt als Status B.
Die Herausforderung in diesem Beispiel liegt in dem Umstand, dass die zu prfenden Informationen in
der gleichen Tabelle ber verschiedene Stze hinweg verteilt sind.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

206/299

Das Lsungs-Mapping:

Mapping zum Herausfinden von nicht-chronologischen Statusmeldungen


Zur Lsung wurden zwei temporre Tabellen eingefhrt. Die Ausgangstabelle STATUSMELDUNG ist
zweimal als Quelle in das Mapping eingefhrt worden. Die Stze dieser Tabelle werden einmal sortiert
nach dem Kriterium STATUS+DATUM und dann noch einmal umgekehrt nach DATUM+STATUS.
Damit die Sortierergebnisse spter verglichen werden knnen, hat man eine laufende Nummer
eingefhrt, die man sich aus zwei Sequence-Objekten liefern lsst. Wenn man jetzt einen Join ber
diese laufende Nummer bildet, mssen die Ergebnisstze den gleichen Statuswert aufweisen, wenn
die Stze gltig sind. Wenn nicht, laufen Datum und Statusabfolge auseinander.
Die Join-Bedingung (Anti-Join wegen des !=-Vergleichs):

Join-Bedingung des Status-Abgleichs


In vielen Fllen kann man auf die temporren Tabellen verzichten. Auch in diesem Beispiel knnte
man ohne die beiden temporren Tabellen auskommen. Aber sie machen das Verfahren
bersichtlicher.
Ausnahmen, die nur mit Row Based generierbar sind
Bestimmte Transformationen sind nur im Row based Modus generierbar:
- Flat File as target Operationen
- Name&Adress-Cleansing
- Regular-Expressions

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

207/299

Den Schreibmodus ndern - Insert Update Delete


Sollen Zieltabellen Updates erfahren, so generiert der Warehouse Builder den passenden UpdateCode fr eine Update-Steuerung. Um dieses Verfahren einzuschalten, gehen Sie wie folgt vor:
Kopieren Sie das Mapping MP_ARTIKEL und erstellen Sie daraus das neue Mapping
MP_ARTIKEL_UPD
Markieren Sie die Zieltabelle DIM_ARTIKEL und ffnen Sie das Property-Fenster hierzu (Property
Inspector). Unter Loading Type knnen Sie jetzt mehrere Auswahlvarianten erkennen.

Einschalten des nderungsmodus fr die Zieltabelle


Die unterschiedlichen Varianten, in eine Zieltabelle zu schreiben, sind hier kurz dargestellt:
Updates - Updates / Insert
Mit Updates werden bestehend Zielstze gendert. Im Fall eines nicht vorhandenen Zielsatzes fhrt
das System einen Insert durch. Updates sind natrlich nur dann durchfhrbar, wenn die Zieltabelle
auch ber einen Primary Key (Matchkriterium) verfgt. Ist das Selektionskriterium fr Zielstze nicht
der Primary Key, so kann man einen alternativen Schlssel festlegen.
Ist die Zieldatenbank Oracle 9.2 oder hher, so generiert OWB ein Merge-Statement.
Wenn Sie den Test mit dem kopierten Mapping durchfhren, kann das Sequence-Objekt stren. Wir
haben in einem frheren Beispiel das Sequence-Objekt gebraucht, um einen neuen knstlichen
Schlssel aufzubauen. Hier spielt uns die Logik einen Streich: Einerseits wollen wir in der Zieltabelle
einen neuen knstlichen Schlssel (Dimension_Key), andererseits ist das sogenannte Matchkriterium
der alte Originalschlssel (Artikelnummer).
Fr diese spezielle Anforderung mssen wir eine spezielle Lsung finden. Zunchst legen wir fest,
dass das Matchkriterium die Artikelnummer sein soll.
Selektieren Sie den Kopf der Zieltabelle DIM_ARTIKEL
Schalten Sie in dem Property-Fenster die Option Match by constraint auf NO_CONSTRAINTS.
Diese Option versucht ein Update ber den Primary Key zu lsen.
Stattdessen whlen wir das Feld Artikel_ID. Das ist ursprngliche Artikelnummer, die mit den
Bewegungsstzen aus der Bestell_Position-Tabelle bereinstimmt.
Whlen Sie fr dieses Feld die Optionen
Load Column when Updating Row:
No
Update: Operation:
=
Match column when Updating Row:
Yes
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step


Load Column when Inserting Row:
Match Column when Deleting Row:

208/299
Yes
Yes

Steuerung der Felder, die gendert bzw. nicht gendert werden sollen.

Generieren Sie den Code innerhalb des Mappings und betrachten Sie sich den Intermediate
Result-Code fr die Zieltabelle.

MERGE
/*+ APPEND PARALLEL("DIM_ARTIKEL") */
INTO
"DIM_ARTIKEL"
USING
(SELECT
"ARTIKEL"."ARTIKELNR" "ARTIKELNR",
"ARTIKEL"."ARTIKELNAME" "ARTIKELNAME",
"ARTIKEL"."ARTIKELNR" "ARTIKELNR$1",
"ARTIKEL"."ARTIKELGRUPPENNR" "ARTIKELGRUPPENNR",
"ARTIKELGRUPPE"."ARTIKELGRUPPENNAME" "ARTIKELGRUPPENNAME",
"ARTIKELSPARTE"."ARTIKELSPARTENNAME" "ARTIKELSPARTENNAME",
"ARTIKELGRUPPE"."ARTIKELSPARTENNR" "ARTIKELSPARTENNR"
FROM
"SRC"."ARTIKEL" "ARTIKEL",
"SRC"."ARTIKELGRUPPE" "ARTIKELGRUPPE",
"SRC"."ARTIKELSPARTE" "ARTIKELSPARTE"
WHERE
( "ARTIKEL"."ARTIKELGRUPPENNR" = "ARTIKELGRUPPE"."ARTIKELGRUPPENNR" ) AND
( "ARTIKELGRUPPE"."ARTIKELSPARTENNR" = "ARTIKELSPARTE"."ARTIKELSPARTENNR" )
)
MERGE_SUBQUERY
ON (
"DIM_ARTIKEL"."ARTIKEL_ID" = "MERGE_SUBQUERY"."ARTIKELNR$1"
)
WHEN MATCHED THEN
UPDATE
SET
"ORIGINAL_NUMMER" = "MERGE_SUBQUERY"."ARTIKELNR",
"ARTIKEL_NAME" = "MERGE_SUBQUERY"."ARTIKELNAME",
"GRUPPE_ID" = "MERGE_SUBQUERY"."ARTIKELGRUPPENNR",
"GRUPPE_NAME" = "MERGE_SUBQUERY"."ARTIKELGRUPPENNAME",
"SPARTE_NAME" = "MERGE_SUBQUERY"."ARTIKELSPARTENNAME",
"SPARTE_ID" = "MERGE_SUBQUERY"."ARTIKELSPARTENNR"
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

209/299

WHEN NOT MATCHED THEN


INSERT
("DIM_ARTIKEL"."DIMENSION_KEY",
"DIM_ARTIKEL"."ORIGINAL_NUMMER",
"DIM_ARTIKEL"."ARTIKEL_NAME",
"DIM_ARTIKEL"."ARTIKEL_ID",
"DIM_ARTIKEL"."GRUPPE_ID",
"DIM_ARTIKEL"."GRUPPE_NAME",
"DIM_ARTIKEL"."SPARTE_NAME",
"DIM_ARTIKEL"."SPARTE_ID")
VALUES
("DIM_ARTIKEL_SEQ".NEXTVAL,
"MERGE_SUBQUERY"."ARTIKELNR",
"MERGE_SUBQUERY"."ARTIKELNAME",
"MERGE_SUBQUERY"."ARTIKELNR$1",
"MERGE_SUBQUERY"."ARTIKELGRUPPENNR",
"MERGE_SUBQUERY"."ARTIKELGRUPPENNAME",
"MERGE_SUBQUERY"."ARTIKELSPARTENNAME",
"MERGE_SUBQUERY"."ARTIKELSPARTENNR")
;

None
Die Option None ist ntzlich, wenn die Zieltabelle z. B. als Vergleichstabelle bentigt wird, sie aber
selbst nicht verndert werden soll.
Die Set based Variante ist mglich.
Truncate/Insert
Bei der Option Truncate/Insert lscht der generierte Code zunchst die Inhalte in der Zieltabelle. Das
ist oft fr Zwischentabellen sinnvoll.
Die Set based Variante ist mglich.
Delete/Insert
Hier lscht der generierte Code eventuell bereits vorhandene Stze bevor ein neuer Satz eingefgt
wird. Das kann einfacher sein, als ein Update-Vorgang.
Die Set based Variante ist mglich.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

12.

210/299

Pluggable Mappings

Wiederverwendbare Mapping-Bausteine Pluggable Mappings


Es gibt immer wieder Aufgabenstellungen, fr die wir zwar mehrere, unterschiedlichen Mappings
brauchen, um sie zu lsen, aber dennoch sind die Aufgabenstellungen hnlich. Bevor wir mhsam
ganze Mappings kopieren, um sie dann getrennt weiter zu pflegen, ist es einfacher, ein generisches
Mapping zu erstellen und dieses dann in andere Mappings einzubetten.
Diese Bausteine nennt man Pluggable Mappings.
Bevor wir hierzu eine Aufgabenstellung bearbeiten, sollte die Arbeitsweise an einem sehr einfachen
Beispiel erklrt werden: Lassen Sie uns hierfr eine Tabelle kopieren.

Erzeugen Sie zunchst ein Pluggable Mapping mit dem Namen CT unter dem Punkt
-> Pluggable Mappings und
-> Standalone
Der Wizard fragt nach der Input_Signatur. Legen Sie hier 4 Felder an (F1-F2) jeweils varchar2(30)
Dann werden Sie nach der Ouptut-Signatur gefragt. Drcken Sie hier einfach auf NEXT ohne
Felder anzulegen.
Sie erhalten jetzt eine Editor-Flche die dem Mapping-Editor gleicht. Die beiden Operatoren Input
und Output sind sichtbar. Schieben Sie die INGR1-Gruppe der Input-Signatur in die OutputSignatur, so dass dort die Felder F1-F4 ebenfalls entstehen.
Erstellen Sie jetzt ein neues Mapping MP_Pluggable.
Ziehen Sie die Tabelle WH_Transaktionen in die Editor-Flche und aus der Palette unter dem
Punkt unter dem Punkt Pluggable Mapping den Operator Pluggable Mapping.
Jetzt erhalten Sie eine Liste ber die Sie die bestehenden Pluggable Mappings selektieren
knnen. Whlen Sie das vorher erstellte CT.
Verbinden Sie die ersten 4 Spalten von WH_Transaktionen mit dem INGRP1-Bereich des
Pluggable Mappings.
Fr den Ausgabebereich erzeugen Sie eine neue Tabelle WH_OUT und schieben Sie den
Pluggable Mappings-OUTGRP1-Bereich dorthin.
Erzeugen Sie diese neue Tabelle in dem Modul WAREHOUSE (-> Create And Bind -> Create
in...).
Generieren Sie das neue Mapping und die neue Tabelle, und testen Sie es.

Das Mapping zum Testen der Pluggable Mappings

Sehr viel ist mit diesem Mapping noch nicht gewonnen. Sie knnen aber jetzt Zug um Zug in dem
Pluggable Mapping nderungen vornehmen, und diese austesten.

Fgen Sie jetzt in dem Pluggable Mapping fr das Feld F1 im Ausgabebereich eine Expression
ein, in dem SYSDATE anstelle des Eingangswertes geladen wird (to_char(sysdate)).

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

211/299

Wenn Sie das Mapping MP_PLUGGABLE jetzt neu generieren, werden Sie keinerlei Vernderung in
den Daten feststellen.
Sie mssen erst das Pluggable Mapping in dem Mapping mit der neuen Version synchronisieren
(-> rechte Maustaste auf den Kopf des Operators -> Synchronize -> Inbound ...

Genderte Pluggable Mappings mssen mit den Mappings, in denen sie verwenden synchronisiert
werden.
nderungen, die Sie in dem Pluggable Mapping durchfhren werden, implizit auch in dem Repository
abgespeichert. Definieren Sie allerdings in dem Pluggable Mapping Objekte wie Tabellen oder
Textfiles, so mssen Sie diese mit den Objekten in den Modulen synchronisieren (Outbound).
Diese einfache bung sollte Sie mit dem Umgang vertraut machen und besonders auf die
Notwendigkeit der Synchronisation hinweisen. In einem Pluggable Mapping sind alle Operatoren
mglich wie Sie sie auch in einem Mapping verwenden knnen. Die Unterschiede liegen lediglich in
der Tatsache, dass Pluggable Mappings eine Aufrufparameter- und eine Rckgabeleiste haben.
Pluggable Mappings mssen nicht mit einer Aufruf oder Rckgabe-Parameterleiste versehen werden,
wie das Beispiel im folgenden Abschnitt zeigt. Dort besteht der Output des Pluggable Mappings in
dem Beschreiben einer Textdatei.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

212/299

Anwendungsszenario Generisches Protokoll


Das folgende umfangreichere Beispiel zeigt Anwendungsmglichkeiten und darber hinaus spezielle
Techniken, die auch in anderen Fllen einsetzbar sind.
Anforderung:
Es ist ein Mapping-Baustein zu erzeugen, der an beliebigen Stellen in anderen Mappings zum
Schreiben von Protokolldateien verwendet werden kann. Das Protokoll soll beliebig viele Textspalten
aufnehmen knnen und eine unterstrichene Kopfzeile mit Datum und Uhrzeit enthalten.

Format der Protokolltabelle


In dem Beispiel werden folgende Aspekte behandelt:
Erzeugen von zustzlichen Stzen mit Hilfe von Konstanten und dem SET-Operator und
DUAL
Verwenden des Sorter-Operators
Verwenden des Set-Operators (UNION)
Implizite Typkonvertierung

Bei der Planung des Pluggable Mappings sind mehrere Aspekte zu realisieren:
1. Wie kann die Aufrufschnittstelle so generisch gehalten werden, dass das Mapping auch mit einer
unterschiedlichen Anzahl Parameter und unterschiedlichen Feldtypen arbeitet?
2. Wie knnen zustzliche Kommentare (z. B. beschreibende Kopfzeilen) in den Datenfluss so hinein
generiert werden, dass sie immer an erster Stelle stehen.
3. Wie kann zwischen dem aufrufenden Mapping und dem Pluggable Mapping eine Kommunikation
statt finden, so dass neben den eigentlichen Stzen auch noch andere Verwaltungsinformationen
bergeben werden (z. B. Mapping-Name etc.).
Zu dem ersten Punkt flexible Input-/Output-Schnittstelle
Pluggable Mappings knnen in ihrer Aufruf- und Rckgabeschnittstelle Parameter besitzen, die von
den aufrufenden Mappings nicht verwendet werden mssen. Man kann also eine Reihe von
Parametern vorsehen, die nicht immer von jedem Mapping benutzt werden mssen. Das passt auf
unsere Anforderung, denn wir erstellen eine generische Protokoll-Routine, ber die Stze mit einer
unterschiedlichen Anzahl von Feldern zu schreiben sind.
Bleibt das Typen-Problem. Hier knnen wir nicht immer wissen, welche Feldtypen die aufrufenden
Mappings fr ihre Parameter mitgeben. Hier hilft ein Trick. Dem spteren Text in der Textdatei, wird es
gleichgltig sein, von welchem Typ die Strings sind. Ein Text kennt keine Feldtypen. Deswegen
definieren wir die gesamte Aufrufleiste des Pluggable Mappings vom Typ varchar2. Bei dem Aufruf der
Komponente in dem spteren Mapping wird Oracle eine implizite Typkonvertierung vornehmen.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

213/299

Zu dem zweiten Punkt Erzeugen zustzlicher Stze (z. B. Kopfzeilen)


Whrend die eigentlichen Stze ber die Input-Schnittstelle des Pluggable Mappings angeliefert
werden, gibt es fr zustzliche Informationen wie Kopfzeilen zunchst keinen Input. Da die Mappings
letztlich in SQL berfhrt werden und fr jeden zu schreibenden Datensatz in einem Zielobjekt eine
Quellinformation existieren muss, mssen wir eine solche Quelle simulieren. Das scheint zunchst ein
Problem bzw. ein Stolperstein in der mengenorientierten Verarbeitungslogik des SQL zu sein.
Ist es aber nicht. Wir knnen mit der DUAL-Dummy-Tabelle Stze simulieren, die in Wirklichkeit gar
nicht da sind. Um das zu verstehen, sollte man sich einige Prinzipien von OWB vergegenwrtigen:

Wenn irgendwo Stze weitergereicht werden, kann man sowohl mit dem Operator
CONSTANT als auch mit einer EXPRESSION beliebige zustzliche Felder in einer
Zielstruktur generieren.
Diese zustzlich generierten Felder mssen nichts mit einer Quelltabelle zu tun haben. Es
ist mglich, dass das Zielobjekt nur die zustzlich generierten Felder aufnimmt und keine
einzige Information von dem eigentlichen Quellobjekt.

Betrachten wir uns das folgende Test-Mapping: Es gibt eine Quelltabelle ZAHL mit nur einem Feld
(NR) und eine Zieltabelle ZIEL_TABELLE mit drei Feldern. Die Verbindung luft ber einen
Expression-Operator, der im Ausgabebereiche drei Felder besitzt. Die Information in allen drei Feldern
entsteht in diesen Expression-Feldern entweder ber eine Funktion (sysdate) oder konstante Werte.
Das Feld NR im Eingabebereich der EXPRESSION luft ins Leere und wird durch die Ausdrcke des
Ausgabebereichs nicht verwendet.
Das einzige, was von der Quelltabelle verwendet wird, ist die Anzahl ihrer Stze. Denn genau so oft
werden die Expression-Ausdrcke ausgelesen und in die Zieltabelle geschrieben.

Test-Mapping zum Simulieren von Werten


Letztlich entsteht durch OWB folgendes SQL:
INSERT
/*+ APPEND PARALLEL("ZIEL_TABELLE") */
INTO
"ZIEL_TABELLE"
("TAGESDATUM", "FREIER_KOMMENTAR", "BELIEBIGE_ZAHL")
(SELECT sysdate,
'Das ist ein Text',
123456 FROM "ZAHL"
Bei dieser Konstruktion war zumindest noch eine Quelltabelle ntig, um einen triggernden Input zu
liefern. Geht das auch ohne eine Quelltabelle? Fr die Kopfzeilen in der Ausgabeliste, wollen wir nicht
die Tabelle Zahl verwenden, weil eine solche Tabelle in dem jeweiligen Zielschema vorhanden sein
muss. Wenn wir diese Tabelle einfach weglassen gibt es einen OWB-Fehler, der besagt, dass der
Expression-Operator nicht gengend Eingabeparameter besitzt.
Eine Lsung, die immer funktioniert ist die Verwendung der Tabelle DUAL, die in jeder OracleDatenbank-Umgebung vorhanden ist. Sie hat genau eine Zeile und eine Spalte und erfllt letztlich die
Kriterien, die wir hier brauchen. Doch es gibt noch weitere Mglichkeiten.
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

214/299

berlisten kann man OWB indem man eine Art Dummy-Input fr den Operator benutzt: z. B. eine
Konstante oder einen Aufrufparameter.
Konstanten haben den Nachteil, dass sie in dem spter generierten Code eine Deklaration nach sich
ziehen. Entsprechend sieht auch das SQL aus. Zur Qualifizierung der Konstanten enthlt das SQL
immer auch den Package-Namen.
Verwenden wird den Aufrufparameter, wie in dem folgenden Beispiel, und wir haben nur die Sorge,
das der INPUT_PARAMETER-Operator suggeriert, es gbe einen sinnvollen Wert, den es aber nicht
gibt.

Testmapping zum Simulieren von Werten


Welchen SQL-Code generiert OWB jetzt aus dieser Konstruktion?
INSERT
INTO
"WH_Testsatz"
("TAGESDATUM", "ZAHL", "TEXT")
(SELECT
sysdate,1,'A'
FROM
DUAL );
OWB erkennt das Fehlen von Eingabewerten und baut von sich aus die Dummy-Tabelle DUAL in den
Code ein.
In Ordnung. Dieses Verhalten knnen wir nutzen, um Kopfzeilen zu generieren. Weil wir Stze
generieren wollen, die anschlieen mit echten Tabellenstzen zusammen weiterverarbeitet werden
sollen, nutzten wir hierfr einen SET-Operator. Der SET-Operator hat 2 oder mehr INGRP-Bereiche.
Einen werden wir nutzen, um die eigentlichen Datenstze, die es zu schreiben gilt, aufzunehmen.
Weitere Eingabebereiche nutzen wir, um fr die Kopfzeilen Stze knstlich zu erzeugen. Wir brauchen
zwei Bereiche, einen fr eine Kopfzeile und eine fr einen Unterstrich.
Zu dem dritten Punkt (Kommunikation mit dem aufrufenden Mapping)
Diese Anforderung ist einfach zu lsen. Wir legen einfach die letzten Parameter der Input-Schnittstelle
als Kommunikationsfelder fest. Das was ber diese beiden Felder dem Pluggable Mapping bergeben
wird, kann man dort beliebig weiter verarbeiten.
Entsprechend sieht das Pluggable Mapping wie folgt aus:
ber eine Input-Schnittstelle (Felder F1-F5) werden Daten entgegengenommen. Die Feldnamen sind
beliebig, deswegen F1, F2 usw. In dem dargestellten Beispiel beschrnkt man sich auf 5 Felder. Das
knnen natrlich beliebig mehr sein. Die beiden letzten Felder nehmen den Namen des aufrufenden
Mappings und den Namen der Tabelle auf, fr die eine Protokolldatei geschrieben werden soll. Alle
Felder, werden ber eine Expression (mit SUBSTR()) in ihrer Lnge auf 30 Bytes begrenzt. In dieser
Expression findet auch eine implizite Typkonvertierung von mglichen number-Feldern auf varchar2Felder statt.
Ein SET-Operator nimmt die Stze aus dem EXPRESSION-Operator auf. In separaten
Eingabebereichen nimmt er auch den Text fr eine Kopfzeile und eine Strichlinie auf. Informationen
wie MAPPING-NAME und TABELLEN_NAME aus dem aufrufenden Mapping finden ebenfalls in der
Kopfzeile Platz.
(Wie haben noch ein Sortierproblem. Das wird weiter unten gelst).

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

215/299

Pluggable Mapping zum Erzeugen einer Protokoll-Textdatei mit Kopfzeile


Das aufrufende Mapping benutzt das Pluggable Mapping als wenn es eine Tabelle wre. Das folgende
Beispiel schreibt nur den Inhalt der Tabelle ARTIKEL in die Protokolldatei. Das reicht zur
Demonstration.

Mapping zum Testen der Reusable Mappings


Das Ergebnis ist diese Liste:

Beispiel-Output

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

216/299

Die Unterstriche zwischen den Ausgabefeldern, kann man ber die Eigenschaften der Textdatei
einstellen, das kann auch ein Semikolon sein.

Der Sort-Operator
Bei den ersten Tests in dem vorher behandelten Mapping wird man eine kleine berraschung erleben.
Kopfzeile und Strichzeile sind nicht an der Stelle in der Liste, an der man sie vermutet. Sondern Sie
stehen irgendwo, meist am Ende. Bevor wir die Stze der Textdatei bergeben, sollten wir sie
sortieren. Hierzu ist ein Sortierkriterium notwendig, ber das wir festlegen, welche Stze, die der SETOperator des Beispiels liefert, zuerst geschrieben werden. Wir erweitern alle Eingabebereiche des
Set-Operators um ein Feld SORTER und hngen den SORT-Operator an den Ausgang des SETOperators. Die zu sortierenden Werte legen wir als Konstante fest. In unserem Beispiel sind das
einfach die Buchstaben A, B, C (SORTER1=A, SORTER2=B, SORTER3=B. Fr jede Satzart steht ein
Buchstabe. ber die Properties des SORT-Operators (->Property Inspector) wird dann das SORTERFeld als Sortierkriterium bestimmt. Dieses Feld wird selbst nicht mehr an die Textdatei weitergegeben.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

13.

217/299

Runtime Kontrolle

Laufzeitergebnisse betrachten - Runtime Audit Browser


Die Laufzeitergebnisse knnen entweder in dem Control Center oder in dem Repository Browser
nachgeschaut werden. Wie man das macht, ist dort bereits ausgefhrt worden.

Laufzeitverhalten ndern Mapping Configuration


Die generierten Mappings kommunizieren ihre Laufzeitdaten mit dem Runtime-System, das sich in
dem OWB-Repository befindet und in das alle OWB-Mappings ihre Laufzeitdaten ablegen auch wenn
sie in einem anderen Datenbankschema laufen. Hier sind statistische Informationen (gelesene,
geschriebene, abgewiesene Stze usw.) ebenso gespeichert wie die fehlerhaften Stze.
Die Menge der gemerkten Meldungen kann enorm und damit performancekritisch sein. Deswegen ist
es sinnvoll, das "Trace-Verhalten" einzustellen.

Um Einstellungen vorzunehmen ffnen Sie die Configuration der Mappings (rechte Maustaste und
dann Configuration)

Hier stellen Sie den Runtime Parameter "Default audit level" ein auf die Optionen:
None: Es findet keine Protokollierung statt.
Statistics: Die die Anzahl gelesener, geschriebener, gelschter Stze usw. wird dokumentiert
Error Details: Im Fehlerfall dokumentiert OWB alle Stze, die zu einem Fehler gefhrt haben
inklusive der Fehlermeldung.
Complete: Alle Informationen und Stze werden dokumentiert, auch diejenigen, die nicht zu
einem Fehler fhrten. Das macht natrlich kaum Sinn.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

218/299

Einstelloptionen zur Intensitt des Auditings der Ladelufe


Den Erfolg der durchgelaufenen Mapping knnen Sie mit Hilfe des Repository Browsers in mit einem
messen und einsehen. Das ist bereits weiter oben dargestellt worden.
Die brigen Parameter sollten kurz vorgestellt werden:
Deployable:
legt fest, ob das Mapping generiert werden kann oder nicht.
Language:
PL/SQL oder ABAP. Diese Einstellung macht nur Sinn im Zusammenhang mit
der Genierung von Code zum SAP-Daten-Lesen. Hier kann neben der
Generierung von SAP ABAP-Programmen auch PL/SQL erzeugt werden. Mit
diesem PL/SQL-Code wrde man dann (in Ausnahmefllen) direkt auf die
SAP-Datenbank gehen.

Referred Calendar:
Bulk Size:

Zuweisung des Mappings zu einem definierten Scheduling-Kalender (siehe


Workflow und Prozesssteuerung).
Arbeitet nur in Verbindung mit dem Bulk Processing Parameter und im Rowbased Mode. Wenn Bulk Processing aktiviert ist, dann kann hier die Anzahl
zusammenhngend geladener Stze festgelegt werden. Diese Option zielt auf
das Bulk-Bind-Feature von PL/SQL.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

219/299

Analyze Table sample percentage:


Prozentanzahl der Stze einer Tabelle, die beim Analyze
verwendet werden sollen. Das ist ein historischer Parameter. Analyze sollte
nicht mehr genutzt werden. Stattdessen DBMS_STAT benutzen.
Commit Frequency:
Wirkt nur im Row-based mode und wenn Bulk-Processing nicht aktiviert ist.
Hier legt man fest, nach welcher Anzahl Stze ein Commit abgesetzt werden
soll.
Maximum number of errors:
Wirkt nur im Row-based mode. Die Verarbeitung bricht ab, wenn die
Anzahl an Fehlern erreicht ist, die hier gesetzt ist.
Default Operating Mode:
Steuerung Set Based / Row Based
Default Audit Level:
(siehe oben)
Default Purge Group: Die Jobs erhalten Namen, mit diesem Prfix. ber die Setzung des Prfixes,
kann man Lschgruppen festlegen.
ANSI SQL:
Wahl zwischen ANSI SQL und Oracle SQL-Syntax.
Commit Control:
Einstellung ber den Einsatz von Commit. Mit der Einstellung Automatic
Correlated ist es mglich ein Commit bis an das Ende der kompletten
Verarbeitung zu verlagern. Manual verhindert ein Commit in einem Mapping.
Automatic setzt ein Commit immer nach dem Abarbeiten einer Tabelle ab.

Analyze Table Statements:


Bei dieser Wahl generiert OWB ein Analyze Table Kommando. Das
sollte jedoch unter Oracle 10g nicht mehr verwendet werden.
Enable Parallel DML: Grundstzliche Option um parallele DML zu ermglichen.
Abgesetzt wird dann:
EXECUTE IMMEDIATE 'ALTER SESSION ENABLE PARALLEL DML';
Optimized Code:
Wirkt nur auf den Splitter-Operator. Wenn dieser Parameter gesetzt ist,
generiert OWB ein echtes Multiple Insert Statement ab der
Datenbankversion 9.
Authid:
Legt fest, welcher Benutzer generieren darf.
Use Target Load Order:
Hierber kann von auerhalb des Mappings gesteuert werden, ob die
explizit im Mapping festgelegte Schreibreihenfolge fr die Zieltabellen genutzt
wird oder nicht.
Error Trigger:
Angabe eines Error-Triggers, der im Fehlerfall aufgerufen wird.
Bulk Processing Mode: (siehe oben).
Generation Mode:
Einschrnkung auf einen bestimmten Modus.
Chunk:

Die Mglichkeit langlaufende Update-Operationen in mehrere Chunk-Teile,


also Arbeitspakete, zu zergliedern. Damit wird ein paralleles Abarbeiten dieser
komplexen DML-Operationen mglich.

Parallelisieren von UPDATE-Operationen mit CHUNKING


Ab OWB 11.2 knnen langlaufende Update-Operationen parallel durchgefhrt werden. Ist das
Chunking aktiviert, generiert OWB PL/SQL-Code, der in mehreren parallelisierbaren Threads die
Updates durchfhrt. Bei der Aufteilung in Chunks orientiert sich OWB an einer Key-Column einer
bestimmten Tabelle des jeweiligen Mappings. Tabelle und Key-Column, sowie die Anzahl der Chunks
legt man ber die Configurations-Einstellungen des Mappings fest.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

220/299

Zugriff auf die Laufzeitdaten des Repositories


Um zustzliche Verwaltungsarbeiten durchfhren zu knnen, oder um ein spezielles Fehler-Reporting
aufzusetzen, kann es sinnvoll sein die Laufzeitdaten des Repositories im Hintergrund abzufragen.
Hierfr stehen Public-Views in dem Repository-Schema zur Verfgung. Auf diese kann man auch aus
dem Zielschema heraus zugreifen.
Die Views sind ab OWB 11.2 in dem OWBSYS-Schema der Datenbank zu finden.
Die wichtigsten Views sind
ALL_RT_AUDIT_EXECUTIONS
ALL_RT_AUDIT_MAP_RUNS
In dem ersten View sind alle ausgefhrten Objekte enthalten. Das knnen Mappings aber auch
Prozesse der Workflowsteuerung sein. Der Schlsselbegriff ist hier die Execution_Audit_ID. Da sich
Prozesse und Mappings gegenseitig aufrufen knnen, ist eine rekursive Parent-/Child-Folge
abfragbar. Hierzu dient die Parent_Execution_Audit_ID.

View mit Laufzeitinformationen zu Prozessen

Meist will man jedoch einfach nur wissen, ob ein Mapping erfolgreich verlaufen ist oder ob eine
entsprechende Anzahl von Stzen verarbeitet wurde. Diese Information steht in dem View
ALL_RT_AUDIT_MAP_RUNS. Dieser View enthlt die Detaillaufzeitdaten zu den Mappings.
Beide Views sind ber die Execution_Audit_ID miteinander verbunden.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

221/299

View mit den Detail-Informationen zu den Mappings


Anforderung: Es wird eine Funktion gebraucht, die fr ein bestimmtes Mapping, prft, ob die
Anzahl der gelesenen Stze mit der Anzahl der geschriebenen Stze bereinstimmt.
Die folgende Funktion zeigt eine mgliche Lsung:
CREATE OR REPLACE FUNCTION "F_SEL_INS"("MAPPINGNAME" IN VARCHAR2) RETURN NUMBER
IS
act_RUN_ID number;
diff number;
BEGIN
select max(map_run_id) into act_RUN_ID
from all_rt_audit_map_runs where MAP_NAME = '"'||MAPPINGNAME||'"';
select number_records_selected - number_records_inserted into diff
from all_rt_audit_map_runs where map_run_id = act_RUN_ID;
return diff;
EXCEPTION
WHEN OTHERS THEN
RETURN 0;
END;
/

Beispielaufruf:
select f_SEL_INS('MP_ARTIKEL') from dual;

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

222/299

Zustzliches Fehlerlogging Error Trigger


Analog dem Exception-Handling von PL/SQL-Prozeduren kann aus einem Mapping heraus im
Fehlerfall auch eine Fehlerbehandlungsprozedur (Error Trigger) aufgerufen werden. Das ist eine
einfache PL/SQL-Prozedur mit folgender Aufrufschnittstellen-Spezifikation:
PROCEDURE <ErrorTriggerName> (p_sqlcode
IN NUMBER,
p_sqlerrm
IN VARCHAR2,
p_error_stmt IN VARCHAR2 DEFAULT NULL,
p_error_column IN VARCHAR2 DEFAULT NULL,
p_error_value IN VARCHAR2 DEFAULT NULL);

Die Prozedur wird dem jeweiligen Mapping ber die Configuration mitgeteilt.
Rechte Maustaste auf den Mappingnamen
Configuration

Eintrag Error Trigger


Die Prozedur muss existieren bevor das Mapping generiert wird.
Eine Beispielprozedur zum Dokumentieren von Fehlern in einer zustzlichen Tabelle kann wie folgt
aussehen:
Create or replace
PROCEDURE MP_COMMIT_ERROR (p_sqlcode IN NUMBER,
p_sqlerrm IN VARCHAR2,
p_error_stmt IN VARCHAR2 DEFAULT NULL,
p_error_column IN VARCHAR2 DEFAULT NULL,
p_error_value IN VARCHAR2 DEFAULT NULL) IS
PRAGMA AUTONOMOUS_TRANSACTION;
runtime_audit_id NUMBER := MP_COMMIT.get_runtime_audit_id;
BEGIN
INSERT INTO Fehler_Protokoll VALUES('MP_COMMIT',
runtime_audit_id,
p_sqlcode,
p_sqlerrm,
p_error_stmt,
p_error_value);
-- an autonomous transaction must be committed.
COMMIT;
END MP_COMMIT_ERROR;

Die Tabelle zum Aufnehmen der Fehler:


create table Fehler_Protokoll
(mapping_name varchar2(50),
runtime_audit_id number,
p_sqlcode varchar2(50),
p_sqlerrm varchar2(50),
p_error_stmt varchar2(255),
p_error_value varchar2(50));

Die Informationen in der Fehlertabelle knnen dann so aussehen.

Auszug aus der Fehlertabelle


Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

223/299

14.
Automatisieren der Ladeprozesse-Workflow
und Scheduling
Ladelufe mssen flexibel sein
Bislang haben wir einzelne Mappings erstellt, um die Aufgabenstellung dieses Szenarios zu lsen. Wir
htten alle Ladeschritte in einem einzigen Mapping unterbringen knnen. Allerdings ist diese
Vorgehensweise nicht sinnvoll. Sie gleicht der Spaghetti-Code-Programmierung, bei der nur der
Programmierer selbst noch durchblickt, und auch das nur noch wenige Tage nach Abschluss des
Projektes. Auerdem fehlt uns dann die ntige Flexibilitt, denn nicht immer mssen alle Mappings
zusammenhngend zu einem bestimmten Zeitpunkt laufen.
Struktur des Ladeprozesses
Durch eine mindestens 4-stufige Gestaltungsmglichkeit liefert der Ladeprozess die Flexibilitt, um
Ladelufe je nach Anforderung in mehreren Varianten ablaufen zu lassen. Die vier Stufen sind:
Transformationslevel: Wandeln und Laden auf Feldebene. Das sind Funktionen, wie sie z. B. als
Datenbankfunktionen bekannt sind (substr, Expression...) das entspricht den einzelnen Linien in einem
OWB-Mapping.
Mappinglevel: Wandeln und Laden auf der Ebene von einer oder mehreren Tabellen.
Zusammengefasst werden logisch zusammen gehrende Tabellen (technisch-funktionale
Zusammenhnge). Betrachtet werden z. B. alle Quelltabellen, die zum Fllen von ein oder mehreren
zusammenhngenden Tabellen (z. B. Parent / Child-Konfigurationen) ntig sind. Die tabellenbezogene
Verarbeitung wird komplett abgeschlossen, beinhaltet also Inserts/Update/Delete-Vorgnge.
Prozesslevel I: Mehrere Mappings sind zu Verarbeitungsfolgen zusammengeschlossen. Es entstehen
zustzliche, den Mappings bergeordnete Einheiten, die sich in ihrer inneren Struktur wenig
verndern, also nicht mehr manuell angefasst werden mssen. Zusammen gehren z. B. das Fllen
aller Dimensionen und Fakten eines Starschemas, das Aufbauen eines Data Marts usw.
Prozesslevel II: Diese Stufe sorgt fr die flexible Gestaltung des Gesamtprozesses. Die
Verarbeitungsfolgen des Prozesslevel I knnen hier flexibel kombiniert werden. Auf dieser Ebene ist
spontanes Umhngen einzelner Abfolgen mit graphischen Mitteln mglich. Auf diesem Level kann z.
B. im Verlauf des Warehouse-Betriebs entschieden werden, ob ein Starschema in einer Ladeperiode
gefllt oder ausgespart wird.

4 Ebenen der Datenflusssteuerung im Data Warehouse

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

224/299

Die Mappings sind in einem Workflow zusammenzufassen. Der Workflow wird ber
Modellierungseditoren graphisch dargestellt und technisch ber eine PL/SQL-Prozedur in der
Datenbank realisiert. Zur Lauffhigkeit ist die Installation des Workflow-Servers in der OracleDatenbank ntig (siehe hierzu die Hinweise zur Installation des Workflows). Der Workflow-Server wird
im Default in dem Schema OFW_MGR installiert.
Der WAREHOUSE BUILDER besitzt einen Prozess-Editor. ber diesen Editor erstellen Sie graphisch
den Prozess, indem Sie die bentigten Mapping durch Linien miteinander verbinden. Aus diesem
graphisch dargestellten Prozess erstellt der WAREHOUSE BUILDER durch den Generierungsprozess
die Workflowprozedur, der Deploy-Vorgang berfhrt die Prozedur in das Datenbankschema des
Workflow-Servers (OWF_MGR). Jetzt muss diese Prozedur nur noch hnlich wie die Mappings
gestartet werden.

Erstellen von Prozessen


(Dieses Kapitel wurde noch nicht von 11.1 auf 11.2 umgestellt. Die Funktionalitt ist die gleiche
geblieben. Aber die Fenster haben zum Teil andere Namen und sie befinden sich an einer anderen
Stelle. Man wird sich aber dennoch zu Recht finden.)
Wichtig zur Bearbeitung ist das Structur-Fenster. Hier sieht man nicht nur die Struktur der jeweiligen
Objekte aufgelistet, sondern man kann auch diejenigen Eigenschafte markieren, die man ber den
Property Inspector verndern will.)
Das Arbeiten mit dem Prozess-Editor ist eine eigenstndige und von dem Erstellen der Mappings
unabhngige Aufgabe. Der Prozess-Editor hat ebenfalls eine Reihe von Operatoren. Hier nennt man
sie allerdings Aktivtten oder Activities. Zu Beginn sollten grundstzliche Dinge zur Erstellung von
Prozessen erklrt werden. Wir nutzen hierzu sehr einfache rudimentre Mappings.
Da das Ergebnis einer Prozessmodellierung in Form einer PL/SQL-Prozedur in einem
Datenbankschema landet, bentigen wir auch hier wieder ein Modul und zu diesem Modul, eine
Location, die auf das Workflow-Schema zeigt (OWF_MGR).

Definition von Prozessen

Erstellen Sie ein Modul mit dem Namen SZENARIO (-> rechte Maustaste auf Process Flow
Modules -> New). Sie werden aufgefordert eine Location anzugeben (LC_OWF_MGR).
Jetzt haben Sie die Mglichkeit Prozesspakete anzulegen. Alle Prozesse, die Sie spter in einem
Prozesspaket definieren, werden in dem generierten Konstrukt in einer PL/SQL-Package landen,
sie knnen sich also gegenseitig sehen und aufrufen. In dem ersten Beispiel geht es nur um die
grundstzliche Arbeitsweise des Workflows, die zu vergebenden Namen sind also belanglos.
Definieren Sie eine Gruppe mit dem Namen Prozesse (-> rechte Maustaste auf SZENARIO ->
New).
Und schlielich knnen Sie jetzt einen Prozess mit dem Namen P1 anlegen (-> rechte Maustaste
auf Prozesse -> New).

Es erscheint der Prozess-Editor.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

225/299

Prozess-Editor nach dem ersten Aufruf


Der Prozess-Editor ist zwar auf den ersten Blick hnlich aufgebaut, wie der Mapping-Editor, hat jedoch
an einige Stellen wichtige Unterscheidungsmerkmale. Im rechten Bereich gibt es wieder die
Arbeitsflche, in der alle Aktivitten Platz finden. Auch er hat eine Component Palette mit den
mglichen Aktivitten. Diese sind unterschieden in Utility- / OWB specific- und Control-Activities.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

226/299

Die Operatoren des Workflows auf einen Blick


Es gibt auch ein Structur-Fenster, das die Struktur der in der Arbeitsflche selektierten Aktivitten
anzeigt.

Object Details- Fenster


Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

227/299

Beachten Sie, dass in bestimmten Fllen wie z. B. bei der Verwendung von Variablen in dem Structur Fenster auch zustzliche Objekte angelegt werden knnen. Hierzu nutzen Sie das Plus-Zeichen im
Kopf des Fensters
.

Explorer-Fenster mit der Option Selected Object

Das erste Beispiel einfache Workflows


Zum Kennenlernen der Mglichkeiten erstellt man sich am besten sehr einfache Mappings, so dass
man bei dem Experimentieren nicht noch Gefahr luft, sich mit Fehlern in komplexen Mappings
herumschlagen zu mssen.
Zunchst helfen zwei einfache Mappings M1 und M2.

Startmapping M1
Erstellen Sie diese Mapping entsprechend der Graphik.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

228/299

M1: Ziel ist eine Tabelle T1. Dort wird ein Aufrufparameter in F1 und eine Zeitangabe ber eine
Konstante (Wert: TO_CHAR(sysdate,'DD.MM.YYYY::HH24:MI:SS')) abgelegt. Pro Lauf entsteht nur
ein Satz. Fr sptere Tests ist ein Ausgabeparameter definiert. Belegen Sie den Aufruf-Parameter mit
einem Default-Wert z. B. A. Das erspart Ihnen unntige Parameter-Eingaben.
M2: Das Mapping M2 ist noch einfacher. Es bernimmt die Stze von T1 und schreibt sie in die
Tabelle T2.

Mapping M2.

Erstellen Sie den ersten Workflow, indem Sie in dem Projects Navigator beide Mappings M1 und
M2 selektieren und in die Process-Flow-Editor-Flche mit Drag And Drop verschieben.

Wenn Sie die Maus ber die Aktivitten-Objekte fhren, ndert sich die Mauszeigerform zur
Pfeilform. Jetzt knnen Sie mit der gedrckten linken Maustaste Verbindungen ziehen von der
Startaktivitt bis zur Aktivitt M2 und dort den Knopf wieder loslassen. Es sollte eine
Verbindungslinie erscheinen. Man nennt diese Linien Transition.

Prozess P1
Ihr Prozess ist jetzt schon fertig. Er muss noch generiert und getestet werden.
Das machen Sie in dem Control Center unter der Location, die Sie fr das Workflow-Schema
OWF_MGR definiert und Ihrem Prozessmodul zugewiesen haben.
Im Ergebnis stellen Sie fest, dass beide Mappings nacheinander aufgerufen wurden.
Der Execution Schedule- Report zeigt Ihnen:

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

229/299

Monitoring des Prozesses ber den Repository Browser


AND

und FORK

Dieses einfache Beispiel kann beliebig erweitert werden.


Erstellen Sie das weitere Mapping M3, in dem die Stze der Tabelle T1 in eine neue Tabelle T3
kopiert werden.

Mapping MP3
Sie knnten dieses Mapping in den bestehenden Prozess hinter das Mapping M2 hngen. Wir bauen
jedoch noch zustzliche Steuerelemente ein und zwar das gezielte parallele Starten (FORK) und die
AND-Aktivitt.
Erstellen Sie einen neuen Prozess P2.
Ziehen Sie die 3 Mappings M1, M2 und M3 in die Editor-Flche. Ordnen Sie M1 und M2
bereinander und M3 rechts daneben an.
Ziehen Sie jetzt aus der Palette die Fork und die AND- Aktivitt hinzu.
Ordnen Sie alle Aktivitten wie auf dem zugehrigen Bild an und verbinden Sie mit den ntigen
Transition-Linien, wie in dem Bild gezeigt.

Prozess P2
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

230/299

Generieren und Testen Sie den Prozess.

(Beachten Sie, dass das Control Center jetzt beide Prozesse neu erzeugt. Alle Prozesse, die Sie unter
dem Punkt PROZESSE abgelegt haben, werden schlielich in ein Package hinein generiert).
Durch die Fork Aktivitt starten M1 und M2 parallel. Grundstzlich arbeitet die Datenbank schon
parallel. Man wird also durch diese Steuerung keinen Performancegewinn erzielen. Man hat jedoch
die Mglichkeit fr einen gemeinsamen, gesicherten Abschluss zu sorgen, denn durch die ANDAktivitt wird garantiert, dass M3 erst startet, wenn M1 und M2 abgeschlossen sind.
Schleifen bilden
Fr bestimmte Aktivitten ist es sinnvoll, Aktivitten mehrmals durchzufhren. Eine File ExistAktivitten soll z. B. fr unterschiedliche Verzeichnisse mehrfach durchlaufen werden, bis eine
passende Datei wirklich gefunden wurde.
Zwei Arten von Schleifen stehen zur Verfgung:
1. WHILE-Schleife
fr Wiederholungen mit Boolschen Abbruch-Entscheidungen (TRUE/FALSE)
2. FOR-Schleife

fr zhlbare Abbruch-Kriterien, bei denen eine ber eine Variable definierte

Anzahl Schleifendurchlufe absolviert wird.


In dem folgenden Beispiel soll das Mapping M1 10 mal durchlaufen werden.
Erstellen Sie einen neuen Prozess P3.
Fgen Sie die Mappings M1 und M2 und eine FOR-Schleife ein. An der FOR-Schleife hngt
bereits eine End-Loop-Aktivitt
.

Verbinden Sie alle Aktivitten entsprechend dem Bild (Bild zu dem fertigen Prozess P3).

Zur Ablaufsteuerung bentigen wir eine Variable, in der wir die Anzahl der Lufe so oft hochzhlen, bis
wir das Abbruchkriterium erreichen.
Eine Variable knnen wir nur ber das Structure - Fenster definieren.
Selektieren Sie in dem Baum den Ordner Variables.
Drcken Sie jetzt auf das Plus-Zeichen
im Kopfbereich des Structure - Fensters. Es entsteht
ein neuer Eintrag mit dem Namen Variable. Selektieren Sie dieses Objekt und Sie knnen in dem
Object Details-Fenster die Eigenschaften des Objektes verndern.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

231/299
Prozess P3

Setzen Sie die Eigenschaften der Variablen im Property Inspector auf


Name:
V_FOR_LOOP
Data Type: INTEGER
Literal:
false

Die Variable wird eine Zhlvariable deswegen integer.


Literal weist den spteren Generierungsprozess an, den verwendeten Ausdruck entweder in
Hochkommatas zusetzen oder den Ausdruck so zu belassen, wie er in das Feld geschrieben wurde.
Fr die korrekte Arbeitsweise des Prozesses ist die richtige Wahl des Literals wichtig. Feste Ausdrcke
wie z. B. Zahlenwerte brauchten keine Hochkomma, also Literal -> false. Weiter unten kommen jedoch
auch noch Ausdrcke wir Variable_Name + 1. Diese mssen in Hochkomma gesetzt werden, also
Literal -> true.
Jetzt mssen wir die Bedingung fr die FOR-Schleife festlegen.
Selektieren Sie mit der Maus in der Structure - Darstellung das Feld CONDITION fr FOR_LOOP.
Setzen Sie dann den Wert fr Value im Property Inspector auf:
CONDITION:
Value:
V_FOR_LOOP<10
Literal:
false

INITIAL_VALUE:
Value:
Literal:

1
true

NEXT_VALUE:
Value:
Literal:

V_FOR_LOOP+1
false

VARIABLE:
Binding:

V_FOR_LOOP

Generieren und Testen Sie den Prozess. In der Tabelle T1 mssten jetzt 9 Zeilen entstehen.

Das Ergebnis in der Tabelle T1


Wechselspiel von Variablen und Parameter
Mit einer kleinen nderung knnen wir ein mgliches Wechselspiel zwischen Variablen des Prozesses
und Input-Parametern der Mappings testen.
Das Mapping M1 verfgt ber einen Eingabe-Parameter, den wir in dem Mapping bereits mit dem
Zeichen A vorbelegt haben. Dieser Parameter soll jetzt durch den Wert der Schleifenzhlervariablen
durch Parameterbergabe fr jeden Schleifendurchlauf berschrieben werden.
Die Kommunikation mit den Mapping-Parametern (ob Input- oder Output) erfolgt ber das sogenannte
Binding.
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

232/299

Kopieren Sie den Prozess P3 und machen Sie daraus den Prozess P4.
Markieren Sie in dem Prozess P4 das Mapping M1.
In dem Structure - Fenster sehen Sie unter dem Mapping die mglichen Parameter, u. a. auch
den Parameter EINGABE_M1
Selektieren Sie diesen und es erscheinen die Eigenschaften des Parameters im Property
Inspector.
Jetzt knnen Sie fr Binding die Variable V_FOR_LOOP whlen. Diese Variable wird pro
Schleifenlauf hochgezhlt.

Generieren Sie den Prozess und Testen Sie ihn. In der Tabelle T1 sollten jetzt 9 Stze erscheinen,
in denen hochgezhlte Werte vorkommen.

Das Ergebnis in der Tabelle T1

Parameterbergabe von Mapping zu Mapping


In dem nchsten Beispiel soll ein Mapping Werte einem nachfolgenden Mapping bergeben. Dies
gelingt ebenfalls ber das Binding und mit Hilfe einer Variablen, die als Mittler zwischen den
Mappings fungiert.

Definieren Sie hierfr zunchst ein Testmapping M4, entsprechend der folgenden Darstellung.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

233/299
Mapping M4

Generieren Sie die neue Tabelle T4 und das Mapping M4.


Testen Sie das Mapping, bevor Sie den folgenden Prozess erstellen.

Das Mapping verfgt ber einen Eingabe-Parameter mit dem Namen M4_EINGABE.
Die Konstante ZEIT dient nur als Kontrolleingabe damit erkannt werden kann, wann die Zeile
geschrieben wurde.
In dem neuen Prozess bernimmt eine Variable den Ausgabewert des ersten Mappings und bergibt
den Wert an den Eingabeparameter des nachfolgenden Mappings.

Schema der Parameterbergabe von Mapping zu Mapping in Prozessen

Erstellen Sie sich einen neuen Prozess P5.


Fgen Sie die beiden Mappings M1 und M4 dort ein.
Positionieren Sie die beiden Mappings nebeneinander und verbinden Sie diese mit den TransitionLinien.
Definieren Sie eine Variable mit dem Namen V_M1_M4.

Prozess P5

In dem Structure - Fenster sind die beiden Mappings M1 und M4 aufgelistet. Unter M4 finden Sie
auch den Parameter M4_EINGABE
Selektieren Sie den Parameter. In dem Property Inspector knnen Sie unter Binding die zuvor
definierte Variable V_M1_M4 auswhlen.
Wiederholen Sie den Vorgang mit dem Parameter M4_Eingabe, indem Sie auch diesen mit der
Variablen zusammenbinden.
Generieren Sie den Prozess und testen Sie ihn.

In der Zieltabelle T4 erscheint ein Satz mit dem Wert, der als Default fr den Ausgabe-Parameter des
Mappings M1 festgelegt wurde.
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

234/299

Umgang mit Dateien - File Exists Aktivitt


Eine der hufigsten Quellen In Warehouse-Systems sind immer noch Textdateien. Diese liegen
irgendwo auf Servern oder werden mittels FTP angeliefert und letztlich zwischen Verzeichnissen hin
und her kopiert.
Das Nichtvorhandensein von Textdateien ist eine der hufigsten Ursachen fr Ladeabbrche im
produktiven Betrieb des Data Warehouse.
Hier hilft die File Exists Aktivitt.

Kopieren Sie sich die Textdatei FF_BESTELLUNG aus den Beispieldaten in ein Verzeichnis aus
dem Sie spter auch mit External Tables lesen knnen (nicht Voraussetzung, es ist nur ein Vorgriff
auf sptere bungen).
Erstellen Sie ein neues Prozess-Package BESTELLUNGEN.
Erstellen Sie innerhalb dieses Packages einen neuen Prozess B1.
Ziehen Sie die FILE_EXITS Aktivitt in die Editorflche.
Ziehen Sie zustzlich noch eine END_ERROR und END_WARNING Aktivitt in die Editorflche.
Verbinden Sie alle Aktivitten entsprechend dem Bild.

Mapping B1

Selektieren Sie die FILE_EXITS Aktivitt. Sie finden jetzt in dem Structure - Fenster unter das
FILE_EXISTS Objekt und die Mglichkeit eine Pfadangabe vorzunehmen. Markieren Sie das Feld
PATH und tragen Sie in dem Object Details Fenster unter Value die Ablagestelle Ihrer Datei ein.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

235/299

Optionen zum Ansteuern der Textdatei


ndern Sie jetzt die Zustnde der Transitions zwischen der FILE_EXITS Aktivitt und den beiden
Ausgngen des Prozesses.
Bei der Wahl der Conditions stellen Sie fest, dass sich die Optionen gendert haben. Sie knnen
zwischen
- MISSING,
- FILE_EXITS,
- END_ERROR
whlen. Daran erkennen Sie, dass die Bedingungen, fr die Weiterverarbeitung nach Abschluss einer
Aktivitt auch unterschiedlich ausfallen knnen.
Whlen Sie fr den Fehlerausgang die Option Missing und fr den Success-Fall die Option
FILE_EXISTS

Standard-Conditions fr Transitions, die aus der FILE EXITS Aktivitt weggehen

Generieren Sie den Prozess, und testen Sie ihn, in dem Sie abwechselnd die Datei z. B.
umbenennen.

Je nachdem, ob die Datei korrekt vorhanden ist oder nicht, wird der Prozess einen Fehler nach auen
melden oder nicht. Sie sehen das in dem Laufzeitprotokoll.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

236/299

Umgang mit externen Aufrufen Dateien File Exists Aktivitt


Das vorangegangene Beispiel lsst die Frage aufkommen, was zu tun ist, wenn die Datei nicht da ist.
Dann knnte z. B. ein Kopiervorgang die Datei beschaffen. Dazu sind Kommandoaufrufe in das
Betriebssystem durchzufhren. Die einfachste Variante hierfr ist das Aufrufen einer Kommando-Datei
(Stapel-/Batchdatei). Wir knnen auch den Kommando Interpreter CMD
(z. B. c:\windows\system32\cmd.exe) aufrufen und entsprechende Parameter anhngen.
Das einfachste Verfahren ist allerdings eine Batch-Datei mit den Kommandos zu erstellen und diese
einfach nur aufzurufen. Das hat den Vorteil, dass die auszufhrenden Kommandos unabhngig von
den einmal generierten Prozessen des Warehouse Builders verndert werden knnen.
Anforderung: Eine Datei soll dann kopiert werden, wenn sie nicht in einem angegebenen
Verzeichnis existiert.

Kopieren Sie den Prozess B1 und erstellen Sie daraus den Prozess B2.
Erstellen Sie sich neben dem Verzeichnis fr Ihre Testdaten, das bereits existiert noch ein zweites
Verzeichnis Testdaten2, aus dem heraus Sie die Datei kopieren knnen, wenn sie noch nicht
existiert.
Erstellen Sie sich eine Batch-Datei RUN.BAT zum Kopieren mit folgendem Inhalt:

copy D:\Szenario\Testdaten2\*.* D:\Szenario\Testdaten

Ergnzen Sie jetzt den Prozess um die Aktivitten: USER_DEFINED und eine zweite
FILE_EXISTS Aktivitt und ordnen Sie die Objekte wie in dem folgenden Bild:

Prozess B2 Absetzen Betriebssystem-Kommandos und File_Exist


Die Transitions in dem Bild sind durchnummeriert. Sie besitzen die folgenden Bedingungen:
0: leer
1: EXISTS
2: MISSING
3: leer
4: leer
5: MISSING
6: EXISTS
7: leer

Die Aktivitt USER_DEFINED besitzt unter COMMAND den Aufruf der Batch-Datei. Alle anderen
Parameter sind leer. (-> Selected Objects).

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

237/299

Aufrufsteuerung der Batch-Datei


In diesem Prozess ist eine Aktivitt END_WARNING eingebaut, weil der Warehouse Builder nach den
FILE_EXISTS Aktivitten immer eine unbedingte Transition erwartet. Dies ist eine
Sicherheitsmanahme dafr, dass ein Prozess auch immer zum Ende kommt.

Generieren Sie den Prozess und testen sie ihn indem Sie die Textdatei aus dem einen Verzeichnis
lschen und aus dem anderen Verzeichnis kopieren lassen.

Ergebnis-Protokoll des Laufs


Security von externen Aufrufen freischalten
Achtung: Das Aufrufen von externen Prozessen und Programmen ist geschtzt. Damit dieses
funktioniert muss man in einer OWB-Properties-Datei einen Parameter freischalten:
Das Verzeichnis .
.owbhome..\owb\bin\admin und hier
die Datei:
Runtime.properties.
Hier muss am Ende der Datei folgendes stehen:
#
# FTP, Shell and SQLPlus operator are disabled by default
#
property.RuntimePlatform.0.NativeExecution.FTP.security_constraint = NATIVE_JAVA
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

238/299

property.RuntimePlatform.0.NativeExecution.Shell.security_constraint = NATIVE_JAVA
property.RuntimePlatform.0.NativeExecution.SQLPlus.security_constraint = NATIVE_JAVA

Aufrufen von SQL Plus aus einem Prozess

SQL Plus-Aufrufe stellen die einfachste Variante dar, individuelle Aktivitten in der Datenbank
durchzufhren und dabei einen direkten Kontakt zu allen Datenbank-Objekten zu haben.
ber die Aktivitt SQLPLUS kann man eine SQL*Plus Session im Hintergrund starten und alle
Datenbank-Kommandos absetzen, die ber SQL*Plus mglich sind.
In dem folgenden Test werden wir eine native INSERT-Anweisung durchfhren und zustzlich eine
Prozedur aufrufen.
Erstellen Sie hierfr zunchst eine kleine Hilfstabelle:
CREATE TABLE T (F1 varchar2(500));

Und eine Prozedur:

CREATE OR REPLACE PROCEDURE P_INSERT_T(AUFRUF IN VARCHAR2)

IS

BEGIN
INSERT INTO T VALUES (Aufruf) ;
COMMIT ;
END;
/
Beide Objekte knnen Sie natrlich auch mit dem Warehouse Builder erzeugen. Oder den Code oben
mit Cut / Paste in SQL Plus absetzen.

Erzeugen Sie jetzt einen neuen Prozess mit dem Namen P_SQLPLUS.
Ziehen Sie die Aktivitt SQLPLUS in die Editorflche und verbinden Sie diese mit dem Start- und
End-Punkt.
Selektieren Sie die Aktivitt SQLPLUS, so dass Sie unter dem Explorer-Fenster und Selected
Objects die Eigenschaft SCRIPT anwhlen knnen.
Sie knnen jetzt unter Object Details und Value ein Fenster ffnen, um die SQLPLUSKommandos abzusetzen.
Tragen Sie in dieses Fenster den folgenden Code ein:

insert into t values ('Dies ist ein Text') ;


begin
p_insert_t('Aufruf von der Prozedur') ;
end ;
/
exit

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

239/299

Prozess zum Aufruf von SQL Plus und Beispielkommandos


Es fehlt jetzt noch die Information, unter welchem Benutzer SQLPlus gestartet werden soll. Das
steuern Sie ber die Eigenschaften (Configure) des Prozesses.
Selektieren Sie dazu mit der rechten Maustaste den Prozess und ffnen Sie die Configuation
Properties.
Unter den SQL Plus-Eintragungen stellen Sie unter Deployed Location die Location des
Zielschemas ein. Also diejenige Location unter der SQL Plus gestartet werden soll. Damit sind
auch die Login-Informationen fr SQL Plus festgelegt.

SQL Plus-Konfiguration

Generieren Sie den Prozess und testen sie ihn. Das Ergebnisprotokoll msste so aussehen:

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

240/299

Ergebnisprotokoll

Parameterbergabe an SQL Plus


SQL Plus-Aufrufe knnen ber Parameter dynamisiert werden.
Anforderung:

Eine Skript-Datei mit SQL-Befehlen soll ber Parameteraufrufe dynamisch

gehalten werden.

Zur Lsung der Aufgabe legen Sie zunchst ein Script mit parametrisierten SQL-Befehlen an:

File: SQLSCRIPT
insert into t values ('Der Wert des ersten Parameters ist &1') ;
insert into t values ('Ein zweiter Parameter ist &2') ;
exit

Erzeugen Sie einen neuen Prozess mit dem Namen P_SQLPLUS_DYN.


Ziehen Sie die Aktivitt SQLPLUS in die Editorflche und verbinden Sie diese mit dem Start- und
End-Punkt.
Selektieren Sie die Aktivitt SQLPLUS, so dass Sie unter dem Explorer-Fenster und Selected
Objects die Eigenschaft PARAMETER_LIST anwhlen knnen.
Sie knnen jetzt unter Object Details und Value einen Parameterwert eingeben
Geben Sie folgenden Wert ein:

?${Target.User}/${Target.Password}@${Target.URL}?@C:/sqlscript.sql?value 1?value 2?
Diese Eingabe sollte erlutert werden.
Zunchst ein paar grundlegende Eigenschaften. Parameter-Aufrufe werden durch Oracle Warebuilder
interpretiert. Bei dieser Interpretation sind Hilfsmittel mglich, z. B. das ?. Dieses Fragezeichen dient
als Separator. Es wird von OWB als solcher erkannt, weil es als erstes Zeichen des gesamten
Ausdrucks vorkommt.
Damit haben wir schon die Mglichkeit einen Ausdruck zu unterteilen, was wichtig ist, wenn Aufrufe
aus mehreren Teilen bestehen.
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

241/299

Jetzt zu dem SQL Plus-Aufruf: Ein SQLPlus-Aufruf auf der Kommando-Ebene hat die folgende Form:
SQLPLUS user/Passwort@sid @script.sql
Der String SQLPLUS wird von OWB intern gesetzt. Dazu mssen wir also nichts mehr tun.
User, Passwort und SID sind Informationen, die ber die Locations bereits gesetzt sind, d. h. hier
bentigen wir OWB-Variablen, um diese Daten abzufragen. Das sind Eigenschaften des internen
OWB-Objektes TARGET, also:
Target.User
Target.Password
Target,URL
Die Variablen werden ber das $-Zeichen gekennzeichnet also:
${Target.User}
${Target.Password}
${Target,URL}
Werte, die das System einfach durchreichen soll, sind mit dem Ausdruck value gekennzeichnet.
Jetzt muss der Ausdruck nur noch zusammengesetzt werden, so wie oben geschehen.

Prozess P_SQLPLUS_DYN und Festlegung der Parameterliste


Generieren Sie den Prozess und testen sie ihn.
Achten Sie darauf den Prozess richtig zu konfigurieren. Es muss die Location des Zielschemas
angegeben werden, so wie das in dem Beispiel zuvor bereits geschehen ist.
Das Ergebnisprotokoll msste so aussehen:

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

242/299

Die Ergebnis-Log-Information

Aufrufen von Prozessen und Mappings Scheduling


Scheduling mit OWB-fremden Schedulern
Warehouse-Prozesse laufen selbstndig oder als Folge von Ereignissen. Das manuelle Starten ist nur
in Ausnahmefllen blich. In den Rechenzentren von Unternehmen existieren oftmals SchedulingProgramme, die an einer Stelle zentral alle Jobs starten, die den tglichen Produktionsbetrieb der
Softwarelsungen ausmachen. In dieser Weise knnen auch Warehouse Builder Mappings bzw.
Prozesse gestartet werden. Zum Aufrufen hierfr gibt es Hilfsroutinen, die bei der Installation von
OWB mit in ein Unterverzeichnis kopiert werden.
Sehen Sie hierzu das Unterverzeichnis: OWBHOME\OWB\RTP\SQL.
Hier sind es die Skripte
sqlplus_exec_template.sql und
sqlplus_exec_background_template.sql
Diese Skripte sind selbsterklrend. D. h. Sie knnen sie in einen Editor laden und den Hinweisen im
Kopfbereich der Scripte folgen.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

243/299

Verzeichnis mit Verwaltungsskripten des OWB, u. a. Hilfsscripte zum Aufrufen mit separaten
Schedulern
Scheduling mit OWB
Der Warehouse Builder besitzt jedoch auch einen eigenen Scheduler.
Hierzu definieren Sie zunchst ein Scheduler-Objekt. Hier hinterlegen Sie seine
Gesamtgltigkeitsdauer und eine Wiederholerfrequenz mit der Prozesse oder Mappings aufgerufen
werden sollen.
Im zweiten Schritt weisen Sie Prozesse oder Mappings diesem Scheduler-Objekt zu.

Definieren Sie in dem Projects Navigator unter dem Auswahlpunkt Schedules ein ScheduleModule mit dem Namen S_Minuten_Takt und in diesem Modul das Schedule-Objekt S_MIN1. Bei
der Anlage des Moduls, werden Sie nach einer Location gefragt. Whlen Sie hier die Location
Ihres Zielschemas. Unter dieser Location generieren Sie spter auch das Schedule-Objekt.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

244/299

Anlegen von Schedule-Objekten

Ein Wizard startet. In dem Schritt 2 geben Sie die Zeitdauer an, fr die Sie Prozesse oder
Mappings starten wollen. Sollen Prozesse oder Mappings stndig gestartet werden, so mssen
die beiden grnen Hkchen entfernt werden. Whlen Sie hier die Uhrzeit, die in Ihrem Testbereich
liegt. Wenn Sie die Prozesse stndig starten, knnen Sie spter das Schedule-Objekt ber das
Control Center stoppen bzw. starten.

Das Festlegen von Start- und Endzeitpunkten einer Laufserie

In dem folgenden Schritt legen Sie die Hufigkeit der Aufrufe fest (monatlich, tglich, stndlich
usw.). Whlen Sie hier mintlich.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

245/299

Festlegen der Wiederholfrequenz


Das war die Definition. Jetzt knnen Sie diese Definition auf Mappings oder Prozesse anwenden.
Das soll hier mit Hilfe des Prozesses P_SQLPLUS_DYN aus dem vorigen Abschnitt geschehen. Sie
knnen jeden anderen Prozess oder jedes Mapping ebenfalls benutzen.

Selektieren Sie in dem Projects Navigator den Prozess P_SQLPLUS_DYN mit der rechten
Maustaste und ffnen Sie den Punkt Configuration.
Unter dem Hauptpunkt P_SQLPLUS_DYN finden Sie in dem rechten Bereich des Fensters
Referred Calendar.
Klicken Sie in das Feld mit den drei Punkten (...), um die Liste der zur Verfgung stehenden
Kalenderobjekten angezeigt zu bekommen.
Whlen Sie den Kalender S_MIN1
Generieren Sie jetzt das neue Schedule-Objekt ber das Control Center und starten Sie es so wie
Sie bislang Mappings und Prozesse gestartet haben.

Anzeige der geplanten Jobs

Sie sehen in dem rechten Bereich unter Control Center Jobs, drei Reiter. Whlen Sie den rechten
mit dem Namen Schedule. Jetzt sehen Sie den Schedule-Job.
Wenn Sie den Reiter Execution whlen sehen, dann die im Minutenabstand gestarteten Prozesse.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

246/299

Kontrolle ber alle Aufrufe, hier Aufruf eines Prozesses pro Minute

Stoppen von laufenden Workflow-Prozessen ber SQL*Plus


Manchmal kommt es vor, dass Prozesse der Workflow-Engine gestoppt werden mssen hierzu liegen
in dem Unterverzeichnis WF (OWB-Installations-Verzeichnis), Skripte, die in SQL*Plus abgesetzt
werden knnen.
Starten von SQL*Plus in Workflow-Schema ( Default OWF_MGR/OWF_MGR)
Herausfinden von laufenden Prozessen:
select item_type,item_key, end_date from wf_items where end_date is Null;
Ergebnis:
ITEM_TYP ITEM_KEY
-------- --------------------------------------WFERROR WF1
AUD_RULE WB_IK_20071206_143741_30917
WFERROR WF21
Beenden der laufenden Prozesse:
exec wf_engine.abortprocess('AUD_RULE','WB_IK_20071206_143741_30917');
PL/SQL procedure successfully completed.

Beenden der laufenden Prozesse:


exec wf_purge.items('AUD_RULE');
PL/SQL procedure successfully completed.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

15.

247/299

Debugger verwenden

(Diese Darstellung stammt noch aus dem OWB Release 10.2 bzw. 11.1. Die Funktionalitt hat sich
jedoch kaum gendert und die Darstellung kann daher bernommen werden).
Komplexere Mappings knnen mit einem Debugger analysiert werden. Im Rahmen des Debuggens
durchluft man satzweise jeden einzelnen Operator, kann den Lauf anhalten und kann sich die
Inhalte des aktuellen Satzes anschauen. Breakpoint halten an, Watchpoints lassen in die
Satzinhalte schauen. Diese Punkte definieren Sie. Damit das gelingt, simuliert OWB eine DebuggingUmgebung im Hintergrund. Wenn Sie zum ersten Mal das Debugging durchfhren, wird OWB diese
Umgebung initialisieren. Dazu gehren auch Testdaten, die entweder aus den tatschlichen Daten der
betroffenen Tabellen gewonnen werden, oder Sie knnen selbst welche definieren.

Testen Sie das Mapping MP_TRANSAKTIONEN_3_SPLITTER und ffnen Sie das Mapping
Wenn Sie jetzt noch nicht die Menleiste des Debuggers sehen, schalten Sie diese ber den
Menpunkt Window ein.

Hier zunchst eine kurze Erluterung zur Menleiste. Sie starten den Debugger ber diese Leiste mit
dem linken Knopf. Es ist der Knopf, der als einziger farbig unterlegt ist. Alle anderen sind grau, wenn
der Debugger nicht aktiv ist.

Die Menleiste des Debuggers

Starten Sie den Debug-Vorgang.


Ein Fenster erscheint, das Sie auf die Situation der Testdaten aufmerksam macht. OWB analysiert die
Situation und stellt fest, dass als einzige Testdaten die Tabellen des Mappings selbst vorliegen. Er
zhlt die Anzahl Stze in diesen Tabellen und warnt Sie, wenn zu viele Stze vorhanden sind, wie in
diesem Fall. Die Anzahl Stze werden wir nachher reduzieren.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

248/299

Warnung bei zu vielen Teststzen


Klicken Sie auf Yes, um den Vorgang fortzufhren. Sie erhalten eine Darstellung mit zwei
zustzlichen Fenstern. Dem Debug Info und Debug Data Fenster.
Wenn Sie gefragt werden, bei welcher Tabelle Sie mit dem Debuggen beginnen wollen, dann legen
Sie die Tabelle Bestellung fest. In dem Debug Info-Fenster knnen Sie immer mit verfolgen, was der
Debugger gerade macht. Bevor Sie weitermachen sollte dort die Meldung stehen: Successful debug
initialization!

Situation nach dem ersten Starten des Debuggers


Bevor wir das Testen starten, sollten wir die Testdaten einschrnken.
Whlen Sie dazu in dem Debug Info-Fenster den Reiter Test Data.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

249/299

Festlegung der Teststze

Selektieren Sie in dem neuen Fenster die Tabelle BESTELLUNG und drcken Sie auf Edit.
Aktivieren Sie in dem neuen Fenster die Checkbox Row Count. Damit schrnken Sie die Anzahl
der Bestellstze auf 100 ein.

Einschrnkung der Bestellstze auf 100

Drcken Sie auf OK und Sie erhalten die Information, dass sich die Teststze gendert haben.
Sie mssen reinitialisieren. Drcken Sie dazu den entsprechenden Knopf in der Kopfleiste.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

250/299

Sie knnen das Modifizieren der Testdaten beliebig oft wiederholen. Sie knnen auch neue Teststze
erstellen.

Markieren Sie jetzt die Tabelle WH_TRANSAKTIONEN und drcken Sie danach den Button Set
Breakpoint
.

Setzen Sie noch einen Breakpoint auf die Zieltabelle WH_TRANS_PRIVAT.


Starten Sie jetzt das Debuggen mit Resume

Der Debugger startet und wird an dem ersten Breakpoint anhalten. Jetzt haben Sie die Mglichkeit
ber den Button Watchpoint in die einzelnen Tabellen hineinzuschauen. Selektieren Sie dazu immer
zunchst das Objekt und dann den Button Set Watch Point. In dem Fenster Debug Data sehen Sie
das Ergebnis des Watchpoints.

Watchpoint-Ergebnis hier Artikel bei Breakpoint WH_TRANSAKTIONEN


Drcken Sie jetzt auf die Option Next Step
in der Debug-Menleiste.

Der Debug-Lauf fhrt bis zum Splitter fort. Hier ist eine Entscheidung zu treffen. Whlen Sie den
Splitterweg fr Privatkunden. Dort haben Sie den nchsten Breakpoint gesetzt.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

251/299

Auswahl im Splitter
Danach hlt der Debug-Vorgang auf der Zieltabelle WH_TRANS_PRIVAT an und auch hier knnen
Sie Watchpoints setzen. Der Vorgang ist danach abgeschlossen.
Diese kleine bung zeigt bereits, dass es wenig Sinn macht das Debuggen mit sehr vielen Stzen
durchzufhren. Es ist notwendig die Anzahl der Stze einzuschrnken und sogar zur Not eigene
Testflle zu erzeugen.
Wiederholen Sie den Vorgang mit der Bestelltabelle in dem Sie ber den Testdatendialog die
Anzahl zunchst auf 5 begrenzen und dann ber die Option Edit im oberen Bereich die Zeilen
zum Editieren freischalten.

Erstellen von Teststzen


ber die Optionen Clear All Row und Add Row knnen Sie auch vollstndig neue Stze schreiben.
Achtung: Je nach dem welche Einstellung Sie whlen, versucht der Debugger Stze wieder in
die Originalquelltabellen zurckzuschreiben. Dabei knnten auch Daten verloren gehen.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

252/299

Erstellen von Teststzen

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

253/299

16.
Aufbauen von Skripten zum automatisierten
ndern der Modelle (OMB Plus Skriptsprache)

Die OMB Plus Skriptsprache (Oracle Meta Base) steht seit dem OWB Release 9.2 zur Verfgung. Sie
wurde erstellt, um funktionale Eigenschaften des Warehouse Builder von der Bedienoberflche zu
entkoppeln. Tatschlich werden viele Bedienschritte, die der Benutzer ber die Oberflche durchfhrt,
zunchst an ein internes API weitergeleitet und erst von dort aus interpretiert und zur Ausfhrung
gebracht.
Dieses interne API kann auch ber die Skriptsprache OMB angesprochen werden. Die Vorteile liegen
auf der Hand: Schritte, die im Rahmen von ETL-Prozessen immer wieder neu entwickelt werden
mssen oder einfache Verwaltungsarbeiten wie das Validieren, das Generieren oder der DeployVorgang knnen automatisiert ber Batchaufrufe im Hintergrund gestartet werden. Dieser Einsatz ist
sinnvoll fr:
Regelmiges, automatisiertes Erstellen von Sicherungen.
Entladen/Beladen/Erstellen von Objekten, wenn diese Online zu viel Aufwand bedeutet.
Grere Lschaktivitten zum Bereinigen der Modelle.
Massenupdates von Attributinhalten z. B. Verwaltungsattribute bei berfhrungsarbeiten
(Test -> QA -> Produktion).
Offline Execution von Verwaltungsarbeiten wie z. B. Validate-Checks, Generierungen,
Deployments.
Durchfhren von Massenupdates bzw. typischen Wiederholungsaufgaben z. B. Hinzufgen von
Location-Informationen.
Und viele andere Beispiele, bei denen automatisiertes Bearbeiten aufwendige manuelle
Wiederholungsttigkeiten ersetzt.
Die OMB Plus Skriptsprache besteht aus zwei Sprachkomponenten:
1. Warehouse Builder API Kommandos
- Sie werden in den Skripten immer gro geschrieben. Ihre Syntax ist dem OMB Plus
Handbuch zu entnehmen, das mittlerweile ber 800 Seiten umfasst.
2. Der TCL Skriptsprache , die im UNIX-Umfeld hufig vorkommt.
(Siehe hierzu http://tcl.tk/ Auf dieser Webseite ist die genaue Beschreibung zu finden)
(Siehe auch die Datei Ein_TCL.pdf auf der CD. Dort ist eine deutschsprachige Einfhrung, die
ber das Internet von Holger Jakobs zur Verfgung gestellt wurde).
Sie knnen die Kommandos der Skriptsprache interaktiv mit dem Werkzeug OMBPLUS absetzen.
Hierzu rufen Sie OMBPlus ber die Startleiste auf:

Oder sie benutzen das OMBPlus Fenster des Design Centers:

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

254/299

OMB Plus-Kommando Eingabefenster des Design Centers


Beachten Sie, dass Sie sich in dem Fenster des Design Centers nur innerhalb der durch das Frontend
bereits geffneten Session bewegen knnen. Es gibt Aktionen (z. B. Metadatenmodellnderungen),
die in dieser Weise nicht mglich sind, weil sie das OWB Repository exklusiv fr sich beanspruchen.
Diese Aktionen gehen dann nur aus dem OMB Plus-Fenster heraus, wobei alle anderen OWB
Sessions geschlossen sein mssen.
Es gibt noch andere Mglichkeiten OMB Skript Kommandos abzusetzen, wie das folgende Bild zeigt.

Einsatzvarianten der OMB-Skriptsprache


Skriptbeispiele
(Skriptbeispiele befinden sich im Anhang))

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

17.

255/299

Metadatenmanagement im Data Warehouse

Metadaten
Alle Design Informationen des Warehouse-Systems sind als Metadaten in dem Warehouse Builder
Design Repository gespeichert. Diese Metadaten entsprechen dem Bauplan des Warehouse. Jedes
Objekt ist hier verzeichnet. Jede Abhngigkeit dokumentiert. ndert sich ein Objekt im
Entwicklungsprozess, so sind in den Metadaten die abhngigen Objekte zuerkennen, fr die
Auswirkungen zu erwarten sind.
Hintergrund:
Der Warehouse Builder erzeugt die Metadaten automatisch im Hintergrund. Jedes Hinzufgen eines
Operators in einem Mapping fhrt zu einem Hinzufgen des Operators in dem Metadatenmodell. Das
Metadatenschema ist selbst nach dem von der OMG (Object Management Group, WWW.OMG.ORG)
festgelegten Metadatenstandard CWM (Common Warehouse Metamodel) entworfen worden. In
seinem Inneren ist es mit XML-Mitteln beschrieben. Dadurch, dass es selbst als Mehrschichtenmodell
definiert ist, ist es flexibel erweiterbar. Das spielt zwar fr den Entwickler, der mit dem Warehouse
Builder arbeitet keine Rolle, er merkt kaum etwas davon. Aber es gibt ein beruhigendes Gefhl wenn
die in die Modelle investierte Arbeit ber einen allgemein anerkannten Standard abgesichert ist.
Das Metadaten Repository besitzt mehrere Mglichkeiten die beschreibenden Metadaten zu
bearbeiten, ein- und auszulesen oder auszuwerten. Hier eine bersicht:

Mglichkeit / Aktion

Hilfsmittel / Methode

Primre Verwendung

Bearbeiten und Erfassen der


Metadaten
Herausladen oder Einladen
ganzer Modelle ber das GUI

OWB GUI (Client Oberflche)

Bearbeiten von Modellen im


Batch
bzw. auf einer
Kommandozeilenebene.
Kommandos in Skriptdateien

Skriptsprache
OMBPlus

Entwicklung des WarehouseModells durch das Projektteam


- Archivierung
- Metadatenaustausch zwischen
OWB-Repositories
- Migration der Modelle ber
OWB-Releases hinweg
- Automatisiertes ndern der
Modelle.
- Integration des Warehouse
Builders
in
andere
Anwendungen (ERP-Systeme)
- Sich selbst pflegende Systeme
Schnittstellenprogramme
zur
Versorgung
anderer
Anwendungen

Direktzugriff auf Metadaten ber


andere
Programme.
Jede
Metadateninformation ist ber
ein Java-Programm abgreifbar
Zugriff
auf
bereitgestellte
Datenbankviews

Metadaten Import- / Export in


eine MDL-Datei von beliebigen
Modellteilen.
verwendet ber

Java API

SQL

Graphische Auswertungen

Metadaten Browser im Web

Auswertungen im XML-Format

XML-Schnittstelle
Datenbank

Selbst
entworfene
textbasierte Reports
- Einfache
Metadatenauswertungen
Metadaten Online Reporting
sowohl fr Entwickler als auch
fr Business-User
XML-basiertes Reporting
-

der

Auswirkungs-Analyse (Impact-Analyse)
Alle abhngigen Objekte, d. h. ber Beziehungen miteinander verbundenen Objekte, kann man sich
graphisch darstellen lassen.
ffnen Sie mit der rechten Maustaste das Kontextmen fr die Tabelle KUNDE.
Starten Sie hierber die Impact-Analyse fr diese Tabelle.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

256/299

Aufruf Impact-Analyse aus dem Projects Navigator


Die Darstellung muss etwas bearbeitet werden. Je nachdem, wie oft die Tabelle KUNDE in
unterschiedlich en Mappings benutzt wurde, erscheinen diese Verweise auch in der Graphik.
Die dicken Kstchen mit dem weien Kreuz stellen Mappings dar, die man durch einen Doppelklick
ffnen kann.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

257/299

Impact Analyse
Je nach dem, wie man etwas ffnet, kann das unbersichtlich werden. Man kann die Darstellung aber
zur Dokumentation und fr Ausdrucke nutzen.

Um etwas Ordnung in die Darstellung zu bekommen, kann man einzelne Objekte in Gruppen
zusammenfassen. Hierzu markiert man die Objekte, die man zusammenfassen will und nutzt die
Group Selected Objects - Funktion in der Kopfleiste des Fensters.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

258/299

Datenfluss-Nachweise
Will man die Datenflsse ber einzelne Felder hinweg verfolgen, muss man die Objekte aufklappen.
ber das Kontext-Men erhlt man sowohl Herknfte als auch Abhngigkeiten farblich markiert
dargestellt.

Graphisch abgesetzte Darstellung von Feldnamen, die den Datenfluss anzeigen

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

259/299

Diagramme ausdrucken
In fertigen Umgebungen kommen durchaus komplexere Auswertungen vor. Am Bildschirm wird es
schwierig sein. die einzelnen Abhngigkeiten dann noch zu erkennen.
Dann hilft das Ausdrucken. Darber sind sehr brauchbar Ergebnisse zu erzielen. ber die Selektion
Print Setup sollten Sie zunchst das Ausdrucken auf mehrseitig stellen, indem Sie die Page Columns
und die Page Rows auf Werte > 1 setzen

Druckoptionen zum mehrseitigen Drucken


Beim Drucken wird dieses Bild auf die verschiedenen Seiten verteilt. Das kann dann eine Wandtapete
werden.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

260/299

Die Verteilung der Darstellung auf die Ausdruckseiten

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

261/299

Auswertungen mit Application Express


Alle Metadatentypen des Repositories stehen fr Auswertezwecke zur Verfgung. ffnen Sie hierzu z.
B. mit dem SQL Developer das Schema des Repositories. Hier finden Sie fr alle Objekttypen eine
View. Diese Views knnen nach Belieben ausgelesen werden.

Ausschnitt Metadaten Views OWB


Ein Beispiel zeigt die folgende Application Express-Anwendung, in der mehrere Zugriffe
zusammengefasst sind:
Eine Auflistung nach Objekttyp
Listen aller Tabellen, Mappings und Funktionen
Eine listenartige Strukturauflsung

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

262/299

Application Express (HTMLDB)-Listenauswertung ber Metadaten mit Beschreibungstexten

Application Express (HTMLDB)-Strukturauflsung in Listenform

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

263/299

Einfache Liste von Tabellen mit den Modul-Fundstellen. Die Beschreibungsinformationen wurden nicht
gepflegt.

Liste von Mappings mit Beschreibungstexten


Die Grundlage dieser Application Express-Auswertung ist eine Hilfstabelle. Die Metadaten sind
innerhalb des Repositories in einer sehr verschachtelten Form abgelegt. Hinzu kommt die Flle der
Informationen. Mit dem Trick der Hilfstabelle knnen solche programmierten Zugriffe erleichtert
werden.
Die Hilfstabelle hat die gleiche Struktur wir der View ALL_IV_ALL_OBJECTS und wird mit den
folgenden Daten gefllt:
insert into t_all_objects select
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

264/299

OBJECT_ID,
OBJECT_UOID,
OBJECT_TYPE,
OBJECT_NAME,
BUSINESS_NAME,
DESCRIPTION,
PARENT_OBJECT_ID,
PARENT_OBJECT_TYPE,
PARENT_OBJECT_NAME,
IS_VALID,
UPDATED_ON,
CREATED_ON,
UPDATED_BY,
CREATED_BY
from OWBR2.all_IV_ALL_objects where
object_type != 'Unknown'

Eine Strukturauflsung wie in dem Beispiel oben kann erreicht werden ber:
Select
substr('|---------',1,level*2)||substr(OBJECT_NAME,1,25) Name,
substr(OBJECT_TYPE,1,20) typ,
substr(PARENT_OBJECT_NAME,1,20) Parent ,
substr(PARENT_OBJECT_TYPE,1,20) Parent_Typ,
--CONNECT_BY_ISLEAF,
LEVEL,
substr(SYS_CONNECT_BY_PATH(OBJECT_NAME, '->'),1,30) Pfad
from t_all_objects
START WITH OBJECT_ID = 26265
CONNECT BY PRIOR OBJECT_ID = PARENT_OBJECT_ID and
OBJECT_TYPE not in ('Unknown')

Die hier vorgestellten Beispiele lassen erahnen, welche komfortablen Browserauswertungen man
erzeugen kann. Das ist jedoch die Anwendung von Application Express (HTMLDB) und sollte an
anderer Stelle besprochen werden.

Leichtes Austauschen von Metadaten zwischen verschiedenen


Repositories (MDL-Files)
In verschiedenen Situationen will man Metadaten aus dem Repository auslagern und auch wieder in
ein Repository zurckschreiben. Diese Situationen knnen sein:
Erstellen von Sicherungskopien der Metadaten
Austausch von Metadaten zwischen Repositories
Erstellen eines Versionsstands
Alle Objekte knnen komplett oder selektive ausgetauscht werden.
Bei diesem Vorgang entsteht eine sog. MDL-Datei. Das ist ein verschlsseltes Warehouse-Builder
eigenes Format. In dieser Textdatei sind alle Informationen enthalten, um die jeweiligen Objekte
wieder neu aufzubauen. Ein komplettes Repository kann damit wieder hergestellt werden.

Markieren Sie hierzu in dem Design Browser das Objekt, das Sie als Metadaten herausschreiben
wollen. Wenn Sie das Projekt selektieren, wird das komplette Projekt geschrieben.
Whlen Sie aus dem Menpunkt Design die Option Export und hier Warehouse Builder
Metadata

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

265/299

Starten des Metadaten-Export-Vorgangs


Jetzt startet ein Wizard, in dem Sie den Pfad fr sie Zieldatei angeben knnen.
Whlen Sie eine Datei aus und starten Sie der Exportvorgang.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

266/299

Metadaten-Export-Wizard
Nach dem Abschluss Exportvorgangs sehen Sie das Protokoll. Sie knnen diese Informationen in dem
geschriebenen Log-File nachlesen.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

267/299

Protokollierung des Metadaten-Exports


Zur Umkehrung des Vorgangs lesen Sie die Datei einfach wieder ein.
Whlen Sie aus dem Menpunkt Design die Option Import und hier
Metadata.
Selektieren Sie die zuvor weggeschriebene Datei.

Warehouse Builder

Sie haben die Option alle Daten zu lesen oder nur einzelne Objekte auszutauschen.
Schalten Sie hierzu unter der Option Object Selection. ->Import selected objects from file.
Danach sehen sie eine Browser, der dem des Design Centers gleicht und Sie knnen auch einzelne
Objekte zum Zurckladen selektieren.
Tipp:
Erzeugen Sie sich regelmig solche MDL-Dateien. Sie knnen damit Ihre Arbeit absichern.
Wenn Sie ein Mapping aus Versehen gelscht oder es so stark modifiziert haben, so dass Sie
nicht mehr zum Ursprung zurckkommen, dann knnen Sie Ihre Ursprungsversion aus der
MDL-Datei wieder zurck-retten.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

268/299

Dialog Wizard zum Zurckladen einzelner Objekte aus einer MDL-Datei

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

269/299

Versionieren von Modellen und Modellteilen


Modelle bzw. Modellausschnitte knnen versioniert werden. Dies ist eine Art Snapshot-Verfahren, das
dem Speichern der vorher besprochenen MDL-Files gleicht. Die versionierten Informationen bleiben
jedoch innerhalb des Repositories.
Versionieren wir das Mapping MP_Artikel.
Gehen Sie in das Kontextmen des Mappings MP_ARTIKEL.
Whlen Sie dort den Punkt Snapshot und hier die Option New

Erstellen einer Version fr das Mapping MP_ARTIKEL

Jetzt vergeben Sie den Namen fr diese Version, z. B. V1_MP_ARTIKEL.


Whlen Sie bei Type FULL.

Full speichert alle Informationen zu dem Object. Diese Informationen knnen auch exportiert werden
und man kann daraus wieder ein neues Objekt erstellen. Nachteilig ist allerdings der hhere
Platzverbrauch. Die Signature-Variante verbraucht wesentlich weniger Platz. Sie kann allerdings
verwendet werden, um Unterschiede zwischen Versionsstnden herauszufinden um daraus z. B. die
Notwendigkeit fr ein Deployment abzuleiten. Hier sollte man sich berlegen, fr welche Einsatzflle
man das Versionieren einsetzen will.

Bei der Frage nach Dependancy Depth lassen Sie die 0 stehen. Hier wrden referenzierte Objekte
herangezogen werden.
Schlieen Sie den Vorgang danach ab.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

270/299

Um die Arbeit mit dieser Version zu testen, knnen Sie jetzt eine nderung in dem Mapping
vornehmen.
ffnen Sie das Mapping und lschen Sie die Tabelle Artikelsparte weg. Lschen Sie auch die
Gruppe Sparte in dem Joiner.
Schlieen Sie das Mapping und whlen Sie in dem Design Center in dem Kontextmen des
Mappings die Option Snapshot und Compare.

Liste der zur Verfgung stehenden Versionen

Whlen Sie in der angebotenen Liste die Version V1_MP_ARTIKEL und Sie erhalten
bersicht aller gegenber dieser Version genderten Informationen.

eine

nderungsliste von aktuellem Mapping gegenber der gespeicherten Version

Change Manager Zurckholen einer alten Version


Jetzt wissen wir zwar, welche Unterschiede sich eingestellt haben. Die alte Version haben wir jedoch
noch nicht zurck bekommen. Hierzu wird der Change Manager bentigt.

Starten Sie den Change Manger ber den Menpunkt Tools im Design Center.

Jetzt sehen Sie in dem linken Bereich die Auflistung der zur Verfgung stehenden Versionen und in
dem Kopfbereich haben Sie die Optionen fr Zurckholen, Lschen und Vergleichen.
Die Compare-Option vergleicht jetzt zwei Versionen. Wenn Sie Compare whlen, erscheinen zwei
Listen mit dem gleichen Inhalt. Sie knnen also mit unterschiedlichen Versionen von dem gleichen
Objekt vergleichen.

Marken Sie Version und whlen Sie die Option Restore.


Kontrollieren Sie das Ergebnis, in dem Sie den Mapping-Editor wieder ffnen.

Das Mapping sollte wieder hergestellt sein.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

271/299

Restore, Compare und Delete von Versionen

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

18.

272/299

Anhang mit Sonderthemen

Aufbauen von Skripten zum automatisierten ndern der Modelle


(OMB Plus Skriptsprache )

Die OMB Plus Skriptsprache (Oracle Meta Base) steht seit dem OWB Release 9.2 zur Verfgung. Sie
wurde erstellt, um funktionale Eigenschaften des Warehouse Builder von der Bedienoberflche zu
entkoppeln. Tatschlich werden viele Bedienschritte, die der Benutzer ber die Oberflche durchfhrt,
zunchst an ein internes API weitergeleitet und erst von dort aus interpretiert und zur Ausfhrung
gebracht.
Dieses interne API kann auch ber die Skriptsprache OMB angesprochen werden. Die Vorteile liegen
auf der Hand: Schritte, die im Rahmen von ETL-Prozessen immer wieder neu entwickelt werden
mssen oder einfache Verwaltungsarbeiten wie das Validieren, das Generieren oder der DeployVorgang knnen automatisiert ber Batchaufrufe im Hintergrund gestartet werden. Dieser Einsatz ist
sinnvoll fr:
Regelmiges, automatisiertes Erstellen von Sicherungen.
Entladen/Beladen/Erstellen von Objekten, wenn diese Online zu viel Aufwand bedeutet.
Grere Lschaktivitten zum Bereinigen der Modelle.
Massenupdates von Attributinhalten z. B. Verwaltungsattribute bei berfhrungsarbeiten
(Test -> QA -> Produktion).
Offline Execution von Verwaltungsarbeiten wie z. B. Validate-Checks, Generierungen,
Deployments.
Durchfhren von Massenupdates bzw. typischen Wiederholungsaufgaben z. B. Hinzufgen von
Location-Informationen.
Und viele andere Beispiele, bei denen automatisiertes Bearbeiten aufwendige manuelle
Wiederholungsttigkeiten erstzt.
Die OMB Plus Skriptsprache besteht aus zwei Sprachkomponenten:
1 Warehouse Builder API Kommandos
- Sie werden in den Scripten immer gro geschrieben. Ihre Syntax ist dem OMB Plus
Handbuch zu entnehmen, das mittlerweile ber 800 Seiten umfasst.
2 Der TCL Skriptsprache , die im UNIX-Umfeld hufig vorkommt.
(Siehe hierzu http://tcl.tk/ Auf dieser Webseite ist die genaue Beschreibung zu finden)
(Siehe auch die Datei Ein_TCL.pdf auf der CD. Dort ist eine deutschsprachige Einfhrung, die
ber das Internet von Holger Jakobs zur Verfgung gestellt wurde).
Sie knnen die Kommandos der Skriptsprache interaktiv mit dem Werkzeug OMBPLUS absetzen.
Hierzu rufen Sie OMBPlus ber die Startleiste auf:

Oder sie benutzen das OMBPlus Fenster des Design Centers:

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

273/299

OMB Plus-Kommando Eingabefenster des Design Centers


Wenn dieses Fenster nicht sichtbar ist, so sollten Sie es ber die Pull Down Liste Window zugnglich
machen. Beachten Sie, dass Sie sich in dem Fenster des Design Centers nur innerhalb der durch das
Frontend bereits geffneten Session bewegen knnen. Es gibt Aktionen (z. B.
Metadatenmodellnderungen), die in dieser Weise nicht mglich sind, weil sie das OWB Repository
exklusiv fr sich beanspruchen. Diese Aktionen gehen dann nur aus dem OMB Plus-Fenster heraus,
wobei alle anderen OWB Sessions geschlossen sein mssen.
Es gibt noch andere Mglichkeiten OMB Skript Kommandos abzusetzen, wie das folgende Bild zeigt.

Einsatzvarianten der OMB-Skriptsprache

Erstes Arbeiten mit dem Tool OMBPLUS


OMBPLUS ist ein Zeilenkommando-basiertes Tool ber das man mit dem OMBPLUS-KommandoInterpreter kommunizieren kann. Da OMB eine Anwendung von TCL darstellt ist OMBPLUS auch
gleichzeitig ein Interpreter fr TCL. Das bedeutet, dass alle TCL-Kommandos verstanden werden.
Der Aufruf von OMBPLUS kann auch im BATCH erfolgen, indem man den Aufruf in eine Batch-Datei
schreibt (siehe unten).
Einloggen in dem OWB-Repository mit OMBPLUS
-- Einwhlen in ein bestimmtes Repository (Version OWB 10)
OMBCONNECT OWBR2/OWBR2@localhost:1522:o102
(ist in dem Design Center Fenster des OWB nicht ntig und auch nicht mglich.)
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

274/299

-- oder
OMBCONNECT OWBR2/OWBR2@localhost:1522:o102 USE SINGLE_USER_MODE
(nur ntig wenn Metadatennderungen gemacht werden)
-- oder ab Version OWB 11
OMBCONNECT OWB112/OWB112@localhost:1521:orcl USE WORKSPACE 'OWB'
Navigieren innerhalb des Repositories
-- Einwhlen in einen bestimmten Projekt-Kontext:
OMBCC 'MY_PROJECT'
-- ndern des Kontextes mit OMBCC
-- In ein Projekt hineigehen
OMBCC STEP_BY_STEP
-- In eine Modul hineigehen
OMBCC WAREHOUSE
-- Eine Ebene zurckgehen
OMBCC ..
-- Direkt in ein Modul springen
OMBCC 'STEP_BY_STEP/MT'
-- Anzeigen der Umgebung
set OMBPROMPT on
-- Zeigen der Umgebung
OMBDCC
Fortsetzung von Kommandos Zeilenumbruch
- mit dem \ Zeichen kann man Kommandos in der Folgezeile fortsetzen
OMBCONNECT

OWB11/OWB11@localhost:1521:o11 \
USE SINGLE_USER_MODE
Aufbauen von Kommandos in Variablen und Starten der Kommandos
set CMD [list OMBCONNECT OWB11/OWB11@localhost:1521:o11 USE WORKSPACE 'OWB']
eval $CMD

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

275/299

Skriptaufrufe
--Aufrufen von Skripten aus OMBPLUS heraus (Achtung: doppelte Schrgstriche) z. B.:
source D:\\Szenario\\OMB\\Mod_TBL_Valid_check.tcl
-- Aufrufe von Skripten zusammen mit OMBPLUS mit Hilfe einer Batch-Datei:
Hier schreibt man den Aufruf von OMBPLUS und den Namen der TCL-Script-Datei als Parameter in
eine BAT-Datei:
Dateiname:
OMBBATCH_Log_File.bat
Inhalt (Achtung: doppelte Schrgstriche):
D:\O11\db11\owb\bin\win32\OMBPlus.bat D:\\Szenario\\OMB\\Batchscripte\\Log_File_Schreiben.tcl
-- Achtung in dem vorgenannten Beispiel mssen die Schrgstriche verdoppelt werden, weil ein Strich
beim Auflsen als Fluchtsymbol verschluckt wird.

Scripte schreiben
Kommentare
#
Bildschirmausgaben
puts Text
Variablen definieren bzw. Werte zuweisen
set variable wert
Hier handelt es sich um sog. skalare Typen im Gegensatz zu arrays (s. u).
Expressions bearbeiten
set ergebnis [expr 6 + 7]
expr sorgt fr die Berechnung von 6+7. Die eckige Klammer sagt dem Interpreter, dass der enthaltene
Ausdruck zuerst ausgewertet werden soll.
Variablen werden mit dem $-Zeichen angesprochen:
set ergebnis [expr 6 + 7]
puts $ergebnis
Lschen von Variablen
unset variable
Arrays definieren
set anzahl(a) 7
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

276/299

set anzahl(b) 7
puts $anzahl(a)
Bedingungen
set a 6
if {$a > 6} {set x 0} {set x 1}
puts $x
oder
if {$a > 6} then {set x 0} else {set x 1}
bzw. ber mehrere Zeilen
if

{
$a > 6
} then {
set x 0
} else {
set x 1
}
then / else sind nur Fllwrter.
Schleifen
Kurzform:
set i 5
while {$i < 10} {puts $i; incr i}
Dokumentierte Langform:
set i 5
while {$i < 10} {
puts $i;
incr i
}
Kurzform:
for {set i 1} {$i < 10} {incr i } {puts $i}
Dokumentierte Langform:
for {set i 1} {$i < 10} {incr i } {
puts $i
}

foreach i {a b c d} {puts $i}


foreach {ort entfernung ortsaufschlag} {Hamburg 300 2 Berlin 500 6 Stuttgart 800 8} {
puts $ort ist zu in $entfernung km plus Zuschlag [expr $ortsaufschlag*3]
}
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

277/299

Ausgabe:
Hamburg ist zu in 300 km plus Zuschlag 6
Berlin ist zu in 500 km plus Zuschlag 18
Stuttgart ist zu in 800 km plus Zuschlag 24

Ausnahmebehandlung
Mit - catch - knnen fehlerhaft abgelaufene Kommandos abgefangen werden
catch {expr 5*a} fehler
puts $fehler
Ausgabe:
syntax error in expression "5*a"

Umgang mit Prozeduren und Dateien


# -----------------------------------------------------------------------# Dieses Beispiel zeigt die Verwendung von Prozeduraufrufen und
# das Beschreiben einer LOG-Datei, um zu protokollieren, was man macht
# -----------------------------------------------------------------------set repOwnerUserName owb11
set repOwnerPassword owb11
set host localhost
set port 1521
set service O11
# -----------------------------------------------------------------------# Arbeitsverzeichnis festlegen
# -----------------------------------------------------------------------set workpath c:/
# -----------------------------------------------------------------------# Hier kommen Prozeduraufrufe. Die Hauptprozedur steht am Ende.
# Das Schluesselwort global dient der Sichtbarmachtung der in dem Script definierten
# Variablen
# -----------------------------------------------------------------------# Prozedur zum Connecten
proc connectToOWB {} {
global repOwnerUserName
global repOwnerPassword
global host
global port
global service
log "\nConnecting to OWB... in single user mode\n"
OMBCONNECT $repOwnerUserName/$repOwnerPassword@$host:$port:$service USE WORKSPACE 'OWB'
}
# Prozedur zum Disconnecten
proc disconnectFromOWB {} {
OMBDISCONNECT
log "Disconnecting from OWB..."
}
proc createLogFile {} {
global workpath
set LogFileName $workpath/log_file.log
# puts "Creating Log File: $LogFileName"
if { [catch {set fileHandle [open $LogFileName w]} FileError] } {
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

278/299

puts "Could not open $LogFileName for writing\n$FileError"


exit(1)
}
return $fileHandle
}
proc log {info} {
global logFile
puts "$info"
puts $logFile "$info"
flush $logFile
}
proc closeLogFile {} {
global logFile
close $logFile
}
# -----------------------------------------------------------------------# Hier beginnt die Hauptprozedur
# -----------------------------------------------------------------------set logFile [createLogFile]
set debug 0
connectToOWB
# Abfangen Fehler mit catch
catch {"Zeit [getCurrentTime]\n"} f
log $f
log "Schreiben in Log File"
disconnectFromOWB
closeLogFile

Scripte zum Auswerten und Aufbereiten


Auflistung aller Tabellen pro Modul
##############################################################
#Auflistung aller Tabellen pro Modul
#
# Durchsucht werden alle Module nach deren Tabellen
# Innerhalb der Module Ausgabe des Tabellennamens
#
# Beginnt auf Kontext: Repository
# Endet auf Kontext : Repository
#
# OMBPLUS Aufruf:
source D:\\Szenario\\OMB\\Mod_TBL.tcl
##############################################################
OMBCC 'MY_PROJECT'
puts " "
puts "Liste von Tabellen pro Modul "
puts "---------------------------- "
OMBLIST ORACLE_MODULES
foreach moduleName [OMBLIST ORACLE_MODULES] {
puts " "
puts "Modul: $moduleName"
OMBCC '$moduleName'
puts "Folgende Tabellen sind in dem Modul:"
foreach tableName [OMBLIST TABLES] {
puts "
--> $tableName"
}
OMBCC '..'
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

279/299

}
OMBCC '..'

Auflistung aller Tabellen und ihrer Columns pro Modul


##############################################################
#Auflistung aller Tabellen und ihrer Columns pro Modul
#
# Durchsucht werden alle Module nach deren Tabellen
# Innerhalb der Module Ausgabe des Tabellennamens
# Pro Tabelle Ausgabe aller Columns
# Beispiel fuer OMBRETRIEVE
#
# Beginnt auf Kontext: Repository
# Endet auf Kontext : Repository
#
# OMBPLUS Aufruf:
source D:\\Szenario\\OMB\\Mod_TBL_COL.tcl
##############################################################
OMBCC 'MY_PROJECT'
puts " "
puts "Liste von Tabellen mit ihren Spalten pro Modul "
puts "---------------------------------------------- "
OMBLIST ORACLE_MODULES
foreach moduleName [OMBLIST ORACLE_MODULES] {
puts " "
puts "Modul: $moduleName"
puts "=============================================="
OMBCC '$moduleName'
puts "Folgende Tabellen sind in dem Modul:"
foreach tableName [OMBLIST TABLES] {
puts " "
puts "
Tabelle: --> $tableName"
puts "
--------------------------------------------"
set columnList [OMBRETRIEVE TABLE '$tableName' GET COLUMNS]
foreach colName $columnList {
puts "
Spalte: $colName"
}
}
OMBCC '..'
}
OMBCC '..'

Auflistung aller Projekte, Module, Tabellen und schreiben in Datei


(geziegt wird der Umgang mit dem Schreiben in Dateien und das Auslesen von zustzlichen Eigenschaften mit
OMBRETRIEVE)
OMBCONNECT OWB11/OWB11@localhost:1521:o11 USE WORKSPACE 'OWB'
puts "connected"
set fname [ open "c:/OWBliste" w ]
# Liste aller Projekte
set projList [ OMBLIST PROJECTS ]
puts "available projects $projList"
foreach projName $projList {
OMBCC '/$projName'
puts $fname "in project $projName\r"
puts $fname "----------------------------------------------------\r"
set modList [ OMBLIST ORACLE_MODULES ]
foreach modName $modList {
puts $fname " in module $modName\r"
puts $fname " --------------------------------------------------\r"
OMBCC '/$projName/$modName'
set mapList [ OMBLIST MAPPINGS ]
foreach mapName $mapList {
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

280/299

puts $fname " in mapping $mapName\r"


puts $fname " ------------------------------------------------\r"
set tabList [ OMBRETRIEVE MAPPING '/$projName/$modName/$mapName' GET TABLE OPERATORS ]
foreach tabName $tabList {
set loadType [ OMBRETRIEVE MAPPING '/$projName/$modName/$mapName' OPERATOR '$tabName'
GET PROPERTIES(LOADING_TYPE) ]
set boundName [ OMBRETRIEVE MAPPING '/$projName/$modName/$mapName' OPERATOR '$tabName'
GET PROPERTIES(BOUND_NAME) ]
puts $fname "
$loadType on target $tabName with Bound Name $boundName\r"
}
}
}
}
OMBDISC
close $fname

Ergebnis-Output in Datei:
in project STEP_BY_STEP
---------------------------------------------------in module DWH
-------------------------------------------------in mapping DEMO_MAP
-----------------------------------------------in mapping MP_TR
-----------------------------------------------INSERT on target BESTELLUNG with Bound Name BESTELLUNG
INSERT on target BEST_POSITION with Bound Name BEST_POSITION
INSERT on target TR_ZIEL with Bound Name TR_ZIEL
in mapping MP_TRANSAKTIONEN
-----------------------------------------------INSERT on target BESTELLUNG with Bound Name BESTELLUNG
TRUNCATE_INSERT on target BEST_POS with Bound Name BEST_POS
INSERT on target BEST_POSITION with Bound Name BEST_POSITION
in mapping MP_VIEW
-----------------------------------------------INSERT on target ARTIKEL with Bound Name ARTIKEL
INSERT on target BESTELLUNG with Bound Name BESTELLUNG
INSERT on target BEST_POSITION with Bound Name BEST_POSITION
in mapping MP_VIEW_GESAMT
-----------------------------------------------INSERT on target BESTELLUNG with Bound Name BESTELLUNG
INSERT on target ERGEBNIS_TABELLE with Bound Name ERGEBNIS_TABELLE
INSERT on target KUNDE with Bound Name KUNDE
in mapping MP_VORFALL
-----------------------------------------------TRUNCATE_INSERT on target VORFALL with Bound Name VORFALL
INSERT on target ZAHL with Bound Name ZAHL

Die gleiche Prozedur wie zuvor nur mit zustzlicher Auswertung aller Operatoren pro Mapping:

set fname [ open "c:/OWBliste" w ]


# Liste aller Projekte
set projList [ OMBLIST PROJECTS ]
puts "available projects $projList"
foreach projName $projList {
OMBCC '/$projName'
puts $fname "in project $projName\r"
puts $fname "----------------------------------------------------\r"
set modList [ OMBLIST ORACLE_MODULES ]
foreach modName $modList {
puts $fname " in module $modName\r"
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

281/299

puts $fname " --------------------------------------------------\r"


OMBCC '/$projName/$modName'
set mapList [ OMBLIST MAPPINGS ]
# Liste aller Mappings
foreach mapName $mapList {
puts $fname " in mapping $mapName\r"
puts $fname " ------------------------------------------------\r"
set MapOp [ OMBRETRIEVE MAPPING '/$projName/$modName/$mapName' GET OPERATORS ]
# Alle Operatoren pro Mapping auslesen
puts $fname " ---- Liste aller Operatoren in Mapping '/$projName/$modName/$mapName' \r"
foreach OpName $MapOp {puts $fname $OpName\r}
# Alle Tabellen pro Mapping
puts $fname " ---- Liste aller Tabellen mit EIgenschaften in Mapping '/$projName/$modName/$mapName' \r"
set tabList [ OMBRETRIEVE MAPPING '/$projName/$modName/$mapName' GET TABLE OPERATORS ]
foreach tabName $tabList {
set loadType [ OMBRETRIEVE MAPPING '/$projName/$modName/$mapName' OPERATOR
'$tabName' GET PROPERTIES(LOADING_TYPE) ]
set boundName [ OMBRETRIEVE MAPPING '/$projName/$modName/$mapName' OPERATOR '$tabName'
GET PROPERTIES(BOUND_NAME) ]
puts $fname "
$loadType on target $tabName with Bound Name $boundName\r"
}
}
}
}
close $fname

Auswertungen direkt ber das Runtime System


Auswertungen ohne SQL.
SQLPlus starten
Fr OWB11 den Workspace sichtbar machen:
exec owbsys.WB_WORKSPACE_MANAGEMENT.SET_WORKSPACE('OWB','OWB11');
exec owbsys.start_enable_owb_roles;

select
distinct 'TARGET',
substr(comp.map_name,1,20) Mapping,
substr(comp.data_entity_name,1,20) Tabelle,
substr(comp.operator_type,1,20) OP_TYP
from
all_iv_xform_map_components comp,
all_iv_xform_map_parameters param
where
lower(operator_type)
in ('table', 'view', 'dimension', 'cube')
and param.map_component_id = comp.map_component_id
and param.source_parameter_id is not null
UNION
select
distinct 'SOURCE',
substr(t1.c1,1,20) Mapping,
substr(t1.c2,1,20) Tabelle,
substr(t1.c3,1,20) OP_TYP
from
(select
comp.map_name c1,
comp.data_entity_name c2,
comp.operator_type c3,
max(param.source_parameter_id) c4
from
all_iv_xform_map_components comp,
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

282/299

all_iv_xform_map_parameters param
where
lower(operator_type) in
('table', 'view', 'dimension', 'cube')
and param.map_component_id = comp.map_component_id
group by
comp.map_name, comp.data_entity_name, comp.operator_type) t1
where t1.c4 is null
order by 2,1

Verwaltungsaktivitten
Neuanlegen von Repository-Usern
OMBREGISTER USER 'TGT'

Erstellen von Snapshots


cd \oracle\...\owb\bin\win32
OMBPlus.bat d:\temp\do_my_thing.tcl
do_my_thing.tcl:
OMBCONN OWBR2/OWBR2@LOCALHOST:1522:o102
OMBCREATE SNAPSHOT STEP_BY_STEP \
ADD PROJECT 'MY_PROJECT'
OMBCOMMIT

Pruefung ob Tabellen in Modulen Valid


##############################################################
#Pruefung ob Tabellen in Modulen Valid
#
# Durchsucht werden alle Module nach deren Tabellen
# Innerhalb der Module werden alle Tabellen compiliert
#
und das Ergebnis festgehalten
#
# Beginnt auf Kontext: Repository
# Endet auf Kontext : Repository
#
# OMBPLUS Aufruf:
source D:\\Szenario\\OMB\\Mod_TBL_Valid_check.tcl
##############################################################
OMBCC 'MY_PROJECT'
puts " "
puts "Pruefung auf Gueltigkeit von Tabellen "
puts "------------------------------------- "
OMBLIST ORACLE_MODULES
foreach moduleName [OMBLIST ORACLE_MODULES] {
puts " "
puts "Modul: $moduleName"
OMBCC '$moduleName'
puts "Folgende Tabellen sind in dem Modul:"
set tableList [OMBLIST TABLES];
foreach tableName $tableList {
puts " --> geprueft wird --> $tableName"
if { [OMBCOMPILE TABLE '$tableName'] == "Invalid."} {
set context [OMBCC];
puts "Tabelle $context/$tableName ist invalide";
} else {puts "
Tabelle $tableName ist OK!" }
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

283/299

}
OMBCC '..'
}
OMBCOMMIT
OMBCC '..'

Austauschen von Objekten ber Repositorygrenzen hinweg


Export von Objekten
OMBCONNECT OWB11/OWB11@localhost:1521:o11 USE WORKSPACE 'OWB'

--- Export eines ganze Projektes


OMBEXPORT MDL_FILE 'C:/komplett.mdl' PROJECT 'STEP_BY_STEP' OUTPUT LOG TO 'C:/komplett.log'

--- Export einzelner Module bzw. Komponenten


OMBEXPORT MDL_FILE 'C:/MS.mdl' PROJECT 'STEP_BY_STEP' COMPONENTS (ORACLE_MODULE 'MS',
LOCATION 'LC_MS') OUTPUT LOG TO 'C:/MS.log'

Importieren von Objekten


OMBCC 'STEP_BY_STEP'
OMBCC '..'
OMBIMPORT MDL_FILE 'C:/MS.mdl' USE CREATE_MODE OUTPUT LOG TO 'C:/ME_imp.log'
OMBCOMMIT

Deployen von Objekten, Umgang mit Control Center und Locations


Connecten an Control Center
OMBCONNECT CONTROL_CENTER OWB11/OWB11@LOCALHOST:1521:O11 USE REPOSITORY 'OWB'

Registrieren von Locations


OMBALTER LOCATION 'LC_MT' SET PROPERTIES (VERSION,HOST,PORT, SERVICE, USER, PASSWORD,
SCHEMA) VALUES ('11.1','localhost', 1521, 'o11', 'DWH','DWH', 'DWH')
OMBCOMMIT
OMBREGISTER LOCATION 'LC_MT'

Actionplan und Deployment


OMBDROP DEPLOYMENT_ACTION_PLAN 'AP_WK'
OMBCREATE TRANSIENT DEPLOYMENT_ACTION_PLAN 'AP_WK' \
ADD ACTION 'AP_TABLES' \
SET PROPERTIES (OPERATION) VALUES ('REPLACE') SET REFERENCE TABLE 'BB' \
ADD ACTION 'AP_MAP' \
SET PROPERTIES (OPERATION) VALUES ('CREATE') SET REFERENCE MAPPING 'MP_BB'
OMBDEPLOY DEPLOYMENT_ACTION_PLAN 'AP_WK'

Starten von Mappings


OMBSTART MAPPING 'MP_BB'

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

284/299

Automatisieren von Deploymentvorgngen und Deployment von


Gruppen
Einzelne Schritte
# Eventuell bestehenden Deployment Plan lschen
OMBDROP DEPLOYMENT_ACTION_PLAN 'AP_WK'
# Ein OMBCREATE DEPLOYMENT_ACTION_PLAN Kommando aufbauen.
# Das Kommando wird in der Variablen cmd aufgebaut
# Die Ausdrcke in der [] - Klammer werden an die Variable cmd gereicht
# Das 'list - Schlsselwort verhindert das vorzeitige Ausfhren des Kommandos
# Mit 'lappend' wird der Inhalt der Variablen cmd fortgeschrieben
set cmd [list OMBCREATE TRANSIENT DEPLOYMENT_ACTION_PLAN 'AP_WK']
set act 1
foreach mappingName [OMBLIST MAPPINGS] {
lappend cmd ADD ACTION 'ACT_$act' \
SET PROPERTIES (OPERATION) \
VALUES ('CREATE') \
SET REFERENCE MAPPING '$mappingName'
incr act
}
puts [join $cmd]
eval $cmd
--- Beipielhafter generierter Output in cmd
## OMBCREATE TRANSIENT DEPLOYMENT_ACTION_PLAN 'AP_WK'
## ADD ACTION 'ACT_1' SET PROPERTIES (OPERATION) VALUES ('CREATE') SET REFERENCE MAPPING
'MP_TRANSAKTIONEN'
## ADD ACTION 'ACT_2' SET PROPERTIES (OPERATION) VALUES ('CREATE') SET REFERENCE MAPPING 'MP_VIEW'
## ADD ACTION 'ACT_3' SET PROPERTIES (OPERATION) VALUES ('CREATE') SET REFERENCE MAPPING
'MP_VIEW_GESAMT'
## ADD ACTION 'ACT_4' SET PROPERTIES (OPERATION)
VALUES ('CREATE') SET REFERENCE MAPPING
'MP_VORFALL'

Deployment von Objekten

SCRIPT START ------------------------------------------------------------------------------------------------------------------# Create a deployment action plan from a list of objects.
#
# Parameters: dap

- Name of deployment action plan

object_ls - Tcl list of mappings or other objects to be deployed.

object_type - Type of objects to be deployed, default: MAPPING.

Valid values are ADVANCED_QUEUE, CUBE_TABLE,

DIMENSION_TABLE, EXTERNAL_TABLE, CONNECTOR, FUNCTION,

MAPPING, MATERIALIZED_VIEW, PROCEDURE,

PROCESS_FLOW_PACKAGE, SEQUENCE, TABLE, and VIEW.

#
# Usage: 1. omb_create_dap MYMAPDAP {MAP1 MAP2 MAP3 ...} -- Create DAP
#

OMBDEPLOY DEPLOYMENT_ACTION_PLAN 'MYMAPDAP' -- Execute deployment actions

#
#
#

2. omb_create_dap MYWFDAP {WF1 WF2 ...} PROCESS_FLOW_PACKAGE


OMBDEPLOY DEPLOYMENT_ACTION_PLAN 'MYWFDAP'

proc omb_create_dap { dap object_ls {object_type MAPPING}} {


# Drop action plan.
catch {OMBDROP DEPLOYMENT_ACTION_PLAN '$dap'}

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

285/299

# Create action plan command


set cmd [list OMBCREATE TRANSIENT DEPLOYMENT_ACTION_PLAN '$dap']
# Add actions to action plan
set act 1
foreach object $object_ls {
lappend cmd ADD ACTION 'ACT_$act' \
SET PROPERTIES (OPERATION) \
VALUES ('CREATE') \
SET REFERENCE $object_type '$object'
incr act
}
puts [join $cmd]
# Execute action plan creation
eval $cmd
}
SCRIPT END----------------------------------------------------------------------------------

Gesamtverfahren
1. Erstellen einer Collection in OWB
2. Exoprtieren Collection-Objecte

Metadatenstrukturen ndern
Automatisertes ndern von Attribut-Inhalten
#############################################################################
#Auflistung aller Tabellen pro Modul
#
# Durchsucht werden alle Module nach deren Tabellen
# Innerhalb der Module Ausgabe des Tabellennamens
# nderung aller Verwaltungsattribute der Tabellen:
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

286/299

#
UDP_Version
#
UDP_Autor
#
UDP_Zuletzt_Aenderungs_Autor
#
UDP_Status
#
UDP_Zuletzt_geaendert_Am
#
UDP_Erstellt_Am
#
#
# Beginnt auf Kontext: Repository
# Endet auf Kontext : Repository
#
# OMBPLUS Aufruf:
source D:\\Szenario\\OMB\\Mod_TBL_Change_UDP.tcl
##############################################################################
puts " "
puts "nderung der Verwaltungsattribute aller Tabellen "
puts "auf aktuelle Werte"
puts "------------------------------------------------ "
OMBCC 'MY_PROJECT'
OMBLIST ORACLE_MODULES
foreach moduleName [OMBLIST ORACLE_MODULES] {
puts " "
puts "Modul: $moduleName"
OMBCC '$moduleName'
puts "Folgende Tabellen sind in dem Modul:"
foreach tableName [OMBLIST TABLES] {
OMBALTER TABLE '$tableName' SET PROPERTIES (UDP_Version) VALUES('1')
OMBALTER TABLE '$tableName' SET PROPERTIES (UDP_Autor) VALUES('Warehouse ADM Meier')
OMBALTER TABLE '$tableName' SET PROPERTIES (UDP_Zuletzt_Aenderungs_Autor) VALUES('Fr.
Friedrich')
OMBALTER TABLE '$tableName' SET PROPERTIES (UDP_Status) VALUES('Testraum')
OMBALTER TABLE '$tableName' SET PROPERTIES (UDP_Zuletzt_geaendert_Am) VALUES('200305-31')
OMBALTER TABLE '$tableName' SET PROPERTIES (UDP_Erstellt_Am) VALUES('2003-01-04')
puts "
--> geaendert wurde $tableName"
}
OMBCC '..'
}
OMBCOMMIT
OMBCC '..'

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

287/299

##############################################################
#Auflistung aller Tabellen pro Modul
#
# Durchsucht werden alle Module nach deren Tabellen
# Innerhalb der Module Ausgabe des Tabellennamens
# nderung aller Verwaltungsattribute der Tabellen:
#
UDP_Version
#
UDP_Autor
#
UDP_Zuletzt_Aenderungs_Autor
#
UDP_Status
#
UDP_Zuletzt_geaendert_Am
#
UDP_Erstellt_Am
#
#
# Beginnt auf Kontext: Repository
# Endet auf Kontext : Repository
#
# OMBPLUS Aufruf:
source D:\\Szenario\\OMB\\Mod_TBL_Change_Status.tcl
##############################################################
puts " "
puts "nderung der Verwaltungsattribute aller Tabellen "
puts "auf aktuelle Werte"
puts "------------------------------------------------ "
OMBCC 'MY_PROJECT'
OMBLIST ORACLE_MODULES
foreach moduleName [OMBLIST ORACLE_MODULES] {
puts " "
puts "Modul: $moduleName"
OMBCC '$moduleName'
puts "Folgende Tabellen sind in dem Modul:"
foreach tableName [OMBLIST TABLES] {
OMBALTER TABLE '$tableName' SET PROPERTIES (UDP_Version) VALUES('1')
OMBALTER TABLE '$tableName' SET PROPERTIES (UDP_Autor) VALUES('Warehouse ADM Meier')
OMBALTER TABLE '$tableName' SET PROPERTIES (UDP_Zuletzt_Aenderungs_Autor) VALUES('Fr.
Friedrich')
OMBALTER TABLE '$tableName' SET PROPERTIES (UDP_Status) VALUES('Testraum')
OMBALTER TABLE '$tableName' SET PROPERTIES (UDP_Zuletzt_geaendert_Am) VALUES('200305-31')
OMBALTER TABLE '$tableName' SET PROPERTIES (UDP_Erstellt_Am) VALUES('2003-01-04')
puts "
--> geaendert wurde $tableName"
}
OMBCC '..'
}
OMBCOMMIT
OMBCC '..'

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

288/299

Erstellen von Mappings

foreach sourceTableName $tableList {

puts -nonewline "CREATE MAPPING E_$sourceTableName .. "


OMBCREATE MAPPING 'E_$sourceTableName' SET PROPERTIES (DESCRIPTION ) \
VALUES ('mapping comment') \
ADD TABLE OPERATOR 'A_$sourceTableName\_CUM' \
BOUND TO TABLE '../$sourcemodule/$sourceTableName\_CUM' \
ADD TABLE OPERATOR 'B_$sourceTableName\_CUM' \
BOUND TO TABLE '../$sourcemodule/$sourceTableName\_CUM' \
ADD CONSTANT OPERATOR 'PROCES_VARIABLES' \
ADD ATTRIBUTE 'PROCES_CDE' OF GROUP 'OUTGRP1' OF OPERATOR 'PROCES_VARIABLES' SET PROPERTIES
(DATATYPE, LENGTH, EXPRESSION ) \
VALUES ('VARCHAR2', 30, '''E_$sourceTableName''') \
ADD ATTRIBUTE 'LAAD_DATUM' OF GROUP 'OUTGRP1' OF OPERATOR 'PROCES_VARIABLES' SET PROPERTIES
(DATATYPE, EXPRESSION ) \
VALUES ('DATE',
'"SA_ALGEMEEN"."GEEF_LAADDATUM"(''E_$sourceTableName'')') \
ADD FILTER OPERATOR 'A_LAADDATUM' SET PROPERTIES ( FILTER_CONDITION ) \
VALUES ( 'INOUTGRP1.CREATE_DTT > INOUTGRP1.LAAD_DATUM') \
ADD FILTER OPERATOR 'B_LAADDATUM' SET PROPERTIES ( FILTER_CONDITION ) \
VALUES ( 'INOUTGRP1.CREATE_DTT > INOUTGRP1.LAAD_DATUM') \
ADD JOINER OPERATOR 'JOIN_DETECT_WIJZIGINGEN' SET PROPERTIES ( JOIN_CONDITION ) \
VALUES ( 'INGRP1.MUT_CODE != INGRP2.MUT_CODE' ) \
ADD SET_OPERATION OPERATOR 'S_INSERT_EN_DELETE' SET PROPERTIES ( SET_OPERATION ) \
VALUES ( 'MINUS' ) \
ADD FILTER OPERATOR 'ALLEEN_UPDATE' SET PROPERTIES ( FILTER_CONDITION ) \
VALUES ( 'INOUTGRP1.MUT_CODE = ''>'' ' ) \
ADD SPLITTER OPERATOR 'SPLIT_INSERT_EN_DELETE' \
ADD CONSTANT OPERATOR 'CONST_PROCES_VARIABLE' \
ADD ATTRIBUTE 'I_MUT_CDE' OF GROUP 'OUTGRP1' OF OPERATOR 'CONST_PROCES_VARIABLE' SET
PROPERTIES (DATATYPE, LENGTH, EXPRESSION) \
VALUES ('VARCHAR2', 15, '''I''') \
ADD ATTRIBUTE 'D_MUT_CDE' OF GROUP 'OUTGRP1' OF OPERATOR 'CONST_PROCES_VARIABLE' SET
PROPERTIES (DATATYPE, LENGTH, EXPRESSION) \
VALUES ('VARCHAR2', 15, '''D''') \
ADD ATTRIBUTE 'U_MUT_CDE' OF GROUP 'OUTGRP1' OF OPERATOR 'CONST_PROCES_VARIABLE' SET
PROPERTIES (DATATYPE, LENGTH, EXPRESSION) \
VALUES ('VARCHAR2', 15, '''U''') \
ADD ATTRIBUTE 'PROCES_DAT' OF GROUP 'OUTGRP1' OF OPERATOR 'CONST_PROCES_VARIABLE' SET
PROPERTIES (DATATYPE, EXPRESSION) \
VALUES ('DATE', 'TRUNC(SYSDATE)') \
ADD TABLE OPERATOR 'I_$sourceTableName' \
BOUND TO TABLE '$sourceTableName' \
ADD TABLE OPERATOR 'D_$sourceTableName' \
BOUND TO TABLE '$sourceTableName' \
ADD TABLE OPERATOR 'U_$sourceTableName' \
BOUND TO TABLE '$sourceTableName' \
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

289/299

ADD CONNECTION FROM GROUP 'INOUTGRP1' OF OPERATOR 'A_$sourceTableName\_CUM' \


TO GROUP 'INOUTGRP1' OF OPERATOR 'A_LAADDATUM' \
ADD CONNECTION FROM GROUP 'INOUTGRP1' OF OPERATOR 'B_$sourceTableName\_CUM' \
TO GROUP 'INOUTGRP1' OF OPERATOR 'B_LAADDATUM' \
ADD CONNECTION FROM GROUP 'OUTGRP1' OF OPERATOR 'PROCES_VARIABLES' \
TO GROUP 'INOUTGRP1' OF OPERATOR 'A_LAADDATUM' \
ADD CONNECTION FROM GROUP 'OUTGRP1' OF OPERATOR 'PROCES_VARIABLES' \
TO GROUP 'INOUTGRP1' OF OPERATOR 'B_LAADDATUM' \
ADD CONNECTION FROM GROUP 'INOUTGRP1' OF OPERATOR 'A_LAADDATUM' \
TO GROUP 'INGRP1' OF OPERATOR 'JOIN_DETECT_WIJZIGINGEN' \
ADD CONNECTION FROM GROUP 'INOUTGRP1' OF OPERATOR 'A_LAADDATUM' \
TO GROUP 'INGRP1' OF OPERATOR 'S_INSERT_EN_DELETE' \
ADD CONNECTION FROM GROUP 'OUTGRP1' OF OPERATOR 'JOIN_DETECT_WIJZIGINGEN' \
TO GROUP 'INGRP2' OF OPERATOR 'S_INSERT_EN_DELETE' \
ADD CONNECTION FROM GROUP 'OUTGRP1' OF OPERATOR 'JOIN_DETECT_WIJZIGINGEN' \
TO GROUP 'INOUTGRP1' OF OPERATOR 'ALLEEN_UPDATE' \
ADD CONNECTION FROM GROUP 'OUTGRP1' OF OPERATOR 'S_INSERT_EN_DELETE' \
TO GROUP 'INGRP1' OF OPERATOR 'SPLIT_INSERT_EN_DELETE' \
ADD CONNECTION FROM GROUP 'OUTGRP1' OF OPERATOR 'SPLIT_INSERT_EN_DELETE' \
TO GROUP 'INOUTGRP1' OF OPERATOR 'I_$sourceTableName' \
BY NAME \
ADD CONNECTION FROM GROUP 'OUTGRP2' OF OPERATOR 'SPLIT_INSERT_EN_DELETE' \
TO GROUP 'INOUTGRP1' OF OPERATOR 'D_$sourceTableName' \
BY NAME \
ADD CONNECTION FROM GROUP 'INOUTGRP1' OF OPERATOR 'ALLEEN_UPDATE' \
TO GROUP 'INOUTGRP1' OF OPERATOR 'U_$sourceTableName' \
BY NAME \
ADD CONNECTION FROM GROUP 'INOUTGRP1' OF OPERATOR 'B_LAADDATUM' \
TO GROUP 'INGRP2' OF OPERATOR 'JOIN_DETECT_WIJZIGINGEN' \
ADD CONNECTION FROM ATTRIBUTE 'PROCES_DAT' OF GROUP 'OUTGRP1' OF OPERATOR
'CONST_PROCES_VARIABLE' \
TO ATTRIBUTE 'PROCES_DAT' OF GROUP 'INOUTGRP1' OF OPERATOR 'I_$sourceTableName' \
ADD CONNECTION FROM ATTRIBUTE 'I_MUT_CDE' OF GROUP 'OUTGRP1' OF OPERATOR
'CONST_PROCES_VARIABLE' \
TO ATTRIBUTE 'MUTATIE_CDE' OF GROUP 'INOUTGRP1' OF OPERATOR 'I_$sourceTableName' \
ADD CONNECTION FROM ATTRIBUTE 'PROCES_DAT' OF GROUP 'OUTGRP1' OF OPERATOR
'CONST_PROCES_VARIABLE' \
TO ATTRIBUTE 'PROCES_DAT' OF GROUP 'INOUTGRP1' OF OPERATOR 'D_$sourceTableName' \
ADD CONNECTION FROM ATTRIBUTE 'D_MUT_CDE' OF GROUP 'OUTGRP1' OF OPERATOR
'CONST_PROCES_VARIABLE' \
TO ATTRIBUTE 'MUTATIE_CDE' OF GROUP 'INOUTGRP1' OF OPERATOR 'D_$sourceTableName' \
ADD CONNECTION FROM ATTRIBUTE 'PROCES_DAT' OF GROUP 'OUTGRP1' OF OPERATOR
'CONST_PROCES_VARIABLE' \
TO ATTRIBUTE 'PROCES_DAT' OF GROUP 'INOUTGRP1' OF OPERATOR 'U_$sourceTableName' \
ADD CONNECTION FROM ATTRIBUTE 'U_MUT_CDE' OF GROUP 'OUTGRP1' OF OPERATOR
'CONST_PROCES_VARIABLE' \
TO ATTRIBUTE 'MUTATIE_CDE' OF GROUP 'INOUTGRP1' OF OPERATOR 'U_$sourceTableName'

OMBCOMMIT

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

290/299

Erzeugen von Objekten


Anlegen einer Textdateidefinition
OMBCONNECT owbr2/owbr2@localhost:1522:o102
OMBCC 'STEP_BY_STEP'
OMBCC 'FF_ORTE'
set FileName "FILEEXAMPLE"
puts "----------------- Erzeuge Flat File $FileName"
OMBDROP FLAT_FILE '$FileName'
OMBCREATE FLAT_FILE '$FileName'
SET PROPERTIES
(DATA_FILE_NAME, IS_DELIMITED)
VALUES ('vkG1291V00.dat.vka', 0)
ADD RECORD '$FileName'
ADD FIELD 'SATZKENUNUNG'
SET PROPERTIES (DATATYPE,START_POSITION,LENGTH)
VALUES
('CHAR',1,1)
ADD FIELD 'FILTER_NR'
SET PROPERTIES (DATATYPE,START_POSITION,LENGTH)
VALUES
('INTEGER EXTERNAL',2,6)
ADD FIELD 'FILTER_DATUM'
SET PROPERTIES (DATATYPE,START_POSITION,LENGTH)
VALUES
('INTEGER EXTERNAL',8,8)
ADD FIELD 'FILTER_ZEIT' SET PROPERTIES (DATATYPE,START_POSITION,LENGTH)
VALUES
('INTEGER EXTERNAL',16,7)
ADD FIELD 'DATENTYP'
SET PROPERTIES (DATATYPE,START_POSITION,LENGTH)
VALUES
('CHAR',23,2)
ADD FIELD 'VERSION'
SET PROPERTIES (DATATYPE,START_POSITION,LENGTH)
VALUES
('CHAR',25,2)

\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\

OMBCC '../TUI_DATABASE'
set TableName "TABLEEXAMPLE"
puts "----------------- Erzeuge Tabelle $TableName"
OMBDROP TABLE '$TableName'
OMBCREATE TABLE '$TableName'
\
ADD COLUMN 'REC_LFDNR' SET PROPERTIES (DATATYPE) VALUES ('NUMBER')
\
ADD COLUMN 'LAENDERKZ' SET PROPERTIES (DATATYPE, LENGTH) VALUES ('VARCHAR2', 1)
ADD COLUMN 'FILTER_NR' SET PROPERTIES (DATATYPE) VALUES ('NUMBER')
\
ADD COLUMN 'FILTER_DATUM' SET PROPERTIES (DATATYPE) VALUES ('NUMBER')
\
ADD COLUMN 'FILTER_ZEIT' SET PROPERTIES (DATATYPE) VALUES ('NUMBER')
\
ADD COLUMN 'DATENTYP' SET PROPERTIES (DATATYPE, LENGTH) VALUES ('VARCHAR2', 2) \
ADD COLUMN 'VERSION' SET PROPERTIES (DATATYPE, LENGTH) VALUES ('VARCHAR2', 2)

set MapName "MAP_FILEEXAMPLE"


puts "----------------- Erzeuge Mapping $MapName"
OMBDROP MAPPING '$MapName'
OMBCREATE MAPPING '$MapName'
SET PROPERTIES (business_name, description) VALUES ('Mapping Beispiel', 'Mapping Beispiel') \
ADD FLAT_FILE OPERATOR '$FileName' BOUND TO FLAT_FILE '../TUI_DATA/$FileName'
ADD DATA_GENERATOR OPERATOR 'DATAGENERATOR'
ADD FILTER OPERATOR 'FILTER'
SET PROPERTIES (FILTER_CONDITION) VALUES (' INOUTGRP1.SATZKENUNUNG = ''D'' ')
ADD CONSTANT OPERATOR 'CONST'
ADD ATTRIBUTE 'LAENDERKZ' OF GROUP 'OUTGRP1' OF OPERATOR 'CONST'
SET PROPERTIES (DATATYPE,LENGTH,EXPRESSION) VALUES ('VARCHAR2',1,'''D''')
ADD TABLE OPERATOR '$TableName' BOUND TO TABLE '$TableName'
ADD CONNECTION FROM GROUP '$FileName' OF OPERATOR '$FileName'
TO GROUP 'INOUTGRP1' OF OPERATOR 'FILTER'
ADD CONNECTION FROM GROUP 'INOUTGRP1' OF OPERATOR 'FILTER'
TO GROUP 'INOUTGRP1' OF OPERATOR '$TableName' BY NAME
ADD CONNECTION FROM ATTRIBUTE 'RECNUM' OF GROUP 'OUTGRP1' OF OPERATOR 'DATAGENERATOR'
TO ATTRIBUTE 'REC_LFDNR' OF GROUP 'INOUTGRP1' OF OPERATOR '$TableName'
ADD CONNECTION FROM ATTRIBUTE 'LAENDERKZ' OF GROUP 'OUTGRP1' OF OPERATOR 'CONST'
TO ATTRIBUTE 'LAENDERKZ' OF GROUP 'INOUTGRP1' OF OPERATOR '$TableName'
Stand/letzte nderung 9/16/16

\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\

329869597

Oracle Warehouse Builder Step-By-Step

291/299

OMBCOMMIT
OMBDISCONNECT

-- Anlegen eines Modules


OMBCREATE ORACLE_MODULE 'MO_BATCH'
-- Commit
OMBCOMMIT
-- Lschen eines Modules
OMBDROP ORACLE_MODULE 'MO_BATCH'

OMBCREATE ORACLE_MODULE 'MO_BATCH' \


SET PROPERTIES (DESCRIPTION) VALUES ('Automatisiert angelegtes Modul')
-- Einschalten des Prompts dann sieht man, auf welchen PCO man sich befindet
set OMBPROMPT on
--> /MY_PROJECT/WAREHOUSE>
-- Anlegen einer User Defined Property
OMBREDEFINE CLASS_DEFINITION 'TABLE' ADD PROPERTY_DEFINITION 'UDP_Autor' SET
PROPERTIES (TYPE) VALUES('STRING')
OMBREDEFINE CLASS_DEFINITION 'TABLE' ADD PROPERTY_DEFINITION 'UDP_Erstellt_Am'
SET PROPERTIES (TYPE) VALUES('DATE')
OMBREDEFINE CLASS_DEFINITION 'TABLE' ADD PROPERTY_DEFINITION
'UDP_Zuletzt_geaendert_Am' SET PROPERTIES (TYPE) VALUES('DATE')
OMBREDEFINE CLASS_DEFINITION 'TABLE' ADD PROPERTY_DEFINITION
'UDP_Zuletzt_Aenderungs_Autor' SET PROPERTIES (TYPE) VALUES('STRING')
OMBREDEFINE CLASS_DEFINITION 'TABLE' ADD PROPERTY_DEFINITION 'UDP_Status' SET
PROPERTIES (TYPE,DEFAULT_VALUE) VALUES('STRING','Entwicklung')
OMBREDEFINE CLASS_DEFINITION 'TABLE' ADD PROPERTY_DEFINITION 'UDP_Version' SET
PROPERTIES (TYPE,DEFAULT_VALUE) VALUES('INTEGER','0')
-- Lschen von UDPs
OMBREDEFINE CLASS_DEFINITION 'TABLE' DELETE PROPERTY_DEFINITION 'UDP_Autor'
OMBREDEFINE CLASS_DEFINITION 'TABLE' DELETE PROPERTY_DEFINITION 'UDP_Autor'
-- ndern eines Columnwertes
OMBALTER TABLE 'ARTIKEL_ZIEL' SET PROPERTIES (UDP_Version) VALUES('1')

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

292/299

-- ndern Business name


OMBALTER ORACLE_MODULE 'MO_BATCH' \
SET PROPERTIES (BUSINESS_NAME) \
VALUES ('Metadata_Demo_Modul')

Allgemeine Tipps
Aufruf eines Mapping im Batch zu Testzwecken

In SQLPLUS mit einem Access-User gehen (z. B. OWBRT_AC)


Aufruf des folgenden Skriptes mit den entsprechenden Parametern
OWB-HOME\owb\rtp\sql\sqlplus_exec_template.sql

z. B.
start D:\oracle\owb\owb\rtp\sql\sqlplus_exec_template.sql owbrt LOC_DWH PLSQL MP_TZ '','' ,",";
Das gleiche Beispiel als Batch-Datei-Aufruf:
sqlplus owbrt_ac/owbrt_ac@ora92
@D:\oracle\owb\owb\rtp\sql\sqlplus_exec_template.sql owbrt
LOC_DWH PLSQL MP_TZ '','' ,",";
In dem Beispiel stehen die Parameter fr
Owbrt
LOC_DWH
PLSQL
MP_TZ
'','' ,",";

Runtime-Schema (Owner)
Name der Location des Schemas in dem das Mapping laufen soll (Zielschema)
Typ des Laufobjektes
Name des Mappings
Parameter, die zunchst nicht bentigt werden

Weitere Informationen sind als Kommentare in dem Header der Prozedur enthalten.
Tabellen im Speicher vorhalten
ALTER TABLE table_name CACHE;
Sinnvoll fr Referenztabellen (Lookup-Tables), auf die immer wieder zugegriffen werden muss
Das Mapping

Ntzliche Zeitfunktionen zum Erstellen einer Zeitdimension


Anwendung

Beispielkommando

Aktuelles Jahr
Quartal im Jahr
Monat im Jahr
Tag im Monat
Woche im Jahr
Monat

select TO_NUMBER( TO_CHAR(sysdate, 'YYYY' ) ) from dual


select TO_NUMBER( TO_CHAR(sysdate, 'Q' ) ) from dual
select TO_NUMBER( TO_CHAR(sysdate, 'MM' ) ) from dual
select TO_NUMBER( TO_CHAR(sysdate, 'DD' ) ) from dual
select to_number(to_char(sysdate,'WW')) from dual
select TO_CHAR(sysdate, 'fmMonth', 'nls_date_language =
GERMAN') from DUAL;
select TO_CHAR(sysdate, 'Mon' ) from dual
select TO_CHAR(sysdate, 'fmday', 'nls_date_language =
GERMAN') from DUAL;
select TO_NUMBER( TO_CHAR(sysdate, 'D' ) ) from dual

Kurzform Monat
Name
Tag der Woche
(amerikanisches
Format)
Tag der Woche

select

Stand/letzte nderung 9/16/16

Ergebnis
fr Datum
30.06.03
(Montag)
2003
2
6
30
26
Juni
Jun
montag
2
1
329869597

Oracle Warehouse Builder Step-By-Step


(Deutsche
Umrechnung)

Tag im Jahr
Kurzform Tag
Stunde am Tag(12)
Uhrzeit
Stunde am Tag(24)

293/299

case to_number(to_char(sysdate,'D'))-1
when 0 then 7
else to_number(to_char(sysdate,'D'))-1
end
from dual
/
select TO_NUMBER( TO_CHAR(sysdate, 'DDD' ) ) from dual
select ( TO_CHAR( sysdate, 'dy' ) ) from dual
select to_number(to_char(sysdate,'HH12')) from dual
select to_char(sysdate,'HH12:MI:SS') from dual
select to_number(to_char(sysdate,'HH24')) from dual

181
Mon
11
11:23:17
23

Funktion zum liefern des 1. Tages des aktuellen Quartals


CREATE OR REPLACE FUNCTION F_1_TAG_Q(DATUM IN DATE)
RETURN DATE AS
BEGIN
if to_char(DATUM,'mmdd') < '0331' then return to_date(to_char(DATUM,'YYYY')||'0101','YYYYMMDD');
end if;
if to_char(DATUM,'mmdd') < '0630' then return to_date(to_char(DATUM,'YYYY')||'0401','YYYYMMDD');
end if;
if to_char(DATUM,'mmdd') < '0930' then return to_date(to_char(DATUM,'YYYY')||'0701','YYYYMMDD');
end if;
return to_date(to_char(DATUM,'YYYY')||'1001','YYYYMMDD');
END;

Prfen auf Vorhandensein von Referenzstzen oder Stammdaten


Angenommen Bewegungsdaten (z. B. die Bestelldaten des Beispiels in dieser Unterlage) sollen in ein
Warehouse bernommen werden. Im Verlauf dieses Vorgangs soll geprft werden, ob die dazu
passenden Stammdaten (z. B. Kunden) auch vorhanden sind. Wenn nicht mssen Fehlermeldungen
geschrieben werden.
Lsungsvorschlag: Erstellen einer Funktion (IN_KUNDENSTAMM_CASE), die im Verlauf des
Mappings auf die Kundentabelle zu Prfzwecken zugreift. Bei nicht Vorhandensein eines
Kundensatzes wird in eine Fehlertabelle geschrieben, die wie folgt aussieht:
create table fehlertabelle (text varchar2(20));
Die Funktion IN_KUNDENSTAMM_CASE liefert bei nicht Vorhandensein eines KUNDENCODEs von
BESTELLUNG in der Kundentabelle KUNDE den Wert 0 zurck. Dieser Wert wird in der
Splitterbedingung fr den Splitterzweig PROTOKOLL geprft und ein Satz in die Tabelle
FEHLERTABELLE geschrieben.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

294/299

Das Mapping zur Erstellung des Fehlerprotokolls

Die Funktion IN_KUNDENSTAMM_CASE:

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

295/299

Beispiel: Zugriff auf das Runtime-System:


Lesen Runtime
column map_run_id format 9999
column map_name format A30
column start_time format A10
column end_time format A10
select map_run_id,map_name,start_time,end_time from all_rt_audit_map_runs;

(Create a new sequence in runtime schema let's say 'myseq'.)


Create a shell script containing the following steps to be executed in a
SQL session for every mapping:
1 - Get a new sequence value with:
SELECT myseq.NEXTVAL into :newseq;
2 - Concatenate mapping name with this value you'll have a unique jobname
'mymap_newseq'
3 - Begin the job
==> exec wbprti.job_begin('mymap_newseq');
4 - Execute your mapping ==> exec
mymap.main(........,p_job=>'mymap_newseq');
5 - Get process ID:
SELECT process_id into :get_process_id
FROM all_iv_process
WHERE process_name = 'mymap_newseq';
6 - Get map status and map ID:
SELECT status , map_run_id into :get_status,:get_map_run_id
FROM all_iv_map_run
WHERE process_run_id = get_process_id;
Optionally you can get the error message with:
6a - SELECT error_number,error_message into
:get_error_number,:get_error_message
FROM all_iv_run_error
WHERE map_run_id = get_map_run_id;
If get_status = 'COMPLETE'
7a - Finalize the job with success ==> exec
wbprti.job_end('mymap_newseq');
else
7b - Finalize the job with failure ==> exec
wbprti.job_fail('mymap_newseq');
Sinnvolle Namenskonventionen
Es gibt keine Vorgaben fr die Vergabe von Namen, auer dass keine reservierten Wrter genutzt
werden drfen (siehe hierfr die Dokumentation).
Aber aufgrund der praktischen Erfahrung knnen einige Tipps gegeben werden:

Gruppenbegriffe in Joinern/Splittern sprechend whlen, sie werden in die Ausgaben der


Operatoren weitergereicht und knnen damit auch in den Folgetabellen fr die Columns
genutzt werden.

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

296/299

Bei Dimensionen kurze Level-Prfixe nutzen, damit sind auf unterschiedlichen


Hierarchieleveln gleich lautende Attribute mglich die durch level-spezifische Prfixe wieder
unterschieden werden knnen.

Mapping-Namen sollten den Namen der Hauptzieltabellen enthalten (zur Orientierung).

Bei allen Namen sollte man sich bewusst sein, dass diese Namen auch in den
Metadatenreports genutzt werden. Also je sprechender sie sind, umso deutlicher sind die
Metadaten.

Sprechende Namen fr Foreign Keys festlegen, das gilt speziell fr die FKs zwischen Fakten
und Dimensionen. Wenn man das nicht macht, dann generiert das System kryptische Namen,
die in allen Wizzards auftauchen und man hat keinerlei Orientierung. Bei einer Faktentabelle
sollten die FKs die Namenskrzel der Dimensionen beinhalten, auf die sie verweisen. Z. B.
sind Constraint-Verletzungen ber den Audit-Viewer dann schneller identifizierbar.

Ansonsten:
MP_
- Mapping
MO_ - Modul
VW_ - View
MAV_ - Mat. View
DIM_ - Dimensional Table
DBL_ - Database Link
TB_
- Tabelle
LC_
- Locations
Source der generierten Packages anschauen:
select text, line from user_source where name = 'MP_TRANSAKTIONEN' and line < 10

Polling
Es gibt Anforderungen bei denen Quelldaten in kurzen Zeitabstnden (Intervalle von wenigen
Sekunden oder Minuten) abgefragt werden sollen. Hierzu ist eine Lese-Routine (z. B. Stored
Procedure) regelmig zu starten (Polling).
Genutzt werden kann hierzu das Datenbank Job-Management-System.
Man nutzt einen sog. Background Prozess (SNP process) ber den man eine Job-Queue erstellen
kann. Eine Prozedur wird in die Job-Queue gestellt, die die Prozedur in Abhngigkeit der gewhlten
Parameter ausfhrt.
Wichtige Einstellungen in der INIT.ORA:
-> JOB_QUEUE_PROCESSES n
( dieser Wert ist auf > 0 zu setzen, festgelegt wird die max.
Anzahl der mglichen Prozesse fr die Jobs)
Zum Starten einer Prozedur ber eine Job_Queue ist folgende Routine zu erstellen.
begin
DBMS_JOB.SUBMIT(job OUT BINARY_INTEGER,
'Name einer Prozedur;' IN VARCHAR2,
nchster Startzeitpunkt IN DATE DEFAULT SYSDATE,
Intervall in Zeiteinheiten IN VARCHAR2;
end;
/
Beispiel:
VARIABLE jobnr NUMBER;
begin
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

297/299

DBMS_JOB.SUBMIT(:jobnr, 'tempInsert;', sysdate, 'sysdate + (10/(24*60*60))');


end;
/
jobnr ist ein Platzhalter in den das Jobsystem eine eindeutige interne Nummer schreibt. ber diese
Nummer knnen die Jobs spter identifiziert werden.
tempInsert; ist ein Ausdruck, der zum Aufrufen der eigentlichen Routine gebraucht wird, deswegen ist
hier auch ein Semikolon mit in die Anfhrungsstriche eingeschlossen. Hier knnen also auch
Parameter der Prozedur mitgegeben werden.
sysdate ist das Startdatum, also jetzt.
'sysdate + (10/(24*60*60))' ist ein Ausdruck der eine Zeitspanne X von jetzt an berechnet. In diesem
Fall werden 10 Sekunden berechnet.
Testabfrage zur Ausgabe der Jobnummer im vorigen Beispiel:
print jobnr;
Orientierung darber wie viele Jobs laufen:
select job, schema_user,interval from user_jobs;
In user_jobs stehen alle Informationen ber aktuell laufende Jobs.
Lschen eines Jobs:
begin
DBMS_JOB.remove(61);
End
61 ist die Jobnummer, die das System intern vergeben hat.
Neu-kompilieren von Sourcen in der Datenbank
Durch Einspielen von Patches oder unberlegte Lschvorgnge knnen Prozeduren oder Funktionen
In den Zustand INVALID gesetzt werden. (Herausfinden von invaliden Sourcen am einfachsten
ber den Enterprise Manager.). Um fr ein ganzes Schema alle kompilierbaren Ressourcen wieder
neu zu kompilieren kann man folgenden Aufruf auf ein Schema absetzen (hier Schema DW):
exec dbms_utility.compile_schema('DW');
Achtung: Je nach Menge der Objekte kann das lnger laufen.

Testdaten (CSV-File)
ORTE.CSV (Beispiel zum Einlesen von Flat Files)
Orte_Nr,Ort,PLZ,Bundesland,Region,Nummernfeld
1,'Berlin','D-86269','Berlin','Ost',3
2,'Braunschweig','D-69279','Niedersachsen','Mitte',9
3,'Bremen','D-37053','Bremen','Nord',1
4,'Dortmund','D-71382','Nordrhein-Westfalen','Sued',1
5,'Elmshorn','D-29543','Schleswig Holstein','Nord',1
6,'Essen','D-65922','Nordrhein-Westfale','West',6
7,'Hannover','D-87741','Niedersachsen','West',1
8,'Kaiserslautern','D-47186','Rheinland Pfalz','Mitte',7
9,'Karlsruhe','D-84769','Baden Wuerttemberg','Mitte',4
10,'Kiel','D-27228','Schleswig Holstein','Nord',3
11,'Ludwigsburg','D-43165','Bayern','Mitte',5
Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step

298/299

12,'Mannheim','D-15059','Baden Wuerttemberg','West',9
13,'Muenchen','D-80639','Bayern','Sued',7
15,'Muenster','D-84407','Nordrhein-Westfalen','West',4
16,'Nuernberg','D-21394','Bayern','Sued',1
17,'Stuttgart','D-41722','Baden Wuerttemberg','Sued',1
18,'Trier','D-63893','Rheinland Pfalz','Sued',6
19,'Ulm','D-62064','Baden Wuerttemberg','Sued',6
20,'Wuerzburg','D-52375','Bayern','Ost',4
21,'Augsburg','D-52375','Bayern','Sued',4
22,'Saarbruecken','D-52375','Saarland','West',7
23,'Leipzig','D-52375','Sachsen','Ost',2
24,'Ludwigshafen','D-52375','Rheinland Pfalz','Mitte',8
25,'Dreieich','D-52375','Hessen','Mitte',4
26,'Darmstadt','D-52375','Hessen','Mitte',9
27,'Freiburg','D-52375','Baden Wuerttemberg','Sued',6
28,'Regensburg','D-52375','Bayern','Sued',7
29,'Potsdam','D-52375','Brandenburg','Ost',3
30,'Duisburg','D-52375','Nordrhein-Westfale','West',5
31,'Koeln','D-52375','Nordrhein-Westfale','West',8
32,'Koblenz','D-52375','Rheinland Pfalz','Mitte',1
33,'Worms','D-52375','Rheinland Pfalz','West',2
34,'Heidelberg','D-52375','Baden Wuerttemberg','Mitte',7
35,'Coburg','D-52375','Bayern','Sued',5
36,'Frankfurt','D-52375','Hessen','Mitte',4
37,'Flensburg','D-52375','Schleswig Holstein','Nord',3
38,'Wiesbaden','D-52375','Hessen','Mitte',8
39,'Mainz','D-52375','Hessen','Mitte',8
40,'Fuerth','D-52375','Bayern','Sued',3
41,'Duesseldorf','D-52375','Nordrhein-Westfalen','West',5
42,'Osnabrueck','D-52375','Nordrhein-Westfalen','Mitte',7
43,'Bielefeld','D-52375','Nordrhein-Westfalen','Mitte',8
44,'Aachen','D-52375','Nordrhein-Westfalen','West',2
45,'Dresden','D-52375','Sachsen','Ost',9
46,'Chemnitz','D-52375','Sachsen','Ost',3
47,'Luebeck','D-52375','Schleswig Holstein','Nord',6
48,'Wilhelmshaven','D-52375','Nordrhein-Westfalen','Nord',1
49,'Kassel','D-52375','Hessen','Mitte',7
50,'Schweinfurt','D-52375','Bayern','Sued',8
51,'Erfurt','D-52375','Thueringen','Ost',4
52,'Bamberg','D-52375','Bayern','Sued',3
53,'Hamburg','D-52375','Hamburg','Nord',8

Testhilfen und hilfreiche Kommandos fr SQL*Plus Tests


In SQLPLUS:
Set timing on
set autotrace on explain;
show parameters que...
SET LINE nn

Messung von verbrauchter Zeit


Kommandoverarbeitung tracen
Abfrage gesetzter init.ora-Parameter
Verbreiterung der Ausgabezeilen

Select * from Tab;

Schneller Zugriff auf die fr den USER zur


Verfgung stehenden Tabellen.

Formatierungen der Ausgaben in SQLPLUS:

Stand/letzte nderung 9/16/16

329869597

Oracle Warehouse Builder Step-By-Step


SET PAGESIZE 0
SET PAGESIZE nn
SET HEADING OFF
COLUMN column_name FORMAT 9999
COLUMN columname FORMAT A20
CLEAR FORMAT
BREAK ON feldname [ON feldname] SKIP n
CLEAR BREAKS
Spool C:/abc.txt

Spool off

299/299
Ausschalten der Seiteneinteilung. Sinnvoll fr
Listenausgaben ohne strende Seitenkpfe.
Erhhen/ndern der Anzahl Ausgabezeilen bevor
eine neue berschrift folgt
Ausschalten der Column-berschriften
Festelgen von Spaltenausgabeformaten fr
Listen, z. B. Festlegen der Spaltenbreite.
Unterdrcken
von
Gruppenebene
Schreiben in eine Datei

Wiederholungen

auf

Schnelles Erstellen einer CSV-Datei


Beispiel fr das einfache und schnelle Erzeugen einer CSV-Datei aus den Eintrggen einer Tabelle. In
dem folgenden Beispiel sind Semikolons eingefgt.
column VORNMAENNL_NR format 9999
column VORNAME format A20
column GESCHLECHT format 9
column ANREDE format A4
Spool d:\td\xx
select VORNMAENNL_NR,';',VORNAME,';',GESCHLECHT,';',ANREDE,';' from vorname;
spool off
Hintergrund - Erstellen einer Tabelle mit Parameteraufruf
accept TName Prompt "Name einer neu zu erstellenden Tabelle: "
drop table &TName;
CREATE TABLE &TName(A NUMBER(2));
insert into &TName (A) Values(10);
select * from &TName;
commit;
exit;
/
Hilfskommandos zum Unterdcken des Outputs im Betriebssystemfenster:
set echo off
set termout off

Stand/letzte nderung 9/16/16

329869597