02.11.2013 Aufrufe

Diplombericht Master Thesis

Diplombericht Master Thesis

Diplombericht Master Thesis

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Diplombericht</strong> <strong>Master</strong> <strong>Thesis</strong><br />

Lightweight DWH Interface<br />

in der Firma Emmi Schweiz AG<br />

Abstract<br />

Diese Arbeit beinhaltet das Entwickeln einer Schnittstellentechnik, welche die Daten von<br />

einem Quellsystem in ein Datawarehouse überträgt. Hauptziel ist, die heutige Belastung der<br />

Quellsysteme um mindestens 70% zu verringern. Auch soll der Konfigurationsaufwand neuer<br />

Schnittstellen minimiert werden.<br />

Klasse.Nr / Datum: MAS-07-01.21 / 27. August 2009<br />

Experte:<br />

Betreuer:<br />

Student:<br />

Thomas Glauser, Lährenbühlstrasse 14b , 8112 Otelfingen<br />

Tel. P: +41 79 217 66 82<br />

Tel. G: +41 52 261 57 58<br />

E-Mail: thomas.glauser.di@bluewin.ch<br />

Urs Müller, Forelstrasse 1, 3072 Ostermundigen<br />

Tel. G: +41 31 930 24 84<br />

E-Mail: urs-b.mueller@emmi.ch<br />

Stefan Lüthi, Allmendingenstrasse 16, 3608 Thun<br />

Tel. P: +41 79 458 46 84<br />

Tel. G: +41 31 930 24 88<br />

E-Mail: stefan.luethi@emmi.ch<br />

Keywords:<br />

10.09.2009<br />

Datenbank, Datawarehouse, Oracle, ETL, Schnittstelle<br />

Seite 1 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

Änderungskontrolle<br />

Version Datum Autor Bemerkungen<br />

0.1 27.08.2009 Stefan Lüthi Erstellung<br />

0.2 30.08.2009 Stefan Lüthi Testing & Planung<br />

0.3 06.09.2009 Stefan Lüthi Anhang & Change Requests<br />

0.4 08.09.2009 Stefan Lüthi Erfahrungen und Schlusswort<br />

1.0 10.11.2009 Stefan Lüthi Fertigstellung<br />

Review / Prüfung<br />

Version Prüfdatum Prüfende Stelle Bemerkungen<br />

Referenzierte Dokumente<br />

Version<br />

Dokument<br />

10.09.2009 Seite 2 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

Inhaltsverzeichnis<br />

1 Allgemeines......................................................................................................... 6<br />

1.1 Dokument ........................................................................................................ 6<br />

1.1.1 Zweck.......................................................................................................... 6<br />

1.1.2 Umfang........................................................................................................ 6<br />

1.1.3 Leserkreis.................................................................................................... 6<br />

1.1.4 Übersicht..................................................................................................... 6<br />

1.1.5 Begriffe und Definitionen ............................................................................. 6<br />

1.1.6 Nomenklatur................................................................................................ 6<br />

2 Projektübersicht.................................................................................................. 7<br />

2.1 Allgemeine Beschreibung ................................................................................ 7<br />

2.1.1 ETL Prozess................................................................................................ 7<br />

2.1.2 Ladeprozess kleine Tabellen ....................................................................... 8<br />

2.1.3 Ladeprozess grosser Tabellen ................................................................... 8<br />

2.2 Problemstellung............................................................................................... 9<br />

2.3 Projektziele...................................................................................................... 9<br />

2.4 Mögliche Lösungen........................................................................................ 10<br />

2.4.1 LogMiner (erste Vision) ............................................................................. 10<br />

2.4.2 Timestamp / Change Key Column ............................................................. 11<br />

2.4.3 Tabel differencing...................................................................................... 11<br />

2.4.4 Oracle Change Data Capture .................................................................... 12<br />

2.5 Entscheid....................................................................................................... 13<br />

2.5.1 Erklärung zur Bewertung ........................................................................... 13<br />

3 Analyse .............................................................................................................. 15<br />

3.1 Change Data Capture.................................................................................... 15<br />

3.1.1 Architektur ................................................................................................. 15<br />

3.1.1.1 Publisher......................................................................................... 16<br />

3.1.1.2 Source Tabelle................................................................................ 16<br />

3.1.1.3 Change Source............................................................................... 16<br />

3.1.1.4 Change Set..................................................................................... 16<br />

3.1.1.5 Change Table ................................................................................. 16<br />

3.1.1.6 Subscriber....................................................................................... 16<br />

3.1.2 Change Data Capture Modus .................................................................... 17<br />

3.2 Applikation..................................................................................................... 18<br />

3.2.1 Pakete....................................................................................................... 18<br />

3.2.2 Use Case Diagramm (Publish) .................................................................. 19<br />

3.2.3 Übersicht Use Cases (Publish).................................................................. 20<br />

3.2.4 Aktoren...................................................................................................... 20<br />

3.2.5 Detailbeschreibung Use Cases (Publish)................................................... 21<br />

3.2.5.1 Programm starten ........................................................................... 21<br />

3.2.5.2 Login............................................................................................... 22<br />

3.2.5.3 Destinationsystem konfigurieren ..................................................... 23<br />

3.2.5.4 Change Source konfigurieren.......................................................... 24<br />

3.2.5.5 Change Source löschen.................................................................. 26<br />

3.2.5.6 Change Set konfigurieren ............................................................... 28<br />

3.2.5.7 Change Set löschen........................................................................ 30<br />

3.2.5.8 Changetabelle ändern..................................................................... 32<br />

3.2.5.9 Changetabelle purgen..................................................................... 34<br />

10.09.2009 Seite 3 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

3.2.5.10 Changetabelle erstellen ................................................................ 35<br />

3.2.5.11 Change Tabelle löschen ............................................................... 38<br />

3.2.5.12 Sourcesystem konfigurieren.......................................................... 39<br />

3.2.6 Use Case Diagramm (Subscribe) .............................................................. 40<br />

3.2.7 Übersicht Use Cases (Subscribe).............................................................. 40<br />

3.2.8 Spezifikation GUI....................................................................................... 41<br />

3.2.8.1 Tree View........................................................................................ 41<br />

3.2.8.2 Menu Bar ........................................................................................ 41<br />

3.2.8.3 Toolbar............................................................................................ 42<br />

3.2.8.4 Kontext Menu auf TreeView ............................................................ 42<br />

3.2.8.5 Statusbar ........................................................................................ 42<br />

4 Design ................................................................................................................ 43<br />

4.1 Applikation..................................................................................................... 43<br />

4.1.1 Übersicht Struktur...................................................................................... 43<br />

4.1.2 Source Code ............................................................................................. 44<br />

4.2 Datenbank ..................................................................................................... 45<br />

4.2.1 DB Model DWH (Destination System) ....................................................... 45<br />

4.2.1.1 all_change_sources ........................................................................ 45<br />

4.2.1.2 all_change_sets.............................................................................. 45<br />

4.2.1.3 all_change_tables ........................................................................... 45<br />

4.2.1.4 all_published_columns.................................................................... 45<br />

4.2.1.5 all_tables......................................................................................... 46<br />

4.2.2 DB Model Source Datenbank .................................................................... 46<br />

4.2.2.1 all_tab_columns .............................................................................. 46<br />

4.2.2.2 all_tables......................................................................................... 46<br />

4.2.2.3 all_capture_prepared_tables........................................................... 46<br />

5 Testing ............................................................................................................... 47<br />

5.1 Ziel des Testens ............................................................................................ 47<br />

5.2 Übersicht der Tests........................................................................................ 47<br />

5.3 Testablauf...................................................................................................... 47<br />

5.3.1 Ablauf........................................................................................................ 47<br />

5.3.2 Test Dokumentation .................................................................................. 47<br />

5.3.3 Testmethoden ........................................................................................... 48<br />

5.3.4 Testfälle..................................................................................................... 48<br />

5.4 System Test................................................................................................... 48<br />

5.5 Usability Test................................................................................................. 48<br />

5.6 Testergebnisse.............................................................................................. 49<br />

5.6.1 Systemtests............................................................................................... 49<br />

5.6.2 Usabilitytests ............................................................................................. 49<br />

6 Planung und Zeitmanagement......................................................................... 50<br />

6.1 Vorgehensmodell........................................................................................... 50<br />

6.2 Zeitmanagement............................................................................................ 51<br />

6.3 Projektplan / Zeitplan und Meilensteine ......................................................... 52<br />

6.4 Termine ......................................................................................................... 53<br />

6.5 Projektmanagement....................................................................................... 53<br />

6.6 Meetings / Reviews /Statusmeldungen .......................................................... 53<br />

6.6.1 Meetings.................................................................................................... 53<br />

6.7 Reviews......................................................................................................... 53<br />

6.7.1 Statusmeldungen ...................................................................................... 53<br />

10.09.2009 Seite 4 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

7 Erfüllung der Anforderungen und Ziele .......................................................... 54<br />

7.1 Nicht funktionale Anforderungen.................................................................... 54<br />

7.2 Funktionale Anforderungen............................................................................ 55<br />

7.2.1 Publisher Teil............................................................................................. 55<br />

7.2.2 Subscriber Teil .......................................................................................... 55<br />

7.3 Ziele .............................................................................................................. 56<br />

8 Erfahrungen....................................................................................................... 57<br />

8.1 Resultat ......................................................................................................... 57<br />

8.2 Ausblick ......................................................................................................... 57<br />

8.3 Schlusswort ................................................................................................... 58<br />

9 Installations- und Betriebshandbuch .............................................................. 59<br />

9.1 Technische Umgebung.................................................................................. 59<br />

9.1.1 Client......................................................................................................... 59<br />

9.1.2 Datenbank................................................................................................. 59<br />

9.1.2.1 RDBMS........................................................................................... 59<br />

9.1.2.2 Server Umgebung........................................................................... 59<br />

9.2 Installation ..................................................................................................... 60<br />

9.2.1 Datenbank................................................................................................. 60<br />

9.2.1.1 Konfiguration Change Data Capture ............................................... 60<br />

9.2.1.2 Konfiguration LDI Tool .................................................................... 60<br />

9.2.2 Setup......................................................................................................... 61<br />

9.3 Benutzerhandbuch ........................................................................................ 64<br />

9.3.1 Über LDI.................................................................................................... 64<br />

9.3.2 Startup LDI ................................................................................................ 64<br />

9.3.3 Benutzeroberfläche ................................................................................... 65<br />

9.3.4 TreeView ................................................................................................... 66<br />

9.3.5 Objekte bearbeiten .................................................................................... 67<br />

9.3.6 Changesourcen bearbeiten ....................................................................... 67<br />

9.3.7 Changesets bearbeiten ............................................................................. 68<br />

9.3.8 Changetabellen bearbeiten........................................................................ 69<br />

9.3.8.1 Source Properties ........................................................................... 69<br />

9.3.8.2 Destination Properties..................................................................... 70<br />

9.3.9 Shortcuts................................................................................................... 72<br />

9.3.10 Fehlerbehandlung.................................................................................. 72<br />

10 Change Requests ....................................................................................... 73<br />

11 Anhang ........................................................................................................ 77<br />

11.1 Glossar.......................................................................................................... 77<br />

11.2 Referenzen.................................................................................................... 78<br />

11.3 Tabellenverzeichnis ....................................................................................... 79<br />

11.4 Abbildungsverzeichnis ................................................................................... 79<br />

10.09.2009 Seite 5 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

1 Allgemeines<br />

1.1 Dokument<br />

1.1.1 Zweck<br />

Dieses Dokument ist der <strong>Diplombericht</strong> der <strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21 „Lightweight DWH<br />

Interface“. Es bietet einen Überblick über die gesamte Arbeit und die erstellten Artefakte. Es<br />

soll aufgezeigt werden, welche Arbeiten im Rahmen der Diplomarbeit durchgeführt wurden<br />

und welche Resultate erzielt wurden. Ein wesentlicher Teil setzt sich aus dem Pflichtenheft<br />

und aus der Detailspezifikation zusammen. Zusätzlich werden die dazugehörigen Ergebnisse<br />

dokumentiert. Auch werden die im Laufe des Projekts aufgetretenen Änderungsanfragen<br />

aufgeführt und es wird ein Ausblick auf zukünftig geplante Versionen gegeben.<br />

1.1.2 Umfang<br />

Diese Arbeit wird in der Form einer <strong>Master</strong> <strong>Thesis</strong> vollzogen. Sie bildet einen Teil der<br />

Ausbildung zum <strong>Master</strong> of Advanced Studies in Information Technology (MAS-IT). Der<br />

gesamte Arbeitsaufwand beträgt 360 Stunden (12 ECTS-Punkte) und dauert ein Semester.<br />

1.1.3 Leserkreis<br />

Dieses Dokument richtet sich in erster Linie an den Experten und an den Betreuer.<br />

1.1.4 Übersicht<br />

Dieses Dokument ist wie folgt aufgebaut:<br />

Kapitel 1<br />

Kapitel 2<br />

Kapitel 3<br />

Kapitel 4<br />

Kapitel 5<br />

Kapitel 6<br />

Kapitel 7<br />

Kapitel 8<br />

Kapitel 9<br />

Kapitel 10<br />

Kapitel 11<br />

Vermittelt einen Überblick über das Dokument.<br />

Projektübersicht und Problemstellung<br />

Analyse Change Data Capture und Applikation<br />

Design Applikation und Datenbank<br />

Angaben und Ergebnisse zum Testing<br />

Planung und Zeitmanagement<br />

Übersicht über die Erfüllung der gesteckten Ziele und Anforderungen<br />

Ausblick und Schlusswort zu der Diplomarbeit<br />

Installations- und Betriebshandbuch<br />

Angaben zu den Change Requests<br />

Anhang<br />

1.1.5 Begriffe und Definitionen<br />

Die in diesem Dokument verwendeten Begriffe und Definitionen sind im Glossar beschrieben.<br />

1.1.6 Nomenklatur<br />

Das Dokument ist in Deutsch gehalten. Dort wo es jedoch sinnvoll erscheint, werden die<br />

englischen Originalbegriffe verwendet. Zu Gunsten einer besseren Lesbarkeit wird für<br />

sämtliche Bezeichnungen nur die männliche Form verwendet.<br />

10.09.2009 Seite 6 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

2 Projektübersicht<br />

2.1 Allgemeine Beschreibung<br />

Das Projekt befasste sich mit der Problematik der Übernahme von operativen Daten in den<br />

Staging Bereich eines Datawarehouse.<br />

Die Kapitel 2.1.1 und 2.1.2 zeigen die Ist - Situation dieser Schnittstellen im analysierten<br />

System auf. Das Kapitel 2.1.3 beschreibt die Probleme, welche sich in diesem Bereich stellen<br />

und auch den Anstoss für dieses Projekt gegeben haben.<br />

2.1.1 ETL Prozess<br />

Die Abbildung 1 zeigt den ETL - Prozess in der Emmi Schweiz AG. Dieser folgt immer dem<br />

gleichen Ablauf. Zuerst werden alle benötigten Daten von den Quellsystemen in den<br />

Stagingbereich des DWH übernommen (Punkt 1). Ab dort werden die Daten transformiert und<br />

konvertiert und werden in die verschiedenen Data - Marts geladen (Punkt 2).<br />

Die rot gestreifte Linie markiert den Bereich, in welchem sich dieses Projekt bewegt. Bereiche<br />

ausserhalb der Markierung sind von der geplanten Arbeit nicht betroffen.<br />

relational<br />

dimensional<br />

Quellsysteme<br />

transformation / converting<br />

evaluations<br />

ERP DB<br />

(OLTP)<br />

E1 <strong>Master</strong><br />

landing-zone<br />

Datawarehouse<br />

MIS DB<br />

Oracle 11g R1<br />

Standard Reports<br />

(Microstrategy)<br />

Sales Line<br />

ERP DB<br />

(OLTP)<br />

EFM<br />

1<br />

Staging<br />

2<br />

DWH Bus<br />

Financial<br />

Query<br />

Service<br />

Ad hoc Zugriff<br />

(SQL)<br />

Stammdaten DB<br />

(OLTP)<br />

DWH Bus<br />

ESDS<br />

Procurement<br />

Budget DB<br />

Feedback operationelle<br />

Systeme<br />

(PROCOS)<br />

PROCOS<br />

Abbildung 2-1: ETL Prozess Schema<br />

Metadaten<br />

10.09.2009 Seite 7 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

2.1.2 Ladeprozess kleine Tabellen<br />

Bei der Übernahme von Tabellen mit Records < 30'000'000 in den Stagingbereich, werden<br />

die kompletten Daten bei jeder Übertragung gelöscht und wieder geladen. Die Löschung<br />

erfolgt mit dem Befehl Truncate und ist dadurch sehr schlank gehalten. Der Ladevorgang ist<br />

bei einer grossen Anzahl Records aufwendig.<br />

2.1.3 Ladeprozess grosser Tabellen<br />

Bei der Übernahme von Tabellen mit Records > 30'000'000 in den Stagingbereich, werden<br />

nur Änderungen seit der letzten Übernahme verarbeitet.<br />

Abbildung 2 zeigt den Standardvorgang einer solchen Übernahme.<br />

1. Als erstes wird eine Hilfstabelle gelesen, welche die Primary Keys der gelöschten<br />

Records von der Haupttabelle enthält. Anhand dieses Keys werden auch auf der<br />

Zieltabelle diese Records gelöscht.<br />

2. Anhand einer Spalte, welche das Änderungsdatum enthält, werden die zusätzlichen<br />

oder geänderten Records seit der letzten Übernahme identifiziert. Da diese Spalte<br />

nicht indexiert ist, löst dies jede Nacht einen Full Table Scan aus.<br />

3. Um zu prüfen, ob auch wirklich die Daten auf der Quell- wie auch auf der<br />

Zieldatenbank gleich sind, wird nach jeder Übernahme einen Abgleich gemacht. Dies<br />

wird gemacht, indem man auf einer definierten Spalte eine Summe bildet und diese<br />

beiden Summen vergleicht. Die Vergangenheit hat gezeigt, dass dieser Abgleich<br />

notwendig ist, da schon einige Fehler gefunden wurden.<br />

4. Dies ist ein Trigger, welcher auf der Quelltabelle programmiert werden muss. Dieser<br />

stellt sicher, dass alle Änderungen mit einem korrekten Änderungsdatum versehen<br />

werden. Auch kann durch den Trigger gewährleistet werden, dass gelöschte Records<br />

zu einem späteren Zeitpunkt auf der Zieltabelle via Primary Key auch gelöscht werden<br />

können.<br />

ERP DB<br />

4<br />

PK gelöschte Rows<br />

Quelltabelle<br />

Full Table Scan Summe ausrechnen Summe vergleichen Summe ausrechnen - Full Table Scan<br />

3<br />

2<br />

Stagingbereich DWH<br />

Datawarehouse<br />

MIS DB<br />

Oracle 11g R1<br />

Full Table Scan - Änderungen selektieren - Änderungen übernehmen<br />

Gelöschte Records auch in DWH löschen<br />

1<br />

Delete Tabelle<br />

Zieltabelle<br />

Trigger<br />

Abbildung 2-2: Ladeprozess grösserer Tabellen<br />

10.09.2009 Seite 8 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

2.2 Problemstellung<br />

Durch die aufwendige Übernahme der grossen Tabellen, werden die Quellsysteme derart<br />

belastet, dass der produktive Betrieb während den Übernahmen beeinträchtigt wird.<br />

Abbildung 3 zeigt die Kurve der CPU auf dem Quellsystem während einer Übernahme an<br />

einem Wochenende. Es ist deutlich zu sehen, dass ab ca. 17:00 bis ca. 07:00 die Last<br />

ansteigt. Genau in dieser Zeit wurden die Daten, welche nur wöchentlich übernommen<br />

werden können, übertragen und abgeglichen.<br />

Abbildung 2-3: CPU Kurve Quellsystem<br />

Des Weiteren besteht der Wunsch die Daten mindestens vom Vortag im Datawarehouse<br />

auswerten zu können. Bei dieser Übertragungstechnik ist dies aber nicht möglich, da die<br />

Laufzeit der Schnittstellen bis um ca. 12:00 Mittags dauern würde. Auch darf eine solche<br />

Belastung der Quellsysteme nicht während des Tagesgeschäfts der Emmi AG auftreten, da<br />

dies den Lieferprozess der Firma beeinträchtigt würde.<br />

2.3 Projektziele<br />

Das Ziel dieses Projekts ist eine Schnittstellentechnik zu beschreiben und zu realisieren:<br />

• Welche die Daten im gewünschten Zeitrahmen (max. 2 Stunden für die grössten<br />

Tabellen) in den Staging - Bereich des DWH bringt.<br />

• Welche die Belastung des Quellsystems um mindestens 70% verringert.<br />

• Welche es erlaubt die zukünftigen Schnittstellen mit 50% Aufwand zu realisieren.<br />

• Welche der Stabilität zur jetzigen Technik ebenwürdig ist.<br />

• Welche das weglassen der Trigger auf den Quellsystemen erlaubt.<br />

Um diese Ziele zu erreichen, werden in den folgenden Kapiteln die Lösungsansätze<br />

analysiert und die Anforderungen sowie die Ziele genauer beschrieben.<br />

10.09.2009 Seite 9 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

2.4 Mögliche Lösungen<br />

In diesem Kapitel werden die möglichen Lösungen für das erreichen der Projektziele kurz<br />

beschrieben und verglichen. Danach wird entschieden, welche Technik für das Projekt<br />

geeignet ist. Dieser Entscheid wird die technische Umsetzung des Projekts massiv<br />

beeinflussen. Daher wird diesem Teil genügend Zeit beigemessen. Jede Lösung wird auch<br />

praktisch analysiert und ein schlanker „Proof of Concept“ wird durchgeführt.<br />

2.4.1 LogMiner (erste Vision)<br />

Die erste Idee, wie man die im Kapitel 2.1.3 beschriebenen Probleme lösen könnte, sah wie<br />

folgt aus:<br />

Staging Table<br />

Change Table<br />

Abbildung 2-4: Prozessablauf Vision<br />

Die archivierten Redo Logs der Quelldatenbank, werden auf den Rechner der Zieldatenbank<br />

kopiert. Dort werden mit der bestehenden Oracle Technologie LogMiner alle Änderungen in<br />

eine Zwischentabelle geschrieben. Diese Änderungen werden mittels einer neu<br />

programmierten Applikation gefiltert und aufbereitet. Danach werden die aufbereiteten<br />

Records in die entsprechende Stagingtabelle geschrieben. Jeder Record enthält zusätzliche<br />

wichtige Merkmale wie:<br />

• Änderungsart (Insert, Update, Delete)<br />

• SCN damit die Reihenfolge bestimmt werden kann<br />

• Ein Flag Verarbeitet Ja/Nein<br />

10.09.2009 Seite 10 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

2.4.2 Timestamp / Change Key Column<br />

Diese Methode ist bereits bei den grössten Tabellen umgesetzt und im Kapitel 2.1.3<br />

beschrieben. Sie belastet die Systeme stark und bedeutet einen grossen Aufwand bei der<br />

Programmierung neuer Schnittstellen.<br />

Mit dieser Technik können die Projektziele nicht erreicht werden.<br />

2.4.3 Tabel differencing<br />

Bei dieser Methode, werden die gesamten Daten von der Quelldatenbank zur Zieldatenbank<br />

transportiert. Danach werden sie mittels speziellen SQL’s verglichen (minus). Auch diese<br />

Technik ist sehr belastend für die Systeme. Mittels Datenbanklink kann eine Verbesserung<br />

erzielt werden.<br />

Mit dieser Technik können die Projektziele nicht erreicht werden.<br />

10.09.2009 Seite 11 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

2.4.4 Oracle Change Data Capture<br />

Oracle bietet das Feature „Change Data Capture“ an. Diese Technologie kann in<br />

verschiedenen Modi betrieben werden:<br />

• Synchronus<br />

• Asynchronus HotLog<br />

• Asynchron Distributed HotLog<br />

• Asynchronus HotLog online<br />

• Asynchronus Autolog archive<br />

Für das anstehende Projekt bietet sich „Asynchronus Autolog Archive“ am besten an, da die<br />

Anforderungen ziemlich genau auf die bestehende Umgebung in der Emmi Schweiz AG<br />

passen. Auch ist eine möglichst zeitnahe Übertragung nicht nötig. Des Weiteren belastet<br />

dieser Modus die Systeme am wenigsten.<br />

In diesem Kapitel wird also nur auf den „Asynchronus Autolog Archive“ Modus eingegangen.<br />

Um die Funktionsweise der anderen Modi zu erfahren wird auf das Kapitel 16 im Dokument<br />

Oracle Data Warehousing Guide 11g Release 1 (B28313-02) verwiesen.<br />

Asynchronus Autolog Archive<br />

Dieser Modus beinhaltet einen ziemlich ähnlichen Vorgang wie im Kapitel 2.4.1 beschrieben.<br />

Die Daten werden auch aus den Archivierten Redo Logs gewonnen. Anstelle des LogMiners<br />

steht das Feature Change Data Capture, welches auch die Funktion des Aufbereitens der<br />

Daten beinhaltet. In der Abbildung 5 sieht man ein Übersichtsschema, wie dieser Modus<br />

funktioniert. Eine genaue Beschreibung kann aus dem Dokument Oracle Data Warehousing<br />

Guide 11g Release 1 (B28313-02) entnommen werden.<br />

Abbildung 2-5: Prozessablauf Change Data Capture<br />

10.09.2009 Seite 12 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

2.5 Entscheid<br />

Bei den verschiedenen Lösungsansätzen im Kapitel 2.4 kommen nur die Logminer - Lösung<br />

und das Change Data Capture in Frage. Bei allen Anderen können die gesteckten Ziele nicht<br />

erreicht werden.<br />

Kriterien<br />

Gewicht LogMiner<br />

Change Data<br />

Capture<br />

1 Belastung Quellsystem 9 5 5<br />

2 Belastung Zielsystem 3 3 4<br />

3 Implementationsaufwand / Tabelle 5 2 4<br />

4 Stabilität 7 3 5<br />

5 Supportbarkeit 6 2 4<br />

6 Releasefähigkeit 7 1 4<br />

7 Aufwand 5 2 4<br />

8 Kosten 2 5 5<br />

Resultat 124 194<br />

Tabelle 2-1: Entscheidungstabelle<br />

Aufgrund des Resultats der Entscheidungstabelle wird sich für „Change Data Capture“<br />

entschieden.<br />

2.5.1 Erklärung zur Bewertung<br />

Belastung Quellsystem<br />

Aufgrund der sehr ähnlichen Technologie werden bei beiden Varianten die Quellsysteme<br />

kaum belasten.<br />

Belastung Zielsystem<br />

Da bei der LogMiner Lösung das aufbereiten der Daten programmiert werden muss, gehe ich<br />

nicht davon aus, dass ich dies gleich effizient gestalten könnte wir die Firma Oracle.<br />

Implementationsaufwand / Tabelle<br />

„Change Data Capture“ stellt einige der gewünschten Funktionen zur Verfügung. Somit kann<br />

die zur Verfügung stehende Zeit auch in die Entwicklung eines GUI investiert werden. Somit<br />

sollte auch das Ziel der einfachen Weiterentwicklung erreicht werden.<br />

Stabilität<br />

Da „Change Data Capture“ ein Standard Feature von Oracle ist und dieses weltweit in Firmen<br />

eingesetzt wird, kann von einer guten Stabilität ausgegangen werden. Bei der selber<br />

entwickelten Variante, wäre das „handeln“ jeglicher Spezialsituationen sicher schwierig<br />

gewesen.<br />

10.09.2009 Seite 13 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

Supportbarkeit<br />

Bei der LogMiner Variante ist es schwierig über Jahre das Know-How aufrechtzuerhalten. Da<br />

„Change Data Capture“ ein Standard Feature ist, kann man sich auch bei der Firma Oracle<br />

Unterstützung besorgen.<br />

Releasefähigkeit<br />

Das „Change Data Capture“ Feature wird bei Oracle mit den DB Relases gleichzeitig<br />

ausgeliefert, da es ein Bestandteil der ganzen Software ist. Die eigene Lösung müsste bei<br />

jedem Upgrade der Umgebung neu erweitert und getestet werden.<br />

Aufwand<br />

Beim Aufwand kann gesagt werden, dass eine eigene Entwicklung den Rahmen der<br />

Diplomarbeit gesprengt hätte. Beim „Change Data Capture“ kann die vorgesehene Zeit<br />

voraussichtlich eingehalten werden.<br />

Kosten<br />

Das sowohl LogMiner wie auch „Change Data Capture“ keine Option ist, welche separat<br />

Lizenziert werden muss, dürften sich die Kosten im gleichen Rahmen bewegen.<br />

10.09.2009 Seite 14 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

3 Analyse<br />

In diesem Kapitel ist der grösste Teil aus der Detailspezifikation entnommen. Es beschreibt<br />

die Technologie Change Data Capture ein wenig genauer und zeigt, wie die Applikation<br />

geplant wurde.<br />

3.1 Change Data Capture<br />

Change Data Capture ist ein standard Feature von Oracle. Es stellt eine sehr ausgereifte<br />

Technik zur Verfügung, welche die Änderungen von einer Datenbank an eine weitere<br />

Datenbank befördert. Um genaue Details dieser Technik zu erfahren wird auf die<br />

Dokumentation von Oracle (Oracle Data Warehousing Guide 11g Release 1 (B28313-02))<br />

verwiesen. In diesem Kapitel wird nur ein grober Überblick dieser Features gegeben, welche<br />

in dieser Arbeit relevant sind.<br />

3.1.1 Architektur<br />

Grundlegend unterteilt sich die Change Data Capture (CDC) Architektur in zwei Bereiche: in<br />

einen Source - Bereich und einen Staging - Bereich. Der Staging - Bereich ist nicht mit einem<br />

üblichen Staging - Bereich im ETL - Umfeld zu vergleichen. Die Abbildung 3-1 zeigt ein<br />

Überblick der CDC Architektur. Die rote Linie beschreibt die Systemgrenzen dieses Projekts.<br />

In einem späteren Release könnte auch der Subscriber - Teil im GUI verwaltbar gemacht<br />

werden.<br />

Abbildung 3-1: Architektur Change Data Capture<br />

Als Source - Bereich wird hier das operative System bezeichnet, in welchem die relevanten<br />

Datenänderungen stattfinden. Im Staging Bereich werden die Änderungen in einem<br />

10.09.2009 Seite 15 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

sogenannten Publisherbereich abgelegt. Pro Source Tabelle gibt es im Stagingbereich<br />

jeweils eine Änderungstabelle (Change Table).<br />

In den folgenden Kapiteln werden die verschiedenen Teile des Change Data Capture<br />

genauer beschrieben.<br />

3.1.1.1 Publisher<br />

Der Publisher enthält alle Funktionalitäten um, die Datenänderungen im Source - Bereich zu<br />

erkennen und darzustellen. Der Publisher ist ein normaler Datenbank Benutzer, welcher mit<br />

den entsprechenden Rechten ausgestattet sein muss. Dieser Benutzer wird für ein DWH<br />

einmalig angelegt und wird daher im geplanten Tool nicht verwaltet werden können, da diese<br />

Möglichkeit in den standard Oracle Tools mehrfach und in einer befriedigenden Form<br />

vorhanden ist.<br />

3.1.1.2 Source Tabelle<br />

Dies ist die Tabelle, von welcher alle Änderungen auf der Stagingdatenbank gewünscht<br />

werden. Um eine Tabelle für CDC zu präparieren, muss diese mit dem Befehl<br />

DBMS_CAPTURE_ADM.PREPARE_TABLE_INSTANTIATION instanziert werden. Weitere<br />

Schritte sind auf der Source Datenbank nicht nötig.<br />

3.1.1.3 Change Source<br />

Die Change Source ist die logische Repräsentation der Sourcedatenbank. Somit wird für jede<br />

Sourcedatenbank eine Change Source auf der Stagingdatenbank angelegt. Eine Change<br />

Source kann gestoppt und wieder gestartet werden.<br />

3.1.1.4 Change Set<br />

In einem Change Set sind mehrere Change Tabellen zusammengefasst. Alle Change<br />

Tabellen, welche in einem Change Set zusammengefasst sind, werden<br />

transaktionskonsistent nachgeführt. Des Weiteren werden beim asynchronen Change Data<br />

Capture durch das Anlegen, aktivieren und deaktivieren des Change Sets die Oracle Streams<br />

Prozesse, welche für das Erfassen der Datenänderungen zuständig sind, gesteuert.<br />

3.1.1.5 Change Table<br />

In den Change Tabellen werden die Datenänderungen als Logical Change Record<br />

tabellarisch dargestellt. Beim Erstellen der Change Tabellen wird definiert, welche Quell-<br />

Tabellen und welche Spalten dieser Quell-Tabellen für die Change Data Capture Umgebung<br />

relevant sind.<br />

3.1.1.6 Subscriber<br />

Der Subscriber enthält Funktionalitäten um Views auf die Change Tabellen zu erstellen. Mit<br />

Hilfe dieser Views können immer nur die Datenänderungen geladen werden, welche noch<br />

nicht verarbeitet wurden. Diese Views stellen eine angenehme Art dar mit dem ETL Prozess<br />

10.09.2009 Seite 16 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

die Daten abzugreifen. Dies ist aber auch ohne Weiteres direkt auf den Change Tabellen<br />

möglich. Dieser Teil wir nach Bedarf zu einem späteren Zeitpunkt in das vorgesehene Tool<br />

eingebaut.<br />

3.1.2 Change Data Capture Modus<br />

Hier wird nochmals kurz der Modus, welcher ausgewählt wurde beschrieben. Schon bei der<br />

Erstellung des Pflichtenhefts hat man sich für den Modus Asynchronous Auto Log Archive<br />

CDC entschieden. Dieser Modus ist optimal auf die Situation in der Emmi zugeschnitten und<br />

belastet das Source System kaum. Dieser Modus ist nur möglich, weil das Source- und das<br />

Stagingsystem genau die gleiche Hardware und die gleichen Oracle Releases aufweisen. Auf<br />

der Abbildung 3-2 ist der Ablauf grob dargestellt.<br />

Abbildung 3-2: Übersicht Modus CDC<br />

Auf der Source Datenbank wird jede Änderung durch den Logwriter (LGWR) geloggt. Dieser<br />

schreibt diese Änderungen in die Redo-Logs, welche jede halbe Stunde durch den Archiver-<br />

Prozess in die sogenannten Archivierten Redo-Logs geschrieben werden. Dies ist ein ganz<br />

normaler Vorgang und wird auf jeder Oracle Datenbank gemacht. Eine Anpassung, welche<br />

gemacht werden muss, ist das Einschalten eines Supplemental Loggings auf der Source<br />

Datenbank. Dies bewirkt, dass die Source Datenbank zusätzliche Informationen in die<br />

Logdateien schreibt und genau diese zusätzliche Logging ist die einzige Belastung, welche<br />

CDC dem Sourcesystem zufügt.<br />

Auf der Staging Datenbank sind die Oracle Streams Prozesse für das importieren der<br />

erforderlichen Daten aus den archivierten Redo-Logs verantwortlich.<br />

10.09.2009 Seite 17 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

3.2 Applikation<br />

3.2.1 Pakete<br />

Die Applikation kann in zwei Pakete aufgeteilt werden. Im Paket Publish befinden sich diese<br />

Anwendungsfälle, welche im Zusammenhang Übertragung der Daten und zur Verfügung<br />

stellen der Daten stehen.<br />

Im Paket Subscribe befinden sich diese Anwendungsfälle, welche sich im Bereich des<br />

Beziehens der Daten befinden. Das Subscribe Paket wird nur mit einem Use Case Diagramm<br />

beschrieben. Die genaue Spezifikation wird zum Zeitpunkt der Umsetzung gemacht, da dies<br />

voraussichtlich in einem zweite Release umgesetzt wird und nur als Kann Ziel in dieser<br />

Spezifikation aufgeführt wird.<br />

Abbildung 3-3: Package Diagramm LDI<br />

10.09.2009 Seite 18 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

3.2.2 Use Case Diagramm (Publish)<br />

Use Case Diagramm: LDI (Publish)<br />

Programm starten<br />

FA.01.010<br />

<br />

Login<br />

FA.01.020<br />

Destinationsystem<br />

konfigurieren FA.02.010<br />

Change Source<br />

Konfigurieren FA.03.010<br />

Change Source<br />

löschen FA.03.020<br />

Change Set<br />

konfigurieren FA.04.010<br />

Change Set löschen<br />

FA.04.020<br />

DWH System<br />

Changetabelle<br />

ändern FA.05.010<br />

ETL - Programmierer<br />

Changetabelle<br />

purgen FA.05.020<br />

Changetabelle<br />

erstellen FA.05.030<br />

Change Tabelle<br />

löschen FA.05.040<br />

Sourcesystem<br />

konfigurieren FA.06.010<br />

Source System<br />

Abbildung 3-4: Use Case Diagramm Publish<br />

10.09.2009 Seite 19 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

3.2.3 Übersicht Use Cases (Publish)<br />

ID Beschreibung M K<br />

FA.01<br />

Startup Applikation<br />

FA.01.010 Programm starten X<br />

FA.01.020 Login X<br />

FA.02<br />

Destinationsystem<br />

FA.02.010 Destinationsystem konfigurieren X<br />

FA.03<br />

Change Source<br />

FA.03.010 Change Source konfigurieren X<br />

FA.03.020 Change Source löschen X<br />

FA.04<br />

Change Set<br />

FA.04.010 Change Set konfigurieren X<br />

FA.04.020 Change Set löschen X<br />

FA.05<br />

Change Tabelle<br />

FA.05.010 Changetabelle ändern X<br />

FA.05.020 Changetabelle purgen X<br />

FA.05.030 Changetabelle erstellen X<br />

FA.05.040 Changetabelle löschen X<br />

FA.06<br />

Sourcesystem<br />

FA.06.010 Sourcesystem konfigurieren X<br />

Tabelle 3-1: Übersicht Use Cases (Publish)<br />

Diese Anforderungen wurden gegenüber dem Pflichtenheft ein wenig angepasst. Dies aus<br />

dem Grund, weil bei der detaillierten Analyse erweiterte Erkenntnisse gewonnen wurden.<br />

Diese Erkenntnisse haben dazu bewogen, einige Anforderungen wegzulassen und einige auf<br />

Kann Ziele zurückzustufen.<br />

3.2.4 Aktoren<br />

Es werden alle Aktoren kurz beschrieben.<br />

Name<br />

ETL - Programmierer<br />

Source System<br />

Destination System<br />

Tabelle 3-2: Aktoren<br />

Beschreibung<br />

Dies ist der Hauptbenutzer dieser Software. Er definiert die ETL<br />

Schnittstellen für das DWH. Er ist der einzige, welche mit dieser<br />

Applikation arbeitet.<br />

Das Sourcesystem ist die Datenbank, welche die Quelldaten für<br />

die Schnittstelle enthält.<br />

Das Zielsystem ist der Stagingbereich des DWH. Dies auch in der<br />

Form einer Oracle Datenbank.<br />

10.09.2009 Seite 20 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

3.2.5 Detailbeschreibung Use Cases (Publish)<br />

3.2.5.1 Programm starten<br />

AD Programm starten<br />

User startet Programm<br />

Login wird aufgerufen<br />

(FA.01.020)<br />

Login nicht erfolgreich<br />

Login OK<br />

Metadaten werden von<br />

DWH eingelesen<br />

Programm wird beendet<br />

GUI wird<br />

Initialisiert<br />

Programm<br />

gestartet<br />

Programm<br />

beendet<br />

Abbildung 3-5: Aktivitätsdiagramm Programm starten<br />

Der Benutzer startet das Programm per Mausklick aus seinem Startmenu. Die Applikation<br />

wird gestartet und der Benutzer wird zum Login aufgefordert (siehe include FA.01.020). Wenn<br />

das Login OK ist, werden die Meta Daten aus dem DWH gelesen und die TreeView wird<br />

konfiguriert (siehe Kapitel GUI). Danach wird das GUI angezeigt. Bei nicht erfolgreichem<br />

Login, wird der Prozess wieder beendet. Mit dem SQL Statement aus Tabelle 3-3 können die<br />

nötigen Informationen aus dem DWH bezogen werden, um die TreeView mit den nötigen<br />

Objekten zu initialisieren. Weitere Infos über die TreeView können aus dem Kapitel 3.2.8.1<br />

bezogen werden.<br />

10.09.2009 Seite 21 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

Vorgang<br />

SQL<br />

Daten für TreeView select source_database, source_name, b.set_name, c.change_table_schema,<br />

lesen<br />

c.change_table_name<br />

from all_change_sources a, all_change_sets b, all_change_tables c<br />

where source_type = 'AUTOLOG'<br />

and a.source_name = b.change_source_name<br />

and b.set_name = c.change_set_name;<br />

Tabelle 3-3: SQL Programm starten<br />

3.2.5.2 Login<br />

Dieses Aktivitätsdiagramm zeigt den Ablauf des Anmeldeprozesses. Dieser Prozess wird<br />

nach dem Start der Applikation automatisch aufgerufen und ist ein Teil des Startvorgangs.<br />

AD Login<br />

Auswahl DWH DB<br />

Eingabe Benutzername & Passwort<br />

für DWH DB<br />

abbrechen<br />

neuer Versuch<br />

Login OK<br />

Programm wird beendet<br />

Login<br />

fehlgeschlagen<br />

Login OK<br />

Abbildung 3-6: Aktivitätsdiagramm Login<br />

10.09.2009 Seite 22 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

Der Benutzer wird aufgefordert, die DB vom gewünschten DWH auszuwählen (DB’s können<br />

aus dem tnsnames.ora ausgelesen werden) und seine Benutzerangaben einzugeben. Dies<br />

sind die Benutzerangaben des Publishers vom DWH. Die Benutzerangaben werden gegen<br />

die ausgewählte DB geprüft. Bei erfolgreicher Anmeldung wird die Applikation gestartet und<br />

der Angegebene Benutzer bleibt angemeldet. Bei nicht korrekten Angaben wird der Benutzer<br />

aufgefordert es erneut zu versuchen. Der Vorgang kann auch abgebrochen werden. Damit<br />

schliesst sich die Applikation wieder.<br />

Abbildung 3-7: GUI Login<br />

Das GUI wird nicht näher beschrieben, da es selbsterklärend ist.<br />

3.2.5.3 Destinationsystem konfigurieren<br />

Kann Ziel. Wird zum Zeitpunkt der Umsetzung spezifiziert.<br />

10.09.2009 Seite 23 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

3.2.5.4 Change Source konfigurieren<br />

Das Aktivitätsdiagramm zeigt den Ablauf für die Erstellung oder für die Änderung eine<br />

Change Source. Eine Change Source wird nur eine pro Sourcesystem erstellt. Im<br />

dazugehörigen GUI sieht man, wie und wo der Benutzer die Eingaben machen kann.<br />

AD Change Source konfigurieren<br />

User wählt<br />

Sourcesystem aus<br />

CS erstellen<br />

CS ändern<br />

User mutiert CS<br />

Eigenschaften<br />

User erfasst CS<br />

Eigenschaften<br />

CS ändern<br />

CS erstellen<br />

OK<br />

Fehler beim ändern der CS<br />

Fehlermeldung<br />

Fehler beim Erstellung<br />

OK<br />

GUI anpassen<br />

CS geändert<br />

Vorgang<br />

abgebrochen<br />

CS erstellt<br />

Abbildung 3-8: Aktivitätsdiagramm Change Source konfigurieren<br />

Der Benutzer wählt, ob er eine neue Change Source erstellen oder ob er eine bestehenden<br />

abändern will. Aufgrund der Auswahl, werden die Eingabefelder ausgefüllt oder nicht.<br />

Nachdem er die Eigenschaften mutiert hat, kann er die Eingabe speichern. Im Reiter SQL<br />

kann das jeweilige SQL, welches beim Speichern ausgeführt wird, angesehen werden. Wenn<br />

10.09.2009 Seite 24 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

kein Fehler auftritt, wird dieser Vorgang abgeschlossen. Bei einer neuen Source wird die<br />

TreeView entsprechend angepasst. Kann der Vorgang nicht durchgeführt werden, wird die<br />

originale Fehlermeldung der Datenbank ausgegeben. Bei einer Änderung kann das Feld<br />

Change Source Name nicht mutiert werden und ist im GUI gesperrt.<br />

Abbildung 3-9: GUI Change Source<br />

Die Tabelle 3-2 enthält die SQL’s, welche beim Speichern an die Datenbank gesendet<br />

werden. Ein Fehlerhandling ist bei diesen Packages schon implementiert und muss nicht<br />

zusätzlich programmiert werden.<br />

Vorgang<br />

SQL<br />

Change Source DBMS_CDC_PUBLISH.CREATE_AUTOLOG_CHANGE_SOURCE(<br />

erstellen<br />

change_source_name => 'CS_XXXXX',<br />

description => 'Change Source from XXXXXXXX DB',<br />

source_database => 'XXXXXX.emmi.ch',<br />

first_scn => 0000000000);<br />

Change Source DBMS_CDC_PUBLISH.ALTER_AUTOLOG_CHANGE_SOURCE(<br />

ändern<br />

change_source_name => 'CS_XXXXXXX',<br />

first_scn => 0000000000);<br />

Tabelle 3-4: SQL Change Source<br />

10.09.2009 Seite 25 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

3.2.5.5 Change Source löschen<br />

Das Aktivitätsdiagramm zeigt den Ablauf beim Löschen einer Change Source.<br />

AD Change Source löschen<br />

User wählt<br />

Change Source aus<br />

Change Source<br />

löschen<br />

Fehler bei Löschung<br />

Fehlermeldung<br />

OK<br />

GUI anpassen<br />

CS geändert<br />

Vorgang<br />

abgebrochen<br />

Abbildung 3-10: Aktivitätsdiagramm Change Source löschen<br />

Der Benutzer wählt die entsprechenden Change Source aus und wählt Change Source<br />

löschen aus dem Kontext Menu (siehe Kapitel Spezifikation GUI) oder betätigt den<br />

Löschknopf in der Toolbox .<br />

Bei erfolgreicher Löschung wird die TreeView entsprechend angepasst. Bei einem Fehler<br />

wird die originale Datenbankfehlermeldung ausgegeben. Im SQL Reiter wird der<br />

entsprechenden SQL Befehl angezeigt, welcher gegen die DB ausgeführt wird.<br />

10.09.2009 Seite 26 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

Bei der Löschung ist zu berücksichtigen, dass eine Change Source nur gelöscht werden<br />

kann, wenn es keine Change Sets mehr enthält. Dies wird aber sauber vom Change Data<br />

Capture Mechanismus abgehandelt und muss nicht durch die Applikation geprüft werden.<br />

In der Tabelle 3-3 sieht man das SQL, welches an die Datenbank gesendet wird. Auf eine<br />

Skizze des GUI wird verzichtet, da dies keinen Nutzen bringt. Der Name der Change Source<br />

(CS_XXXXX) wird von der markierten Stelle aus der TreeView gezogen.<br />

Vorgang<br />

SQL<br />

Change Source löschen DBMS_CDC_PUBLISH.DROP_CHANGE_SOURCE('CS_XXXXX');<br />

Tabelle 3-5: SQL Change Source löschen<br />

10.09.2009 Seite 27 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

3.2.5.6 Change Set konfigurieren<br />

Das Aktivitätsdiagramm zeigt den Ablauf für die Erstellung oder für die Änderung eines<br />

Change Sets. Pro Change Source können mehrere Change Sets konfiguriert werden.<br />

Innerhalb des Change Sets werden die Change Tabellen transaktionskosistent nachgeführt.<br />

Im dazugehörigen GUI sieht man, wie und wo der Benutzer die Eingaben machen kann.<br />

AD Change Set konfigurieren<br />

User wählt<br />

Change Source aus<br />

CSet erstellen<br />

CSet ändern<br />

User mutiert CSet<br />

Eigenschaften<br />

User erfasst CSet<br />

Eigenschaften<br />

CSet ändern<br />

CS erstellen<br />

OK<br />

Fehler bei Änderung<br />

Fehlermeldung<br />

Fehler bei Erstellung<br />

OK<br />

GUI anpassen<br />

CSet geändert<br />

Vorgang<br />

abgebrochen<br />

CSet erstellt<br />

Abbildung 3-11: Aktivitätsdiagramm Change Set konfigurieren<br />

Der Benutzer wählt, ob er ein neues Change Set erstellen oder ein bestehendes abändern<br />

will. Je nach dem, werden die Eingabefelder ausgefüllt oder nicht und die entsprechenden<br />

Felder sind mutierbar. Felder welche für den einen oder anderen Vorgang nicht mutiert<br />

werden dürfen, werden im GUI gesperrt. Dies aus dem Grund, weil nicht beide Statements<br />

10.09.2009 Seite 28 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

die gleichen Eigenschaften haben. Nachdem er die Eigenschaften mutiert hat, kann er die<br />

Eingabe speichern. Im Tab SQL kann das jeweilige SQL, welches beim Speichern ausgeführt<br />

wird, angesehen werden. Wenn kein Fehler auftritt, wird dieser Vorgang abgeschlossen. Bei<br />

einer neuen Source wird die TreeView entsprechend angepasst. Kann der Vorgang nicht<br />

durchgeführt werden, wird die originale Datenbankfehlermeldung ausgegeben. Die<br />

Fehlerbehandlung ist im SQL Package gut abgehandelt und muss nicht weiter programmiert<br />

werden.<br />

Abbildung 3-12: GUI Change Set konfigurieren<br />

In der Tabelle 3-4 sind die SQL Statements ersichtlich, welche beim Speichern auf die<br />

Datenbank gesendet werden.<br />

Vorgang<br />

SQL<br />

Change Set erstellen DBMS_CDC_PUBLISH.CREATE_CHANGE_SET(<br />

change_set_name => 'CSET_XXXXX_1',<br />

description => 'Change Set for XXXXXX',<br />

change_source_name => 'CS_XXXXX',<br />

stop_on_ddl => 'y'<br />

begin_date => NULL,<br />

end_date => NULL);<br />

Change Set ändern DBMS_CDC_PUBLISH.ALTER_CHANGE_SET(<br />

change_set_name => 'CSET_XXXXX_1',<br />

description => 'Change Set for XXXXXX',<br />

enable_capture => 'Y',<br />

recover_after_error => 'Y',<br />

remove_ddl => 'Y',<br />

stop_on_ddl => 'Y');<br />

Tabelle 3-6: SQL Change Set konfigurieren<br />

10.09.2009 Seite 29 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

3.2.5.7 Change Set löschen<br />

Das Aktivitätsdiagramm zeigt den Ablauf einer Löschung eines Change Sets.<br />

AD Change Set löschen<br />

User wählt<br />

Change Set aus<br />

Change Set<br />

löschen<br />

Fehler bei Löschung<br />

Fehlermeldung<br />

OK<br />

GUI anpassen<br />

CS geändert<br />

Vorgang<br />

abgebrochen<br />

Abbildung 3-13: Aktivitätsdiagramm Change Set löschen<br />

Der Benutzer wählt das entsprechenden Change Set aus und wählt Change Set löschen aus<br />

dem Kontext Menu (siehe Kapitel Spezifikation GUI) oder betätigt den Löschknopf in der<br />

Toolbox.<br />

Bei erfolgreicher Löschung wird die TreeView entsprechend angepasst. Bei einem Fehler<br />

wird die originale Datenbankfehlermeldung ausgegeben. Im SQL Tab wird der<br />

entsprechenden SQL Befehl angezeigt, welcher gegen die DB ausgeführt wird.<br />

10.09.2009 Seite 30 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

Abbildung 3-14: GUI Change Set löschen<br />

Bei der Löschung ist zu berücksichtigen, dass ein Change Set nur gelöscht werden kann,<br />

wenn es keine Change Tabellen mehr enthält. Dies wird aber sauber vom Change Data<br />

Capture Mechanismus abgehandelt und muss nicht durch die Applikation geprüft werden.<br />

In der Tabelle ist das SQL Statement zu sehen, welches bei der Löschung an die DB<br />

gesendet wird.<br />

Vorgang<br />

SQL<br />

Change Source löschen DBMS_CDC_PUBLISH.DROP_CHANGE_SET('CSet_XXXXX_1');<br />

Tabelle 3-7: SQL Change Set löschen<br />

10.09.2009 Seite 31 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

3.2.5.8 Changetabelle ändern<br />

Das Aktivitätsdiagramm zeigt den Ablauf bei Änderung einer Change Tabelle.<br />

Abbildung 3-15: Aktivitätsdiagramm Changetabelle ändern<br />

Der Benutzer wählt in der TreeView die gewünschte Tabelle und im Kontext Menu (siehe<br />

Kapitel Spezifikation GUI) „Changetabelle ändern“. Im GUI ist nur der Reiter Destination<br />

mutierbar. Die Source - Seite muss nie geändert werden, ausser bei einer Löschung. Der<br />

User nimmt die gewünschten Änderungen vor und speichert anschliessend seine Eingaben.<br />

10.09.2009 Seite 32 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

Wenn bei der Änderung ein Fehler auftritt, wird die originale Datenbankfehlermeldung<br />

ausgegeben. Die Eigenschaften können weiter mutiert werden. Der Vorgang wird beendet,<br />

indem der Benutzer die Aktion abbricht oder die Changetabelle korrekt abgespeichert wird.<br />

Abbildung 3-16: GUI Changetabelle ändern<br />

Bei Änderungen an den Spalten, muss mit „ADD“ oder „DROP“ angegeben werden, ob eine<br />

Spalte hinzugefügt bzw. gelöscht werden soll. Dies steht nur bei Änderung an<br />

Changetabellen zur Verfügung.<br />

In der Tabelle 3-6 sieht man das entsprechende Alter Statement, welches beim Speichern an<br />

die Datenbank gesendet wird.<br />

Vorgang<br />

SQL<br />

Change Tabelle ändern DBMS_CDC_PUBLISH.ALTER_CHANGE_TABLE(<br />

owner => ’OWNER’,<br />

change_table_name =>’TABLE’ ,<br />

operation => ’ADD’,<br />

column_type_list => ’COLXXX NCHAR(5)’,<br />

rs_id =>’Y’,<br />

row_id => 'Y' ,<br />

user_id => 'Y',<br />

timestamp => 'Y',<br />

object_id => 'Y' ,<br />

source_colmap => 'Y',<br />

target_colmap => 'Y');<br />

Tabelle 3-8: SQL Changetabelle ändern<br />

.<br />

10.09.2009 Seite 33 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

3.2.5.9 Changetabelle purgen<br />

Dieses Aktivitätsdiagramm zeigt den Ablauf, wenn die Daten einer Changetabelle<br />

reorganisiert werden. Das heisst nicht mehr benötigte Daten werden gelöscht.<br />

AD Changetabelle purgen<br />

User wählt Changetabelle aus<br />

Destinationtabelle purgen<br />

Fehler bei Purgevorgang<br />

Fehlermeldung<br />

OK<br />

Tabelle<br />

purged<br />

Vorgang<br />

abgebrochen<br />

Abbildung 3-17: Aktivitätsdiagramm Changetabelle purgen<br />

Der Benutzer wählt in der TreeView die gewünschte Tabelle und im Kontext Menu (siehe<br />

Kapitel Spezifikation GUI) „Changetabelle purgen“. Das SQL Statement aus Tabelle 3-7 wird<br />

an die Datenbank gesendet. Daten welche von keiner SubscriberView in Zugriff sind, werden<br />

gelöscht. Bei einem Fehler wird die originale Datenbankfehlermeldung ausgegeben.<br />

Daten welche mit diesem Package gelöscht wurden, können nicht mehr hergestellt werden!<br />

Vorgang<br />

SQL<br />

Change Tabelle purgen DBMS_CDC_PUBLISH.PURGE_CHANGE_TABLE(<br />

owner => ‚’OWNER’,<br />

change_table_name => ’TABLE’);<br />

Tabelle 3-9: SQL Change Tabelle konfigurieren<br />

10.09.2009 Seite 34 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

3.2.5.10 Changetabelle erstellen<br />

Das Aktivitätsdiagramm zeigt den Ablauf bei Erstellung einer Change Tabelle.<br />

AD Changetabelle erstellen<br />

User wählt neue Changetabelle erstellen<br />

User erfasst Source Owner & Tabelle<br />

User erfasst sämtliche Eigenschaften<br />

der Changetabelle (Reiter Destination)<br />

Fehlermeldung<br />

User speichert neue Changetabelle<br />

Tabelle wird auf Source DB<br />

instanziert<br />

Fehler beim instanzieren<br />

Vorgang abbrechen<br />

OK<br />

Changetabelle wird in DWH erstellt<br />

Fehler bei Erstellung<br />

Vorgang abbrechen<br />

OK<br />

Changetabelle<br />

erstellt<br />

Vorgang<br />

abgebrochen<br />

Abbildung 3-18: Aktivitätsdiagramm Changetabelle erstellen<br />

10.09.2009 Seite 35 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

Der Benutzer wählt ein Change Set und wählt im Kontext Menu (siehe Kapitel Spezifikation<br />

GUI) „Neue Change Tabelle erstellen“. Er erfasst auf dem Reiter Source auf dem GUI Owner<br />

und danach Tabellenname von der gewünschten Source Tabelle. Diese kann der Benutzer<br />

bequem aus Kombinationsfeldern auswählen. Die Daten für die Kombinationsfelder können<br />

aus der Source Datenbank geholt werden. Siehe Statements in Tabelle 3-8.<br />

Abbildung 3-19: GUI Changetabelle erstellen (Source)<br />

Danach wechselt der User auf der Reiter Destination und erfasst dort sämtliche<br />

Eigenschaften der Changetabelle. Der Owner kann ausgewählt werden. Der Inhalt des<br />

Kombinationfeldes kann aus dem DWH bezogen werden (siehe Tabelle 3-8). Der Name für<br />

die Changetabelle muss eingegeben werden. Die restlichen Angaben müssen zum Teil<br />

erfasst werden oder können aus der DWH DB bezogen werden. Wo welche Eigenschaften<br />

des Change Data Capture bezogen werden können, ist auf dem Datenbankmodell in diesem<br />

Dokument ersichtlich.<br />

Nachdem sämtliche Eigenschaften gepflegt sind, speichert der User die Changetabelle. Das<br />

Erstellungsstatement ist in Tabelle 3-8 ersichtlich. Als erstes wird auf der Source Datenbank<br />

die Tabelle instanziert und vorbereiten. Dies muss in der Regel nur einmal gemacht werden.<br />

Das Statement darf aber problemlos mehrere Male ausgeführt werden. Danach wird die<br />

Changetabelle auf dem DWH erstellt. Tritt bei diesen Vorgängen ein Fehler auf, so wird die<br />

originale Datenbankfehlermeldung ausgegeben und die Speicherung wird abgebrochen. Der<br />

Vorgang gilt erst als erfolgreich abgeschlossen, wenn sowohl die Instanzierung wie auch die<br />

Erstellung der Changetabelle erfolgreich sind. Zu beachten gilt, dass die Instanzierung der<br />

Sourcetabelle immer früher als das kreieren der Changetabelle gemacht werden muss.<br />

10.09.2009 Seite 36 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

Abbildung 3-20: GUI Changetabelle erstellen Destination<br />

Vorgang<br />

Change Tabelle<br />

erstellen<br />

Source Tabelle<br />

konfigurieren<br />

Selektion Destination<br />

Owner<br />

Selektion Source<br />

Owner<br />

Selektion Source Table<br />

Tabelle 3-10: SQL Source Tabelle konfigurieren<br />

SQL<br />

DBMS_CDC_PUBLISH.CREATE_CHANGE_TABLE(<br />

owner => ’OWNER’,<br />

change_table_name =>’TABLE’ ,<br />

change_set_name => ’CSet_XXXXX_1’,<br />

source_schema => ’SRC_OWNER’,<br />

source_table => ’SRC_TABLE’,<br />

column_type_list => ’COLXXX NCHAR(5)’,<br />

capture_values => ’BOTH’ ,<br />

rs_id =>’Y’,<br />

row_id => 'Y' ,<br />

user_id => 'Y',<br />

timestamp => 'Y',<br />

object_id => 'Y' ,<br />

source_colmap => 'Y',<br />

target_colmap => 'Y',<br />

options_string => ’Tablespace XXXXX’);<br />

DBMS_CAPTURE_ADM.PREPARE_TABLE_INSTANTIATION(<br />

'OWNER.TABLE');<br />

SELECT OWNER FROM ALL_TABLES GROUP BY OWNER;<br />

SELECT OWNER FROM ALL_TABLES GROUP BY OWNER;<br />

SELECT TABLE_NAME FROM ALL_TABLES<br />

WHERE OWNER = 'OWNER';<br />

10.09.2009 Seite 37 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

3.2.5.11 Change Tabelle löschen<br />

Dieses Aktivitätsdiagramm zeigt den Ablauf für die Löschung einer Change Tabelle.<br />

AD Change Tabelle löschen<br />

User wählt<br />

Change Tabelle aus<br />

Change Tabelle<br />

löschen<br />

Fehler bei Löschung<br />

Fehlermeldung<br />

OK<br />

GUI anpassen<br />

CS geändert<br />

Vorgang<br />

abgebrochen<br />

Abbildung 3-21: Aktivitätsdiagramm Change Tabelle löschen<br />

Der Benutzer wählt die entsprechenden Change Tabelle aus und wählt Change Tabelle<br />

löschen aus dem Kontext Menu (siehe Kapitel Spezifikation GUI) oder betätigt den<br />

Löschknopf in der Toolbox .<br />

Der User wird nochmals aufgefordert die Löschung zu bestätigen. Auf dieser Aufforderung<br />

kann er ein zusätzliches „force“ Flag setzen, welches die Löschung erzwingt.<br />

Bei erfolgreicher Löschung wird die TreeView entsprechend angepasst. Bei einem Fehler<br />

wird die originale Datenbankfehlermeldung ausgegeben. Im SQL Tab wird der<br />

entsprechenden SQL Befehl angezeigt, welcher gegen die DB ausgeführt wird.<br />

10.09.2009 Seite 38 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

Abbildung 3-22: GUI Source Tabelle löschen<br />

Vorgang<br />

SQL<br />

Source Tabelle löschen DBMS_CDC_PUBLISH.DROP_CHANGE_TABLE(<br />

owner IN VARCHAR2,<br />

change_table_name IN VARCHAR2,<br />

force_flag IN CHAR);<br />

Tabelle 3-11: SQL Source Tabelle löschen<br />

3.2.5.12 Sourcesystem konfigurieren<br />

Kann Ziel. Dies wird noch nicht spezifiziert.<br />

10.09.2009 Seite 39 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

3.2.6 Use Case Diagramm (Subscribe)<br />

Use Case Diagramm: LDI (Subscribe)<br />

Subscription<br />

erstellen FA.51.010<br />

Subscribtion<br />

löschen FA.51.020<br />

Subscribtion<br />

aktivieren FA.51.030<br />

ETL - Programmierer<br />

SubscriberView<br />

erstellen FA.52.010<br />

SubscriberView<br />

löschen FA.52.020<br />

DWH System<br />

SubscriberView<br />

extend Window FA.52.030<br />

SubscriberView purge<br />

Window FA.52.040<br />

Abbildung 3-23: Use Case Diagramm (Subscribe)<br />

3.2.7 Übersicht Use Cases (Subscribe)<br />

ID Beschreibung M K<br />

FA.51<br />

Subscription<br />

FA.51.010 Subscription erstellen X<br />

FA.51.020 Subscription löschen X<br />

FA.51.030 Subscription aktivieren X<br />

FA.52<br />

Destinationsystem<br />

FA.52.010 SubscriberView erstellen X<br />

FA.52.020 SubscriberView löschen X<br />

FA.52.030 SubscriberView extend Window X<br />

FA.52.040 SubscriberView purge Window X<br />

Tabelle 3-12: Übersicht Use Cases (Subscribe)<br />

Der gesamt Subscription - Teil besteht aus Kann Anforderungen und wird voraussichtlich in<br />

der Form eines zweiten Releases umgesetzt.<br />

10.09.2009 Seite 40 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

3.2.8 Spezifikation GUI<br />

Wie schon im Pflichtenheft definiert, orientiert sich das GUI stark am SQL Developer von<br />

Oracle. In diesem Kapitel wird noch auf die verschiedenen Menu und anderen komplexen<br />

Steuerelemente eingegangen.<br />

3.2.8.1 Tree View<br />

Die TreeView ist das zentrale Navigationshilfsmittel der Applikation.<br />

Destination System (DWH)<br />

Source System<br />

Change Source<br />

Change Set<br />

Change Table<br />

Sie wird beim Start der Applikation geladen und<br />

aufgrund der Daten im der DWH Datenbank konfiguriert.<br />

Sie wird auch bei jeder Änderung aktualisiert. Auf den<br />

verschiedenen Knoten werden unterschiedliche Kontext<br />

Menus hinterlegt, welche mit der rechten Maustaste<br />

hervorgerufen werden können. Aussehen und Inhalt der<br />

Kontext Menus können im Kapitel Kontext Menu<br />

entnommen werden.<br />

3.2.8.2 Menu Bar<br />

Je nach Zustand der Applikation werden die Menupunkte aktiviert bzw. deaktiviert. Sichtbar<br />

sind die Menupunkte jedoch immer.<br />

Abbildung 3-24: Menu Bar<br />

Die Tabelle 3-11 zeigt zu welchem Zeitpunkt welche Menupunkte aktiv sind.<br />

Tabelle 3-13: Übersicht Menu Bar<br />

10.09.2009 Seite 41 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

3.2.8.3 Toolbar<br />

Auf der Toolbar befinden sich nur die nötigsten Werkzeuge. Wie diese ungefähr aussehen<br />

wird, ist auf der Abbildung 3-25 zu entnehmen. Sie wird viel in erster Linie für das Speichern<br />

und Löschen der verschiedenen Objekte verwendet.<br />

Abbildung 3-25: Übersicht Toolbar<br />

3.2.8.4 Kontext Menu auf TreeView<br />

Entsprechend dem Knoten, wo der User mit der rechten Maustaste das Kontext Menu<br />

hervorholt, sind die Menupunkte aktiviert oder nicht. In Tabelle 3-13 sieht man bei welchem<br />

Knoten, welche Punkte aktiviert sind.<br />

Tabelle 3-14: Übersicht Kontext Menu<br />

3.2.8.5 Statusbar<br />

In der Statusbar informiert den Benutzer über den Verlauf der Applikation. Sie wird soviel wie<br />

nötig aktualisiert.<br />

Abbildung 3-26: Übersicht Statusbar<br />

10.09.2009 Seite 42 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

4 Design<br />

4.1 Applikation<br />

Die Grundregeln der Applikation sind folgende: Die Applikation soll so gebaut werden, dass<br />

keine lokalen Konfigurationsfiles benötigt werden. Die einzigen Angaben, welche die<br />

Applikation lokal bezieht, ist die Anmeldung vom User. Die restlichen Informationen werden<br />

aus der angemeldeten Datenbank gewonnen. Auch dort sollen keine Toolspezifischen<br />

Tabellen angelegt werden, da die gewünschten Informationen in den Systemtabellen von<br />

Oracle vorhanden sind. Somit sollte auch das Setup sehr einfach gestaltet werden können.<br />

4.1.1 Übersicht Struktur<br />

Die Aufgabenstellung fordert kein spezifisches Design. Die Herausforderung besteht darin,<br />

ein für die Grösse der Applikation günstiges Design zu finden. Im .net Kurs wurde die<br />

Trennung in die verschiedenen standard Layer empfohlen.<br />

Abbildung 4-1: Software Layer<br />

• Der Presentation Layer enthält sämtliche Klassen im Zusammenhang mit dem GUI.<br />

• Der Business Layer enthält die Logik der Applikation.<br />

• Der Data Layer enthält die Klassen für die Kommunikation mit der Datenbank. Auch<br />

würde dieser das Lesen bzw. Schreiben von Konfigurationsfiles und Registry<br />

Einträgen steuern. Ein Ziel vom mir ist es aber, in dieser Applikation auf<br />

Konfigurationsfiles und Registry Einträge zu verzichten.<br />

• Der Service Layer enthält unterstützende Klassen, welche auch in späteren Projekten<br />

verwendet werden können und nicht im unmittelbaren Zusammenhang mit dieser<br />

Applikation stehen.<br />

10.09.2009 Seite 43 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

4.1.2 Source Code<br />

In diesem Kapitel sind Regeln für den Sourcecode angegeben. Die Konventionen für die<br />

Namensgebung ist in der Tabelle 4-2 ersichtlich und müssen für die Lesbarkeit eingehalten<br />

werden.<br />

Kürzel Objekttyp<br />

cbo ComboBox<br />

cbx CheckBox<br />

clp Clipboard<br />

cmd CommandButton<br />

cmnu Contextmenu<br />

ctl Control<br />

dat Data<br />

drv DriveListBox<br />

fil<br />

FileListBox<br />

fra Frame<br />

frm Form<br />

glb Global<br />

img Image<br />

lbl Label<br />

lst ListBox<br />

mdi MDIForm<br />

mnu Menu<br />

opt OptionButton<br />

pic PictureBox<br />

prp PropertyPage<br />

tmr Timer<br />

txt TextBox<br />

vsb VScrollBar<br />

Tabelle 4-1: Namenskonventionen Sourcecode<br />

Das Errorhandling wird in jeder Klasse für jeden Bereich nach dem gleichen Ablauf<br />

implementiert.<br />

10.09.2009 Seite 44 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

4.2 Datenbank<br />

Bei den DB Modellen wurden nur diese Tabellen berücksichtigt, welche für die Applikation<br />

benötigt werden. Die meisten Tabellen sind auf den Datenbanken nur logische Views, welche<br />

auf Systemtabellen zugreifen. Es handelt sich ausschliesslich um Oracle Tabellen. Das Tool<br />

soll ausschliesslich mit diesen arbeiten und kann somit gegen jede Oracle Enterprise<br />

Datenbank verwendet werden.<br />

4.2.1 DB Model DWH (Destination System)<br />

Abbildung 4-2: DB Model DWH<br />

4.2.1.1 all_change_sources<br />

In dieser View sind die Eigenschaften aller Change Source enthalten.<br />

4.2.1.2 all_change_sets<br />

In dieser View sind die Eigenschaften aller Change Sets enthalten<br />

4.2.1.3 all_change_tables<br />

In dieser View sind die Eigenschaften aller Change Tabellen enthalten<br />

4.2.1.4 all_published_columns<br />

In dieser View sind alle Spalten der Change Tabellen und die dazugehörigen Eigenschaften<br />

enthalten.<br />

10.09.2009 Seite 45 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

4.2.1.5 all_tables<br />

In dieser View sind alle Tabellen der Datenbank enthalten. Aus dieser Tabelle werden<br />

Informationen wie zum Beispiel der Owner für die Erfassung einiger Objekte gewonnen.<br />

4.2.2 DB Model Source Datenbank<br />

Abbildung 4-3: DB Model Source Datenbank<br />

4.2.2.1 all_tab_columns<br />

Diese View enthält die Eigenschaften der Spalten aller Tabellen auf einer Oracle Datenbank.<br />

Diese Daten werden bei der Erfassung der Changetabellen auf dem GUI benötigt<br />

4.2.2.2 all_tables<br />

In dieser View sind alle Tabellen der Datenbank enthalten. Aus dieser Tabelle werden<br />

Informationen wie zum Beispiel der Owner oder Namen der Sourcetabellen für die Erfassung<br />

auf dem GUI bezogen.<br />

4.2.2.3 all_capture_prepared_tables<br />

In dieser View sind die Tabellen der Sourcedatenbank eingetragen, welche für das Data<br />

Capture vorbereitet sind (Diese Tabellen wurden instanziert).<br />

10.09.2009 Seite 46 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

5 Testing<br />

5.1 Ziel des Testens<br />

• Verifikation der Anforderungen<br />

• Softwarefehler früh erkennen<br />

5.2 Übersicht der Tests<br />

Objekt<br />

Testmethode nach Phase<br />

Entwurf<br />

Realisierung<br />

GUI Usability Walkthrough Usability Test<br />

Dokumentation<br />

Review<br />

Source Code<br />

Review<br />

Funktionale Anforderungen<br />

Programm starten<br />

Login<br />

Destinationsystem<br />

konfigurieren<br />

Change Source konfigurieren<br />

Change Source löschen<br />

Change Set konfigurieren<br />

Change Set löschen<br />

Changetabelle ändern<br />

Changetabelle purgen<br />

Changetabelle erstellen<br />

Changetabelle löschen<br />

Sourcesystem konfigurieren<br />

Nicht funktionale Anforderungen<br />

Siehe Kapitel 3.3.1 in<br />

Pflichtenheft<br />

Tabelle 5-1: Übersicht Tests<br />

5.3 Testablauf<br />

5.3.1 Ablauf<br />

Systemtest<br />

Systemtest<br />

Systemtest<br />

Systemtest<br />

Systemtest<br />

Systemtest<br />

Systemtest<br />

Systemtest<br />

Systemtest<br />

Systemtest<br />

Systemtest<br />

Systemtest<br />

Systemtest<br />

1. Test-Fälle werden erfasst<br />

2. Ausführen der Test-Fälle<br />

3. Rapportieren und korrigieren der Fehler<br />

4. Wiederholen von Schritt 2 - 3 bis alle Tests erfolgreich sind<br />

5. Schreiben des Test-Reports<br />

5.3.2 Test Dokumentation<br />

• Die Test-Fälle werden in einem spezifischen Dokument festgehalten.<br />

• Gefundene Fehler werden in einem spezifischen Dokument festgehalten.<br />

10.09.2009 Seite 47 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

5.3.3 Testmethoden<br />

Analyse / Entwurf:<br />

Realisierung:<br />

Abnahme:<br />

Review der Requirements und Dokumente, Usability-<br />

Walkthrough der GUI Skizzen und des ersten Prototyps<br />

Systemtests auf Testsystem<br />

Subset von Systemtests auf Ziel-System<br />

5.3.4 Testfälle<br />

Detailspezifikation und Pflichtenheft dienen als Grundlage für die Identifikation der Testfälle<br />

für die Unit- und Systemtests.<br />

Folgende Eigenschaften werden für jeden Testfall erfasst:<br />

• Fallnummer<br />

• Testfall<br />

• Testschritt Nummer<br />

• Testschritt<br />

• Vorbedingungen<br />

• Beschreibung Testfall<br />

• Erwartetes Ergebnis<br />

• Tatsächliches Ergebnis<br />

• Daten Input<br />

• Daten Output<br />

• Check / Verifikation<br />

5.4 System Test<br />

Bei den Systemtests werden sämtliche funktionalen und nicht funktionalen Anforderungen<br />

getestet. Jeder Use Cases wird manuell durchgetestet. Dazu werden Schnittstellen in den<br />

verschiedenen Möglichkeiten erstellt.<br />

5.5 Usability Test<br />

Nach der Detailspezifikation ist das GUI auf Papier entworfen. Ein erster Walkthrough wird<br />

mit dem ETL - Programmierer durchgeführt und die Erkenntnisse werden dokumentiert und<br />

fliessen direkt in die Entwicklung des Tools ein.<br />

Wenn die erste Lauffähige Version der Applikation erstellt ist, wird ein Usability Test mit dem<br />

ETL - Programmierer durchgeführt. Auch dieses Resultat soll, sofern es mit dem Aufwand<br />

des Projekts zu vereinbaren ist, in die Applikation einfliessen. Ansonsten werden die<br />

Erkenntnisse festgehalten zu einem späteren Zeitpunkt umgesetzt.<br />

10.09.2009 Seite 48 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

5.6 Testergebnisse<br />

5.6.1 Systemtests<br />

Die Tests wurden alle durchgeführt. Es wurden 29 Tests für die funktionalen Anforderungen<br />

und 17 für die nicht funktionalen Anforderungen erfasst. Diese wurden in einem separaten<br />

Excelfile erfasst. Aufgrund des Formates konnten die Testfälle leider nicht in dieses<br />

Dokument integriert werden.<br />

Bis auf drei Tests waren alle erfolgreich. Die nicht erfolgreichen Tests konnten jedoch<br />

korrigiert werden. Nach einem zweiten Testlauf, konnten alle Tests erfolgreich abgeschlossen<br />

werden.<br />

5.6.2 Usabilitytests<br />

Ein erster Usability Test wurde nach dem Entwurf des GUI für die Detailspezifikation<br />

gemacht. Dieser Walkthrough war sehr aufschlussreich, da der ETL Programmierer auch<br />

genau wusste um welche Technologie es sich handelt und er sich dadurch genaue<br />

Vorstellungen hatte, wie das Endprodukt aussehen könnte. Ein Ziel für das Tool war eine<br />

intuitive Bedienbarkeit. Daher musste die Testperson ohne vorherige Angaben und<br />

Erklärungen berichten, was im aufgefallen ist und fragen, was im unklar war. Diese Fragen<br />

ergaben meist kleine Änderungen am GUI. Diese Änderungen wurden danach mittels<br />

Change Requests erfasst und flossen direkt in die Entwicklung. Dies ersparte einige<br />

nachträgliche Korrekturen.<br />

Das gleiche wurde danach noch zweimal mit den ersten Versionen des Tools gemacht. Diese<br />

Tests können als sehr erfolgreich angesehen, da ich dadurch einige Zeit einsparen konnte.<br />

An dieser Stelle möchte ich dem ETL Programmierer auch herzlich für seine Zeit und sein<br />

Engagement bedanken.<br />

10.09.2009 Seite 49 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

6 Planung und Zeitmanagement<br />

6.1 Vorgehensmodell<br />

Beim Vorgehensmodell habe ich mich an dem klassischen Wasserfallmodel orientiert. Da in<br />

diesem Projekt die Phasen ziemlich genaue abgrenzbar sind und die Laufzeit auch ziemlich<br />

kurz ist (5 Monate), sollte sich dieses Vorgehen gut eigenen. Auch für ein Einmannprojekt<br />

fand ich dieses Modell sehr geeignet. Folgende Phasen habe ich durchlaufen:<br />

Abbildung 6-1: Vorgehensmodell<br />

Nachfolgend sind die Inhalte und Resultate pro Projektphase aufgelistet:<br />

Projektphase Inhalt Resultat<br />

Initialisierung • Projektinitialisierung Auftraggeber<br />

• Projektantrag<br />

• Kick-Off Meeting Experte<br />

Analyse • Analyse der bestehenden Lösung<br />

• Pflichtenheft<br />

• Analyse möglicher Lösungswege<br />

• Projektplan<br />

• Diskussion mit Auftraggeber und ETL<br />

Programmierer<br />

• Definition Ziele und Anforderungen<br />

• Projektablauf festlegen<br />

• Erstellung Pflichtenheft<br />

Entwurf • Erhöhung des Verständnisses der<br />

Anforderungen<br />

• Detailspezifikation<br />

• Erstellen der notwendigen UML<br />

Diagramme<br />

• Erarbeiten der Detailspezifikation<br />

• Definition der Testfälle<br />

Realisierung • Konfiguration der Umgebung<br />

• Entwicklung GUI<br />

• Testen der Software<br />

• Erstellung Benutzerhandbuch<br />

Einführung • Umsetzung der neuen Technik in<br />

einem Bereich<br />

• Fertigstellung <strong>Diplombericht</strong><br />

• Präsentation der Diplomarbeit<br />

Nutzung • Nicht Bestandteil der Diplomarbeit<br />

• Flächendeckender Einsatz der neuen<br />

Technik<br />

Tabelle 6-1: Inhalte und Resultate der Projektphasen<br />

• Benutzerhandbuch<br />

• Installationshandbuch<br />

• Software<br />

• Testprotokoll<br />

• <strong>Diplombericht</strong><br />

• Komplette ETL<br />

Schnittstelle auf<br />

neuen Technik<br />

umgesetzt<br />

10.09.2009 Seite 50 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

6.2 Zeitmanagement<br />

Arbeit<br />

Aufwand<br />

Ist pro<br />

geplant Ist Kategorie<br />

Projektleitung 24 21 21<br />

Dokumentation 124 116<br />

Projektantrag 2 3<br />

Pflichtenheft 36 40<br />

Detailspezifikation 36 32<br />

Benutzerhandbuch 14 10<br />

Diverse Protokolle 8 9<br />

<strong>Diplombericht</strong> 28 22<br />

Prototyping 42 58 58<br />

Analyse 24 21<br />

Bestehende Lösung 8 4<br />

Lösungswege 14 14<br />

Entscheide 2 3<br />

Entwurf 28 30<br />

Architektur 12 10<br />

Design 16 20<br />

Realisierung 132 134<br />

Installation Testumgebung 10 7<br />

Konfiguration Umgebung 10 6<br />

Ausbildung .net 32 32<br />

Programmierung<br />

Konfigurationstool 44 56<br />

Testing 36 33<br />

Einführung 32 27<br />

Konfiguration produktive<br />

Umgebung 10 7<br />

Installation Konfigurationstool 10 6<br />

Inbetriebsetzung Schnittstelle 8 11<br />

Schulung Anwender 4 3<br />

Aufwand Total 392 407 407<br />

Tabelle 6-2: Zeitmanagement<br />

Angaben zum Zeitmanagement und warum die geplante Zeit nicht ganz gereicht hat, werden<br />

im Kapitel Ausblick und Schlusswort gemacht.<br />

10.09.2009 Seite 51 von 80


6.3 Projektplan / Zeitplan und Meilensteine<br />

Abbildung 6-2: Projektplan<br />

10.09.2009 Seite 52 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

6.4 Termine<br />

Termin<br />

Ziel<br />

20.04.2009 Review Pflichtenheft<br />

23.04.2009 Abgabe Pflichtenheft<br />

04.06.2009 Review Entwurf (Detailspezifikation)<br />

20.08.2009 Review Realisierung<br />

10.09.2009 Abgabe Diplomarbeit<br />

11.09.2009 Präsentation Diplomarbeit<br />

Tabelle 6-3: Termine<br />

6.5 Projektmanagement<br />

Der Projektplan kann aufgrund neuer Erkenntnisse einer vorgängigen Phase überprüft und<br />

angepasst werden. In der Entwurfsphase wird nach Bedarf eine zweite Iteration durchgeführt,<br />

um die Analyse zu verfeinern und zu vertiefen. In diesem Projekt wurde keine zweite Iteration<br />

benötigt.<br />

6.6 Meetings / Reviews /Statusmeldungen<br />

6.6.1 Meetings<br />

Mit dem Experten wurde nach jeder Phase ein Meeting durchgeführt.<br />

Mit dem Betreuer, welcher auch gleichzeitig der Auftraggeber darstellt, wurden nur nach<br />

Bedarf Meetings durchgeführt.<br />

6.7 Reviews<br />

Die Meetings mit dem Experten, wurden meist als Review einer vergangenen Phase<br />

verwendet.<br />

6.7.1 Statusmeldungen<br />

Dem Experten und dem Betreuer wurde jede zweite Woche ein Statusreport (Vorlage von<br />

BFH) gesendet, damit diese über den Projektfortschritt auf dem Laufenden waren.<br />

10.09.2009<br />

Seite 53 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

7 Erfüllung der Anforderungen und Ziele<br />

In diesem Kapitel werden die gesteckten Ziele und die verschiedenen Anforderungen mit dem<br />

Resultat verglichen. In den untenstehenden Tabellen gibt es jeweils eine Spalte M oder K<br />

welche angeben, ob es jeweils eine Muss bzw. Kann Anforderungen ist.<br />

7.1 Nicht funktionale Anforderungen<br />

ID Beschreibung M K Erfüllt<br />

NFA.01 Architektur / Plattform<br />

NFA.01.010 Das GUI muss auf eine Emmi Standard PC lauffähig sein X <br />

NFA.01.020 Als Datenbanksystem muss Oracle unterstützt werden X <br />

NFA.01.030 Die Erstellung des GUI soll im Visual Studio .net erfolgen X <br />

NFA.02 Zuverlässigkeit / Stabilität<br />

NFA.02.010 Die Stabilität der neue Schnittstellentechnik soll<br />

mindestens der jetzigen Technik entsprechen<br />

NFA.03 Performance<br />

NFA.03.010 Die Belastung der Quellsysteme soll um mindestens 70% X<br />

verringert werden<br />

<br />

NFA.03.020 Die Daten jeder Schnittstelle sollen täglich übernommen X<br />

werden können.<br />

<br />

NA.04 Konfiguration<br />

NFA.04.010 Mit der neuen Technik soll der Aufwand der Konfiguration X<br />

einer neuen Schnittstelle um 50% verringert werden<br />

<br />

NFA.04.020 Auf Trigger in den Quellsystemen soll verzichtet werden X<br />

können<br />

<br />

NFA.05 Monitoring / Logging<br />

NFA.05.010 Alle Konfigurationen sollen geloggt und ausgewertet<br />

X<br />

werden können.<br />

<br />

NFA.06 Dokumentation<br />

X *<br />

NFA.06.010 Installationshandbuch muss erstellt werden X <br />

NFA.06.020 Benutzerhandbuch muss erstellt werden X <br />

NFA.06.030 Projektbericht muss erstellt werden X <br />

NFA.07 Sicherheit<br />

NFA.07.010 Die Benutzerverwaltung soll dem Emmi Standard für<br />

X<br />

Datenbankbenutzer entsprechen<br />

<br />

NFA.08 Sprache<br />

NFA.08.010 Die Sprache im Tool muss englisch sein X <br />

NFA.08.020 Die Dokumentation soll ausschliesslich in deutscher X<br />

Sprache erfolgen.<br />

<br />

NFA.09 Usability<br />

NFA.09.010 Ein ETL - Programmierer soll sich intuitiv im GUI<br />

X<br />

zurechtfinden (Know - How CDC wird vorausgesetzt)<br />

<br />

NFA.09.020 Das System soll den User unterstützen möglichst wenig X<br />

Fehler zu machen<br />

<br />

Tabelle 7-1: Anforderungskatalog nicht funktionaler Anforderungen<br />

* Diese Anforderung kann erst in ca. einem halben Jahr abschliessend beurteilt werden.<br />

10.09.2009 Seite 54 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

7.2 Funktionale Anforderungen<br />

7.2.1 Publisher Teil<br />

ID Beschreibung M K Erfüllt<br />

FA.01<br />

Startup Applikation<br />

FA.01.010 Programm starten X <br />

FA.01.020 Login X <br />

FA.02<br />

Destinationsystem<br />

FA.02.010 Destinationsystem konfigurieren X -<br />

FA.03<br />

Change Source<br />

FA.03.010 Change Source konfigurieren X <br />

FA.03.020 Change Source löschen X <br />

FA.04<br />

Change Set<br />

FA.04.010 Change Set konfigurieren X <br />

FA.04.020 Change Set löschen X <br />

FA.05<br />

Change Tabelle<br />

FA.05.010 Changetabelle ändern X <br />

FA.05.020 Changetabelle purgen X <br />

FA.05.030 Changetabelle erstellen X <br />

FA.05.040 Changetabelle löschen X <br />

FA.06<br />

Sourcesystem<br />

FA.06.010 Sourcesystem konfigurieren X <br />

Tabelle 7-2: Übersicht Use Cases (Publish)<br />

Diese Kann Anforderungen wurden verworfen (Change Request ID 2)<br />

- Diese Kann Anforderung wurde nicht implementiert.<br />

7.2.2 Subscriber Teil<br />

ID Beschreibung M K Erfüllt<br />

FA.51<br />

Subscription<br />

FA.51.010 Subscription erstellen X -<br />

FA.51.020 Subscription löschen X -<br />

FA.51.030 Subscription aktivieren X -<br />

FA.52<br />

Destinationsystem<br />

FA.52.010 SubscriberView erstellen X -<br />

FA.52.020 SubscriberView löschen X -<br />

FA.52.030 SubscriberView extend Window X -<br />

FA.52.040 SubscriberView purge Window X -<br />

Tabelle 7-3: Übersicht Use Cases (Subscribe)<br />

- Der gesamte Subscriber Teil wird in einer zukünftigen Version umgesetzt<br />

10.09.2009 Seite 55 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

7.3 Ziele<br />

Die gesetzten Ziele konnten wie in Tabelle 7-1 ersichtlich erreicht werden. Einige wurden<br />

übertroffen, da die Daten mindestens jede halbe Stunde (Redolog Switch auf der<br />

Sourcedatenbank) an das Datawarehouse übertragen werden. Somit können sicher alle<br />

Tabellen täglich in den Stagingbereich übernommen werden, egal wie gross diese sind.<br />

Auch die Belastung kann sehr gering gehalten werden, da nur noch das senden der<br />

archivierten Redologs das Sourcesystem belasten und eine solche Belastung kann fast<br />

vernachlässigt werden.<br />

Um die Stabilität abschliessend zu beurteilen, bedarf es längerer Erfahrung. Da Change Data<br />

Capture eine etablierte Technologie bei Oracle darstellt, sollte auch dies kein Problem<br />

darstellen.<br />

Mit dem entwickelten Tool ist es nun auch möglich, eine Tabelle innerhalb kürzester Zeit in<br />

den Stagingbereich zu bringen und zu konfigurieren. Die anschliessende Transformation der<br />

Daten muss jedoch weiterhin gemacht werden und in diesem Teil wird keine weitere Zeit<br />

eingespart.<br />

Auf die Trigger in der Source Datenbanken kann in Zukunft verzichtet werden, da Change<br />

Data Capture nur die Änderungen überträgt.<br />

Der Grundstein für eine schlanke Übernahme ist nun gelegt, nun gilt es diese Technologie<br />

flächendeckend einzuführen.<br />

10.09.2009 Seite 56 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

8 Erfahrungen<br />

8.1 Resultat<br />

Mit dem Resultat bin ich grundsätzlich zufrieden. Alle Muss Anforderungen wurde umgesetzt<br />

und einige Kann Anforderungen konnten auch umgesetzt und getestet werden. Zudem<br />

konnte, durch die zahlreichen Change Requests, die Qualität des Tools gegenüber der ersten<br />

Planung zusätzlich verbessert werden.<br />

Bei der Programmierung hatte ich einige Ideen, welche sich hinterher als sehr praktisch<br />

erwiesen haben. Diese Ideen haben mich aber am Anfang sehr viel Zeit gekostet. Dadurch<br />

konnte die geplante Zeit für den Programmieraufwand um einige Stunden nicht eingehalten<br />

werden. Da ich nicht als Programmierer tätig bin, hätte man wahrscheinlich an einigen Stellen<br />

eine professionellere Lösung finden können. Der technische Teil hat aber grossen Spass<br />

gemacht und war für mich sehr lehrreich. Speziell aufwendig war das GUI, welches ich auch<br />

ein wenig unterschätzt habe. Es konnten aber trotzdem viele Funktionen, welche den<br />

Benutzer unterstützen (Shortcuts, Toolbar, Verhinderung von Fehleingaben, etc.) eingebaut<br />

werden. Auch die TreeView wurde mit selbst kreierten Icons ausgestattet.<br />

Ein Punkt welcher man hervorheben könnte ist, dass das Tool keine einzige Tabelle oder<br />

Konfigurationsdatei benötigt. Es bezieht alle Informationen aus den Standardtabellen der<br />

Oracle Datenbank und der Change Data Capture Technologie und auch das Login<br />

funktioniert über die normale Benutzerverwaltung der Datenbank.<br />

8.2 Ausblick<br />

Während der Entwicklung des Tools, sind mir immer Funktionen aufgefallen, welche die<br />

tägliche Arbeit des ETL - Programmierers vereinfachen könnten. Diese Funktionen haben<br />

zum Teil gar nichts mit der Technologie Change Data Capture zu tun, wären aber zum Teil<br />

extrem praktisch. Deshalb wird das Tool in Zukunft einige neue Features erfahren.<br />

Geplante Features für Version 2:<br />

• Verwaltung Subscribtion - Views<br />

• Dashboard um über den Betriebszustand einfach eine Überblick zu erhalten<br />

• Datenansicht der Changetabellen<br />

• Einige kleinere Anpassungen am GUI<br />

10.09.2009 Seite 57 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

8.3 Schlusswort<br />

Die ganze Zeit der Diplomarbeit war spannend, aber auch sehr anspruchsvoll. Da ich<br />

während der ganzen Zeit 100% in der Firma engagiert war und dadurch nicht mehr allzu viel<br />

Freizeit hatte. Ich konnte in dieser Zeit aber äusserst wertvolle Erfahrungen sammeln.<br />

Was bei der Dokumentation immer ein Problem war, war einen gesunden Mittelweg zwischen<br />

Detaillierungsgrad, Wahrung der Übersicht und Aufwand zu finden. Daher bin ich eigentlich<br />

positiv Überrascht, dass der Terminplan in vielen Bereichen sehr gut eingehalten werden<br />

konnte. Als Highlight kann sicher die Detailspezifikation angesehen werden. Hätte ich doch<br />

viel lieber schon im Mai mit der Umsetzung begonnen. Der Aufwand für eine genauere<br />

Analyse hat sich aber voll ausbezahlt.<br />

Zu guter Letzt möchte ich es nicht unterlassen, mich bei meinem Experten Herr Thomas<br />

Glauser zu bedanken, welcher mich durch dieses halbe Jahr begleitet hat und mir mit guten<br />

Ratschlägen zur Seite stand.<br />

10.09.2009 Seite 58 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

9 Installations- und Betriebshandbuch<br />

Für das Installations- und Betriebshandbuch gibst es separates Dokument, welches auch auf<br />

der CD mit dem Setup vorhanden sein wird. Im diesem <strong>Diplombericht</strong> werden nur die<br />

wichtigen Kapitel angehängt.<br />

9.1 Technische Umgebung<br />

Dieses Kapitel gibt Auskunft über die technische Umgebung, in welcher das Tool LDI<br />

einwandfrei funktioniert. Bei unterschiedlichen Versionen kann ein einwandfreier Betrieb nicht<br />

garantiert werden.<br />

9.1.1 Client<br />

Betriebssystem: Windows XP<br />

DB-Verbindung: Oracle Client 11g oder 10g<br />

Framework: Microsoft .net Framework 3.5<br />

9.1.2 Datenbank<br />

9.1.2.1 RDBMS<br />

RDBMS:<br />

Oracle Enterprise Database11g<br />

9.1.2.2 Server Umgebung<br />

Das Betriebssystem des RDBMS ist nicht relevant für die Funktionalität von LDI.<br />

10.09.2009 Seite 59 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

9.2 Installation<br />

Die Installation muss in der gleichen Reihenfolge wie in diesem Kapitel vollzogen werden.<br />

9.2.1 Datenbank<br />

9.2.1.1 Konfiguration Change Data Capture<br />

Hier wird auf das Dokument des Herstellers (Oracle) verwiesen.<br />

Oracle Data Warehousing Guide 11g Release 1 (B28313-02)<br />

9.2.1.2 Konfiguration LDI Tool<br />

9.2.1.2.1 View erstellen (Abfrage Alert Log)<br />

Damit das Tool die Alerts von der Datawarehouse Datenbank abfragen kann, muss eine View<br />

erstellt werden:<br />

1. Auf Datawarehouse als User SYS (as sysdba) einloggen.<br />

2. View mit untenstehendem SQL erstellen<br />

Vorgang<br />

SQL<br />

View erstellen CREATE OR REPLACE VIEW "SYS"."LDI_ALERTLOG" AS<br />

SELECT * FROM X$DBGALERTEXT WITH READ ONLY<br />

Tabelle 9-1: SQL View erstellen<br />

9.2.1.2.2 User erstellen<br />

Auf dem Datawarehouse und auf den entsprechenden Source Datenbanken muss ein<br />

Publisher User erstellt werden:<br />

1. Auf Datawarehouse oder auf der Source Datenbank als User System einloggen.<br />

2. User mit untenstehendem SQL erstellen<br />

Vorgang<br />

SQL<br />

User erstellen CREATE USER CDC_PUBLISHER IDENTIFIED BY *Password<br />

DEFAULT TABLESPACE *Tablespacename;<br />

GRANT DBA TO CDC_PUBLISHER;<br />

Tabelle 9-2: SQL User erstellen<br />

*Password:<br />

*Tablespacename:<br />

Gewünschtes Passwort eingeben<br />

Als Tablespacename soll der Tablespace angegeben werden, welcher<br />

die Change Tabellen enthalten wird.<br />

10.09.2009 Seite 60 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

9.2.1.2.3 DB Links zu gewünschten Source - Systemen erstellen<br />

Damit das Tool die Meta-Daten von den Source Datenbanken beziehen kann, muss ein<br />

Datenbanklink pro Source Datenbank auf der Datawarehouse Datenbank erstellt werden.<br />

1. Auf Datawarehouse oder auf der Source Datenbank als User System einloggen.<br />

2. Link mit untenstehendem SQL erstellen<br />

Vorgang<br />

SQL<br />

Link erstellen CREATE PUBLIC DATABASE LINK *Linkname<br />

USING *Servicename<br />

Tabelle 9-3: SQL Link erstellen<br />

*Linkname:<br />

*Servicename:<br />

Der Linkname muss zwingend der gleiche Name sein wie der<br />

Servicename<br />

Der Servicename der Source - Datenbank angeben<br />

9.2.2 Setup<br />

Um das Setup zu starten muss die Datei EmmiLDISetup.msi ausgeführt werden. Ansonsten<br />

ist das Setup selbsterklärend.<br />

Startfenster<br />

Abbildung 9-1: Setup Startfenster<br />

10.09.2009 Seite 61 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

Auswahl Installationsordner<br />

Abbildung 9-2: Setup Installationsordner<br />

Bestätigung Installation<br />

Abbildung 9-3:Setup Bestätigung Installation<br />

10.09.2009 Seite 62 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

Ausführung Installation<br />

Abbildung 9-4:Setup Ausführung Installation<br />

Installation erfolgreich<br />

Abbildung 9-5: Setup Installation erfolgreich<br />

10.09.2009 Seite 63 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

9.3 Benutzerhandbuch<br />

In diesem Benutzerhandbuch sind die Möglichkeiten und die Handhabung des LDI Tools<br />

beschrieben. Es bietet einen groben Überblick über die Funktionen dieses Tools. Um Change<br />

Data Capture zu administrieren wird aber ein gutes Know-How über diese Technologie<br />

vorausgesetzt. Auf diese Technologie wird jedoch in diesem Handbuch nicht eingegangen,<br />

da diese in unzähligen Oracle Dokumenten zu genüge beschrieben ist. Ein empfehlenswertes<br />

Dokument ist der Oracle Data Warehousing Guide 11g Release 1 (B28313-02) hier wird<br />

Change Data Capture im Kapitel 16 genau beschrieben.<br />

9.3.1 Über LDI<br />

Mit LDI Version 1.0 kann die Technologie Change Data Capture von Oracle verwaltet<br />

werden. Es sind sowohl Changesourcen, Changesets und Changetables administrierbar. Alle<br />

möglichen Funktionen können in diesem Tool ausgeführt oder angepasst werden. In einer<br />

späteren Version werden auch die Subscription View administriert werden können.<br />

9.3.2 Startup LDI<br />

Beim aufstarten des Programms, wird die Loginmaske (Abb. 4-1) angezeigt. Dort müssen die<br />

Benutzerangaben (Publisher) der Datawarehouse Datenbank angegeben werden.<br />

Die Anmeldung erfolgt genau gleich wie diese bei normalen Oracle Datenbanken. Für<br />

detaillierte Angaben wird an dieser Stelle auf die Dokumentation von Oracle verwiesen.<br />

Abbildung 9-6: Loginmaske<br />

10.09.2009 Seite 64 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

9.3.3 Benutzeroberfläche<br />

Die Benutzeroberfläche (Abb. 4-2) ist wie die gewohnten Microsoft Produkte aufgeteilt. Sie<br />

lehnt sich auch sehr an den SQL Developer von Oracle. Am oberen Rand befinden sich die<br />

Menuleiste und die Toolbar. Am unteren Rand ist die Statusleiste angebracht.<br />

Auf der linken Seite befindet sich eine TreeView, welche die zentrale Navigation für das<br />

gesamt Tool darstellt. Der rechte Teil ist der eigentliche Arbeitsbereich.<br />

<br />

<br />

<br />

<br />

Abbildung 9-7: Benutzeroberfläche<br />

1. Menuleiste & Toolbar<br />

2. TreeView<br />

3. Eigenschaften der ausgewählten Objekte<br />

4. Statusbar<br />

10.09.2009 Seite 65 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

9.3.4 TreeView<br />

Die TreeView ist die zentrale Navigation des LDI Tools. Sie zeigt die gesamte Hierarchie des<br />

Change Data Capture eines Datawarehouses. Mit Doppelklick auf ein Knoten, wird das<br />

ausgewählte Objekt im rechten Arbeitsbereicht des Tools angezeigt und kann danach<br />

bearbeitet werden. Ein Klick mit der rechten Maustaste bewirkt das Anzeigen eines<br />

Kontextmenüs. Auf diesem Menu sind nur die möglichen Punkte aktiviert. Die anderen<br />

Punkte sind zwar sichtbar, aber nicht auswählbar.<br />

Abbildung 9-8: TreeView<br />

10.09.2009 Seite 66 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

9.3.5 Objekte bearbeiten<br />

Wenn ein Objekt bearbeitet wird, werden im rechten Teil der Applikation die verschiedenen<br />

Eigenschaften und Optionen angezeigt. Dieser Teil ist mit verschiedenen Registern unterteilt.<br />

<br />

Abbildung 9-9: Register des Bearbeitungsteils<br />

1. Register zur Erfassung der Eigenschaften und Optionen der Source Datenbank.<br />

2. Register zur Erfassung der Eigenschaften und Optionen der Datawarehouse<br />

Datenbank.<br />

3. Dieses Register enthält die zuletzt ausgeführten SQL Statements im Zusammenhang<br />

mit Change Data Capture. Diese Statements können auch in einem normalen SQL-<br />

Tool ausgeführt werden und sollen detailliert aufzeigen, was genaue konfiguriert<br />

wurde.<br />

4. Im Register Log sind die Alertmeldungen der DWH Datenbank aufgelistet. Dies gibt<br />

detailliert Auskunft über den Zustand der DB und der verschiedenen Capture<br />

Prozesse.<br />

9.3.6 Changesourcen bearbeiten<br />

Wenn eine Changesource zur Bearbeitung ausgewählt wird oder eine neue erstellt werden<br />

soll, werden im rechten Teil der Applikation die Eigenschaften angezeigt. Bei Erstellung<br />

können alle Eigenschaften erfasst werden. Bei Änderung einer Changesource können nur<br />

diese Felder verändert werden, welche noch änderbar sind. Die Applikation lässt nur Zeichen<br />

zur Eingaben zu, welche auch von Oracle unterstützt werden, dies soll den Benutzer vor<br />

Fehleingaben schützen.<br />

<br />

<br />

<br />

<br />

Abbildung 9-10: Changesource bearbeiten<br />

1. Changesource Name<br />

2. Beschreibung der Changesource<br />

3. Auswahl der Source Datenbank (hier werden nur diese Datenbanken angezeigt,<br />

welche auch mit Change Data Capture funktionieren)<br />

4. Erfassung der SCM (System Change Number). Mit dieser Option kann angegeben<br />

werden, ab welchem Zeitpunkt der Captureprozess starten soll. Der momentane Wert<br />

wird jeweils automatisch vom Tool abgefragt und angezeigt. Mit der Eingabe NULL<br />

wird diese Option so belassen wie sie ist.<br />

10.09.2009 Seite 67 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

9.3.7 Changesets bearbeiten<br />

Wenn ein Changeset zur Bearbeitung ausgewählt wird oder ein neues erstellt werden soll,<br />

werden im rechten Teil der Applikation die Eigenschaften angezeigt. Bei Erstellung können<br />

alle nötigen Eigenschaften erfasst werden. Bei Änderung einer Changesource können nur<br />

diese Felder verändert werden, welche noch änderbar sind. Die Applikation lässt nur Zeichen<br />

zur Eingaben zu, welche auch von Oracle unterstützt werden, dies soll den Benutzer vor<br />

Fehleingaben schützen.<br />

<br />

<br />

<br />

<br />

<br />

<br />

Abbildung 9-11: Changesets bearbeiten<br />

1. Changeset Name<br />

2. Beschreibung des Changesets<br />

3. Name der übergeordneten Changesource. Dieser kann nie verändert werden.<br />

4. Option Stop on DDL<br />

5. Hier kann der Zeitraum des Capturings genau definiert werden. Bei der Auswahl<br />

NULL werden keine zeitlichen Begrenzungen gesetzt<br />

6. Hier können drei weitere Optionen für den Capturingprozess gesetzt werden:<br />

• Enable Capture<br />

• Recover after Error<br />

• Remove DDL<br />

Die Optionen für die Changesets sind im Dokument Oracle Data Warehousing Guide 11g<br />

Release 1 (B28313-02) ausführlich beschrieben.<br />

10.09.2009 Seite 68 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

9.3.8 Changetabellen bearbeiten<br />

Wenn eine Changetabelle zur Bearbeitung ausgewählt wird oder eine neue erstellt werden<br />

soll, werden im rechten Teil der Applikation die Eigenschaften angezeigt. Bei Erstellung<br />

können alle nötigen Eigenschaften erfasst werden. Bei Änderung einer Changesource<br />

können nur diese Felder verändert werden, welche noch änderbar sind. Die Applikation lässt<br />

nur Zeichen zur Eingaben zu, welche auch von Oracle unterstützt werden, dies soll den<br />

Benutzer vor Fehleingaben schützen.<br />

9.3.8.1 Source Properties<br />

Hier werden die Angaben der Sourcetabelle erfasst.<br />

<br />

<br />

<br />

Abbildung 9-12: Changetabelle Source bearbeiten<br />

1. Auswahl Source Datenbank. Diese kann nie verändert werden, da sie vom<br />

übergeordneten Changeset vorgegeben ist.<br />

2. Owner der Source Tabelle. Bei dieser Auswahl werden nur mögliche Owner<br />

angezeigt. Systemuser sind nicht enthalten.<br />

3. Auswahl der Sourcetabelle. Hier werden nur diese Tabellen zur Verfügung gestellt,<br />

welche zum ausgewählten Owner gehören.<br />

Die Optionen für die Changesets sind im Dokument Oracle Data Warehousing Guide 11g<br />

Release 1 (B28313-02) ausführlich beschrieben.<br />

10.09.2009 Seite 69 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

9.3.8.2 Destination Properties<br />

Hier werden die Angaben der Destinationtabelle (Capture Table) erfasst.<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Abbildung 9-13: Changetabelle Destination bearbeiten<br />

1. Auswahl Destination Owner. Hier stehen nur mögliche Owner des Datawarehouses<br />

zur Auswahl.<br />

2. Name der Changetabelle. Hier lässt das Tool nur Oracle kompatible Zeichen zu.<br />

3. Auswahl des Changesets. Diese ist nie mutierbar, da diese durch das übergeordnete<br />

Changeset gegeben ist.<br />

4. Diese Auswahl beinhaltet die Capture Values. Folgende Werte können ausgewählt<br />

werden:<br />

• New = Nur die neuen Werte der Updates auf der Sourcetabelle werden in die<br />

Changetabelle geschrieben<br />

• Old = Nur die Werte vor einem Update auf der Sourcetabelle werden in die<br />

Changetabelle geschrieben<br />

• Both = Es werden sowohl die alten wie auch die neuen Werte bei einem<br />

Update auf der Sourcetabelle in die Changetabelle geschrieben<br />

10.09.2009 Seite 70 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

5. Im Feld Optionsstring können weitere Optionen für das kreieren eine Tabelle<br />

angegeben werden. Die Syntax ist die gleiche wir bei einem normalen CREATE<br />

TABLE DDL Befehl. Die möglichen Optionen können in der Oracle Dokumentation<br />

nachgelesen werden. (Oracle Database Administrator’s Guide 11g Release 1<br />

(B28310-01))<br />

6. In dieser Liste werden die Spalten einer Tabelle angezeigt. Ob es die Spalten der<br />

Sourcetabelle oder diese der Changetabelle sind ist abhängig von der Auswahl bei<br />

Punkt 8.<br />

7. In diesem Bereich werden die konfigurierten Hilfsspalten der Changetabelle<br />

angezeigt. Dieser Bereich dient nur zur Anzeige.<br />

8. Bei den beiden Checkboxen „Add“ und „Drop“ wird entschieden, ob die selektierten<br />

Spalten entfernt bzw. hinzugefügt werden sollen. Wenn die Checkbox „Add“ selektiert<br />

ist, werden in der Liste (Punkt 6) alle Spalten der Sourcetabelle angezeigt, welche<br />

noch nicht in der Changetabelle vorhanden sind. Ist die Checkbox „Drop“ angewählt,<br />

werden in der Liste (Punkt 6) alle Spalten der Changetabelle angezeigt. Diese beiden<br />

Checkboxen haben auch Einfluss auf den Bereich von Punkt 9. Wenn in diesem<br />

Bereich eine Hilfsspalte auf Y (yes) steht, wird diese auch entfern bzw. hinzugefügt.<br />

9. In diesem Bereich kann angegeben werden, ob eine Hilfsspalte hinzugefügt bzw.<br />

entfernt werden soll. Siehe auch Punkt 8.<br />

Die Optionen für die Changetabellen und die Hilfsspalten sind im Dokument Oracle Data<br />

Warehousing Guide 11g Release 1 (B28313-02) ausführlich beschrieben.<br />

10.09.2009 Seite 71 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

9.3.9 Shortcuts<br />

Die folgenden Shortcuts können genutzt werden:<br />

Shortcut<br />

[Strg] + [C]<br />

[Strg] + [V]<br />

[Strg] + [X]<br />

[Strg] + [F4]<br />

[Strg] + [Tab]<br />

[Alt] + [Leertaste]<br />

[Alt] + [Leertaste] + [X]<br />

[Alt] + [Leertaste] + [N]<br />

[Alt] + [Leertaste] + [X]<br />

[Alt] + [unterstrichener Menubuchstabe]<br />

[Shift] + [F10]<br />

[Shift] + [Tab]<br />

Tabelle 9-4: Shortcuts<br />

Beschreibung<br />

Kopieren<br />

Einfügen<br />

Ausschneiden<br />

Applikation schliessen<br />

Register wechseln<br />

(mit Shift gegen den Uhrzeigersinn)<br />

Systemmenü<br />

Fenster maximieren<br />

Fenster minimieren<br />

Fenster wiederherstellen<br />

Menupunkt Aufruf<br />

Kontextmenu öffnen<br />

Rückwärts durch Optionen<br />

9.3.10 Fehlerbehandlung<br />

Tritt in der Applikation eine Fehler auf, so wird dieser mit einem Error Provider angezeigt<br />

(Abb. 4-9). Beim Auftreten eines Fehlers, wird der rote Punkt mit dem Ausrufezeichen<br />

blinkend angezeigt. Um die genaue Fehlermeldung anzuzeigen, muss mit dem Mauszeigen<br />

auf dem roten Punkt positioniert werden. Mit einem Mausklick irgendwo im Fenster des Error<br />

Provider, kann der Fehler ausgeblendet werden. Ist der Fehler im Change Data Capture<br />

aufgetreten, wird immer die original Fehlermeldung der Datenbank im Tool ausgegeben.<br />

Abbildung 9-14: Fehleranzeige<br />

10.09.2009 Seite 72 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

10 Change Requests<br />

Die Usability Test haben immer wieder einige kleinere Änderungen ergeben, welche aber für<br />

die Applikation zum Teil einen erheblichen Mehrwert dargestellt haben. Diese Änderungen<br />

wurden in der Form von Change Requests aufgenommen. Die Änderungen, welche vom<br />

Auftraggeber bewilligt wurde, wurden innerhalb dieses Projekts umgesetzt. Die<br />

nichtgenehmigten Änderungen werden voraussichtlich in einem späteren Release umgesetzt.<br />

Auf den folgenden Seiten sind die Change Request tabellarisch dargestellt.<br />

Angaben zur Tabelle Change Requests:<br />

Personen<br />

Kurzzeichen<br />

Experte Thomas Glauser<br />

TGL<br />

ETL - Programmierer Stéphane Probst SPR<br />

Auftraggeber Urs Müller<br />

UMU<br />

Tabelle 10-1: Personen Change Request<br />

10.09.2009 Seite 73 von 80


CR<br />

Nr. Beschreibung<br />

Anforderungs-<br />

ID<br />

Mehrkosten<br />

Nein / Ja<br />

(Betrag)<br />

Grund<br />

Bewilligung<br />

durch<br />

Auftraggeber<br />

(UMU)<br />

Review<br />

durch<br />

1<br />

Bei der Detailspezifikation wurden aufgrund<br />

neuer Erkenntnisse die Funktionalen<br />

Anforderungen nochmals überarbeitet. Deshalb<br />

wird beantragt, die Anforderungen der<br />

Detailspezifikation als die geltenden dieses<br />

Projekts zu bewilligen.<br />

Funktionale<br />

Anforderungen<br />

Pflichtenheft<br />

Nein<br />

Mit den überarbeiteten Anforderungen,<br />

können die Projektziele nicht nur<br />

erreicht, sondern übertroffen werden.<br />

Auch kann das Tool für spätere<br />

Erweiterungen, besser konzipiert<br />

werden.<br />

̌<br />

TGL<br />

SPR<br />

2<br />

3<br />

4<br />

5<br />

6<br />

Die in der Detailspezifikation definierte<br />

Verwaltung des Sourcesystems kann komplett<br />

weggelassen werden, da die Detailanalyse<br />

gezeigt hat, dass eine elegantere Lösung mit<br />

den Change Sourcen möglich ist. Das<br />

Sourcesystem hat nur eine informative Funktion<br />

und diese Informationen können aus der<br />

Change Source bezogen werden. Deshalb<br />

können die Anforderungen des Sourcesystems<br />

weggelassen werden. FA.06.010 Nein<br />

Auf dem GUI ist ein Reiter geplant, welcher<br />

anzeigt, was im<br />

Moment bearbeitet wird. Dieser ist überflüssig Gesamtes GUI Nein<br />

Das Change Set kann aktiviert bzw. deaktiviert<br />

werden.<br />

Dies kann der Benutzer bequemer über das<br />

Kontextmenu in der TreeView verwalten, als auf<br />

dem rechten Panel im Konfigurationsteil des<br />

Tools FA.04.010 Nein<br />

Bei der Erstellung einer Changetabelle wäre<br />

eine Listbox effektiver als eine ComboBox. FA.05.030 Nein<br />

Beim erstellen oder ändern einer Changetabelle<br />

konnte der Type der Spalten verändert werden.<br />

Dies wird als nicht sinnvoll erachtet.<br />

FA.05.010<br />

FA.05.030<br />

Nein<br />

Ein Ziel der Applikation ist, dass<br />

möglichst wenige<br />

Daten in einer speziellen Tabelle oder<br />

in einem Konfigurationsfile abgelegt<br />

werden. Dies damit eine sehr schlanke<br />

Verwaltung dieses Tools möglich ist.<br />

Auch der Usability Walkthrough hat<br />

ergeben, dass die Verwaltung des<br />

Sourcesystems überflüssig und es zu<br />

einer schlankeren Handhabung beiträgt. ̌ SPR<br />

Der Usability Walkthrough hat ergeben,<br />

dass dieser Reiter überflüssig ist und<br />

kann deshalb weggelassen werden. ̌ SPR<br />

Der Usability Walkthrough hat ergeben,<br />

dass die<br />

Manipulation über ein Kontextmenu für<br />

den Benutzer einfacher und logischer<br />

ist. ̌ SPR<br />

Der Usability Walkthrough hat ergeben,<br />

dass die Auswahl einer Sourcetabelle<br />

so einfacher wird. ̌ SPR<br />

Beim Usability Walkthrough ist<br />

aufgefallen, dass die Änderung der<br />

Datentypen nicht sinnvoll ist ̌ SPR<br />

10.09.2009 Seite 74 von 80


CR<br />

Nr. Beschreibung<br />

7<br />

8<br />

9<br />

Nach Anmeldung des Benutzers, wird auf dem<br />

rechten Panel nichts angezeigt. Dort könnten<br />

einige Angaben zum Zustand der verschiedenen<br />

Prozesse stehen.<br />

Auf der rechten Seite im GUI sollte immer ein<br />

Reiter Log vorhanden sein. In diesem kann der<br />

jeweilige Status der Ausführung angeschaut<br />

werden<br />

Auf der rechten Seite im GUI ist ebenfalls eine<br />

Toolbox geplant. Dies ist überflüssig, da die<br />

gleichen Buttons auch auf der Haupttoolbox<br />

vorhanden sind.<br />

Anforderungs-<br />

ID<br />

Mehrkosten<br />

Nein / Ja<br />

(Betrag)<br />

Neue Anforderung<br />

(Kann) Ja (700.--)<br />

Neue Anforderung<br />

(Kann) Ja (800.--)<br />

Bewilligung<br />

durch<br />

Auftraggeber Review<br />

Grund<br />

(UMU) durch<br />

Beim Usability Walkthrough und der<br />

dazu geführten Diskussion ist<br />

aufgefallen, dass diese<br />

Statusinformationen sehr praktisch für<br />

den User wären. SPR<br />

Wenn eine Ausführung aus dem Tool<br />

nicht erfolgreich ist, muss analysiert<br />

werden warum nicht. Das Log ist daher<br />

sehr nützlich und sollte direkt im Tool<br />

angesehen werden können. ̌ SPR<br />

FA.02.XX,<br />

FA.03.XX,<br />

FA.04.XX,<br />

FA.05.XX Nein Siehe Beschreibung ̌ SPR<br />

10<br />

Im Contextmenu sollte ein Save Menu Punkt<br />

vorhanden sein<br />

Kontextmenu<br />

Kapitel 3.2.8.4<br />

in Detailspezifikation<br />

Nein<br />

Dieser Menupunkt wäre in manchen<br />

Fällen praktisch und gibt keinen<br />

Mehraufwand ̌ SPR<br />

11<br />

Im Menu wurde ein File / Open Menupunkt<br />

geplant, dieser kann weggelassen werden<br />

Menu Bar<br />

Kapitel 3.2.8.4<br />

in Detailspezifikation<br />

Nein<br />

Dieser Menupunkt ist überflüssig und<br />

kann zum Teil verwirrend wirken ̌ SPR<br />

12<br />

Im Menu wurde unter Run ein Delete Button<br />

geplant, dieser sollte unter der Gruppe File<br />

platziert werden<br />

Menu Bar<br />

Kapitel 3.2.8.4<br />

in Detailspezifikation<br />

Nein<br />

Der Menupunkt ist für den User unter<br />

File logischer zu finden. Dies hat ein<br />

weiterer Usability Test mit dem ETL<br />

Programmierer ergeben ̌ SPR<br />

13<br />

In der Toolbar kann der Open Button<br />

weggelassen werden<br />

Tool Bar<br />

Kapitel 3.2.8.3<br />

in Detailspezifikation<br />

Nein<br />

Dieser Button ist überflüssig und kann<br />

zum Teil verwirrend wirken ̌ SPR<br />

10.09.2009 Seite 75 von 80


CR<br />

Nr. Beschreibung<br />

Anforderungs-<br />

ID<br />

Mehrkosten<br />

Nein / Ja<br />

(Betrag)<br />

Grund<br />

Bewilligung<br />

durch<br />

Auftraggeber<br />

(UMU)<br />

Review<br />

durch<br />

14<br />

Im Menu unter der Gruppe View ist der Log<br />

Menupunkt überflüssig.<br />

Da nicht nur eine Tabelle, sondern auch ein<br />

ChangeSet oder die ganze Tabelle gepurged<br />

werden können, sollte dies auch im Tool<br />

15 möglich sein.<br />

Tabelle 10-2: Change Requests<br />

Menu Bar<br />

Kapitel 3.2.8.4<br />

in Detailspezifikation<br />

Nein<br />

Neue Anforderung<br />

(Muss) Ja (300.--)<br />

Dieser Punkt wurde durch den Change<br />

Reguest CR8 überflüssig ̌ SPR<br />

Diese Möglichkeiten sind im Laufe des<br />

Projekts aufgefallen und sollte<br />

umgesetzt werden ̌ SPR<br />

10.09.2009 Seite 76 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

11 Anhang<br />

11.1 Glossar<br />

Begriff<br />

Aktor<br />

CDC<br />

CPU<br />

CS<br />

Cset<br />

DB<br />

DBA<br />

Destination<br />

DWH<br />

E1<br />

EFM<br />

ERP<br />

ETL<br />

Beschreibung<br />

Ein Aktor ist ein Benutzer oder ein System welches mit der<br />

Applikation interagiert.<br />

Change Data Capture - Technologie von Oracle zum Übertragen der<br />

Änderungen einer Datenbank<br />

zentrale Verarbeitungseinheit eine Computers (Prozessor)<br />

Change Source<br />

Change Set<br />

Datenbank<br />

Datenbankadministrator<br />

Ziel - in diesem Projekt meist der Staging bereich des DWH<br />

Datawarehouse. Zentrale Datensammlung (Datenbank), deren Inhalt<br />

sich aus Daten unterschiedlicher Quellen zusammensetzt.<br />

Name des ERP Releases, welcher in der EMMI eingesetzt wird.<br />

Emmi Factory Management<br />

Enterprise Ressource Planning<br />

Bezeichnet den Prozess einer Schnittstelle zu einem DWH.<br />

E. Extraktion (Extract) der relevanten Daten aus verschiedenen Quellen<br />

T. Transformation (Transform) der Daten in das Format der<br />

Zieldatenbank<br />

L. Laden (Load) der Daten in die Zieldatenbank.<br />

GUI<br />

Graphical User Interface, englischer Begriff für Bedienoberfläche.<br />

LDI<br />

Lightweight Datawarehouse Interface<br />

MIS<br />

Management Information System<br />

OLAP<br />

Online Analytical Processing<br />

OLTP<br />

Online Transaction Processing<br />

Oracle<br />

Oracle ist eine Datenbankmanagementsoftware<br />

Owner<br />

Eigentümer eine Tabelle und Benutzer einer Datenbank<br />

Proof of Concept Machbarkeitsstudie<br />

purge<br />

reorganisieren von nicht benötigten Daten<br />

Records Datensatz einer Tabelle<br />

Redo Logs Dort werde alle Änderungen einer DB gespeichert<br />

Review<br />

Begutachtung<br />

RMT<br />

Rechte Maus Taste<br />

Rows<br />

siehe Record<br />

Schema siehe Owner<br />

SCN<br />

System Change Number<br />

Source<br />

Quelle - in diesem Projekt eine ERP System<br />

tnsnames.ora File welches die auf dem Client konfigurierten Datenbanken enthält<br />

10.09.2009 Seite 77 von 80


Tool<br />

Trigger<br />

UML<br />

Use Case<br />

<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

Werkzeug<br />

Datenbanktrigger. Bei einer bestimmten Art einer Änderung, wird ein<br />

gespeichertes Programm aufgerufen.<br />

Unified Modeling Language<br />

Anwendungsfall - Verhalten zwischen Aktoren und dem betrachteten<br />

System<br />

User<br />

Benutzer, Anwender eines Systems<br />

Tabelle 11-1: Glossar<br />

11.2 Referenzen<br />

Folgende Dokumente und Webadressen dienten als Informationsquellen.<br />

Projektmanagement<br />

http://de.wikipedia.org/<br />

http://www.stefan-baur.de<br />

http://www.it-checklists.com<br />

Unterlagen BFH CAS Business Engineering, Zühlke Engineering AG<br />

Oracle Data Capture<br />

Oracle Data Warehousing Guide 10g Release 2 (B14223-02)<br />

Oracle Data Warehousing Guide 11g Release 1 (B28313-02)<br />

ETL Architektur<br />

The Data Warehouse Lifecycle Toolkit, Ralph Kimball<br />

Skript Data Warehousing, CAS Information Management und BI, Thomas Glauser<br />

10.09.2009 Seite 78 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

11.3 Tabellenverzeichnis<br />

Tabelle 2-1: Entscheidungstabelle........................................................................................ 13<br />

Tabelle 3-1: Übersicht Use Cases (Publish) ......................................................................... 20<br />

Tabelle 3-2: Aktoren ............................................................................................................. 20<br />

Tabelle 3-3: SQL Programm starten..................................................................................... 22<br />

Tabelle 3-4: SQL Change Source......................................................................................... 25<br />

Tabelle 3-5: SQL Change Source löschen............................................................................ 27<br />

Tabelle 3-6: SQL Change Set konfigurieren ......................................................................... 29<br />

Tabelle 3-7: SQL Change Set löschen ................................................................................. 31<br />

Tabelle 3-8: SQL Changetabelle ändern .............................................................................. 33<br />

Tabelle 3-9: SQL Change Tabelle konfigurieren................................................................... 34<br />

Tabelle 3-10: SQL Source Tabelle konfigurieren .................................................................. 37<br />

Tabelle 3-11: SQL Source Tabelle löschen .......................................................................... 39<br />

Tabelle 3-12: Übersicht Use Cases (Subscribe) ................................................................... 40<br />

Tabelle 3-13: Übersicht Menu Bar ........................................................................................ 41<br />

Tabelle 3-14: Übersicht Kontext Menu.................................................................................. 42<br />

Tabelle 4-1: Namenskonventionen Sourcecode ................................................................... 44<br />

Tabelle 5-1: Übersicht Tests................................................................................................. 47<br />

Tabelle 6-1: Inhalte und Resultate der Projektphasen .......................................................... 50<br />

Tabelle 6-2: Zeitmanagement............................................................................................... 51<br />

Tabelle 6-3: Termine ............................................................................................................ 53<br />

Tabelle 7-1: Anforderungskatalog nicht funktionaler Anforderungen..................................... 54<br />

Tabelle 7-2: Übersicht Use Cases (Publish) ......................................................................... 55<br />

Tabelle 7-3: Übersicht Use Cases (Subscribe) ..................................................................... 55<br />

Tabelle 9-1: SQL View erstellen ........................................................................................... 60<br />

Tabelle 9-2: SQL User erstellen ........................................................................................... 60<br />

Tabelle 9-3: SQL Link erstellen ............................................................................................ 61<br />

Tabelle 9-4: Shortcuts .......................................................................................................... 72<br />

Tabelle 10-1: Personen Change Request............................................................................. 73<br />

Tabelle 10-2: Change Requests ........................................................................................... 76<br />

Tabelle 11-1: Glossar ........................................................................................................... 78<br />

11.4 Abbildungsverzeichnis<br />

Abbildung 2-1: ETL Prozess Schema..................................................................................... 7<br />

Abbildung 2-2: Ladeprozess grösserer Tabellen..................................................................... 8<br />

Abbildung 2-3: CPU Kurve Quellsystem ................................................................................. 9<br />

Abbildung 2-4: Prozessablauf Vision .................................................................................... 10<br />

Abbildung 2-5: Prozessablauf Change Data Capture ........................................................... 12<br />

Abbildung 3-1: Architektur Change Data Capture................................................................. 15<br />

Abbildung 3-2: Übersicht Modus CDC .................................................................................. 17<br />

Abbildung 3-3: Package Diagramm LDI................................................................................ 18<br />

Abbildung 3-4: Use Case Diagramm Publish........................................................................ 19<br />

Abbildung 3-5: Aktivitätsdiagramm Programm starten .......................................................... 21<br />

Abbildung 3-6: Aktivitätsdiagramm Login.............................................................................. 22<br />

Abbildung 3-7: GUI Login ..................................................................................................... 23<br />

Abbildung 3-8: Aktivitätsdiagramm Change Source konfigurieren ........................................ 24<br />

Abbildung 3-9: GUI Change Source ..................................................................................... 25<br />

Abbildung 3-10: Aktivitätsdiagramm Change Source löschen............................................... 26<br />

Abbildung 3-11: Aktivitätsdiagramm Change Set konfigurieren ............................................ 28<br />

Abbildung 3-12: GUI Change Set konfigurieren.................................................................... 29<br />

10.09.2009 Seite 79 von 80


<strong>Diplombericht</strong><br />

<strong>Master</strong> <strong>Thesis</strong> MAS-07-01.21<br />

Abbildung 3-13: Aktivitätsdiagramm Change Set löschen..................................................... 30<br />

Abbildung 3-14: GUI Change Set löschen ............................................................................ 31<br />

Abbildung 3-15: Aktivitätsdiagramm Changetabelle ändern.................................................. 32<br />

Abbildung 3-16: GUI Changetabelle ändern ......................................................................... 33<br />

Abbildung 3-17: Aktivitätsdiagramm Changetabelle purgen.................................................. 34<br />

Abbildung 3-18: Aktivitätsdiagramm Changetabelle erstellen ............................................... 35<br />

Abbildung 3-19: GUI Changetabelle erstellen (Source) ........................................................ 36<br />

Abbildung 3-20: GUI Changetabelle erstellen Destination .................................................... 37<br />

Abbildung 3-21: Aktivitätsdiagramm Change Tabelle löschen .............................................. 38<br />

Abbildung 3-22: GUI Source Tabelle löschen ....................................................................... 39<br />

Abbildung 3-23: Use Case Diagramm (Subscribe) ............................................................... 40<br />

Abbildung 3-24: Menu Bar.................................................................................................... 41<br />

Abbildung 3-25: Übersicht Toolbar ....................................................................................... 42<br />

Abbildung 3-26: Übersicht Statusbar .................................................................................... 42<br />

Abbildung 4-1: Software Layer ............................................................................................. 43<br />

Abbildung 4-2: DB Model DWH ............................................................................................ 45<br />

Abbildung 4-3: DB Model Source Datenbank ....................................................................... 46<br />

Abbildung 6-1: Vorgehensmodell.......................................................................................... 50<br />

Abbildung 6-2: Projektplan ................................................................................................... 52<br />

Abbildung 9-1: Setup Startfenster......................................................................................... 61<br />

Abbildung 9-2: Setup Installationsordner .............................................................................. 62<br />

Abbildung 9-3:Setup Bestätigung Installation ....................................................................... 62<br />

Abbildung 9-4:Setup Ausführung Installation ........................................................................ 63<br />

Abbildung 9-5: Setup Installation erfolgreich......................................................................... 63<br />

Abbildung 9-6: Loginmaske .................................................................................................. 64<br />

Abbildung 9-7: Benutzeroberfläche ...................................................................................... 65<br />

Abbildung 9-8: TreeView ...................................................................................................... 66<br />

Abbildung 9-9: Register des Bearbeitungsteils ..................................................................... 67<br />

Abbildung 9-10: Changesource bearbeiten........................................................................... 67<br />

Abbildung 9-11: Changesets bearbeiten............................................................................... 68<br />

Abbildung 9-12: Changetabelle Source bearbeiten............................................................... 69<br />

Abbildung 9-13: Changetabelle Destination bearbeiten ........................................................ 70<br />

Abbildung 9-14: Fehleranzeige............................................................................................. 72<br />

10.09.2009 Seite 80 von 80

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!