Mittwoch, 9. November 2005 13h00, Variohalle 2 Zeitlich abhängig von OWB? Beat Flühmann Trivadis AG, Glattbrugg/Zürich (Schweiz) Schlüsselworte Oracle Warehouse Builder, Oracle Workflow, Scheduling Zusammenfassung Oracle Warehouse Builder wird vielerorts ausschliesslich als ETL-Werkzeug (Extraction, Transformation & Loading-Tool) verwendet, obwohl seit Release 9.2 auch die wertvolle Komponente Process Flow Editor direkt integriert ist. Process Flow ermöglicht die Modellierung von Prozessflüssen, d.h. Abhängigkeiten zwischen einzelnen (Lade-)Schritten zu designen. Das Produkt Oracle Workflow Server steuert später den Ablauf dieser Prozessflüsse auf dem Datenbank Server. Weiter wird die Möglichkeit des Scheduling im Zusammenhang mit OWB aufgezeigt. Einleitung Oracle Warehouse Builder (OWB) wird bei immer mehr Firmen als ETL-Tool erfolgreich eingesetzt. Ausser der Restriktion, das OWB nur Oracle Datenbanken beliefert, kann dieses Tool problemlos mit den Konkurrenzprodukten mithalten. OWB ist in der Oracle Developer Suite enthalten, so dass daraus kaum zusätzliche Lizenzkosten entstehen. Auch eine zusätzliche ETL-Engine ist nicht notwendig, da der generierte Code direkt in der Datenbank ausgeführt wird. Dass in der Datenbank auch ein Workflow-Tool und mit OWB der Process Flow Editor gratis mitgeliefert wird, ist aber vielerorts nicht bekannt oder wird deshalb nicht eingesetzt. Installationsvoraussetzungen Oracle Warehouse Builder und Oracle Enterprise Manager Es wird vorausgesetzt, dass Oracle Warehouse Builder (OWB) mit den beiden Repositories für die Designund die Runtime-Umgebung erstellt wurden, der entsprechende OWB Browser verfügbar ist (gemäss OWB 10g R1, Installation and Configuration Guide), und Oracle Enterprise Manager installiert wurde. Oracle Workflow Ursprünglich war Oracle Workflow (OWF) ein integrierter Teil von Oracle Applications und deshalb für andere Produkte nicht nutzbar. Seit einiger Zeit wurde aber OWF als eigenständiges Produkt weiterentwickelt und aufgeteilt in OWF Client und OWF Server. Mit installiertem OWB 9.2/10.1 können Prozessflüsse zwar modelliert werden, für deren Ausführung ist jedoch zusätzlich OWF Server zu installieren. Ein grosser Teil der OWF Client-Funktionalität wurde in OWB ab V9.2 in den Prozess Flow Editor übernommen, weshalb der OWF Client nicht mehr installiert werden muss. OWF Server übernimmt die Ablaufsteuerung und muss auf jeder Zieldatenbank separat installiert werden. OWF Server erstellt in einem Datenbank Schema ein Repository aus mehreren Hundert Tabellen, Views und Packages (und leider zusätzlich noch 4 überflüssige Demo-Accounts, welche sofort wieder gelöscht werden können). Um später Prozessflüsse auch in graphischer Form überwachen zu können kann zusätzlich auch OWF Middle Tier (inkl. Oracle Apache) installiert werden. Die Installation inklusive Konfiguration von OWF ist in 1-2 Stunden zu bewerkstelligen. Scheduling Mit Oracle 10g wird das Package DBMS_SCHEDULER mitgeliefert, welches für das Scheduling aller Art Jobs verwendet werden kann- auch für Mappings und Process Flows. Im Oracle Enterprise Manager 10g (OEM) kann ein Job mit all seinen Konfigurations-Parameter relativ einfach aufgesetzt werden, sofern der Job eine Datenbank-Prozedur ist. Bekanntlich erstellt OWB für jedes Mapping ein DB-Package mit der Funktion
18. Deutsche ORACLE-Anwenderkonferenz Main(p_env IN WB_RT_MAPAUDIT.WB_RT_NAME_VALUES) RETURN NUMBER; Der direkte Aufruf dieser Funktion aus einem PL/SQL-Block ist nicht trivial, jedoch stellt Oracle ein Template für eine Wrapper-Funktion zur Verfügung (siehe http://www.oracle.com/technology/ sample_code/products/warehouse/files/run_my_owb_stuff.sql). Diese wiederum kann in eine Prozedur umgewandelt werden, damit sie einfach in OEM als Job verwendet werden kann. Diese Funktion/Prozedur kann sowohl für den Aufruf von Mappings (inkl. SQL*Loader Mappings) als auch für den Start von Process Flows verwendet werden. Die Parameter-Übergabe für diese Prozedur ist etwas gewöhnungsbedürftig. Process Flow Modellierung Der Process Flow (PF) Editor in OWB ist vergleichbar mit dem Mapping Editor. Statt Tabellen, Filter, Joins, etc. werden Mappings, External Processes, Emails, etc. so genannte Aktivitäten über Transitions verbunden. Wie für Mappings müssen auch für PFs in OWB zuerst ein Modul erstellt und einer Location (dt. Speicherort; entspricht Zeiger zu Workflow Schema) zugewiesen werden. Innerhalb eines Moduls können mehrere Packages und innerhalb dieser die eigentlichen PF erstellt werden. Zu beachten ist, dass die Namen sowohl eines Modul wie auch der Packages nicht länger als 8 Zeichen sein dürfen OWF hat bereits ein fortgeschrittenes Alter Business Intelligence Abb. 1: Process Flows in der OWB Struktur und der Process Flow Editor Aktivitäten Ein neuer Process Flow besteht nur aus den beiden zwingenden Aktivitäten Start und erfolgreiches Ende. Als weitere mögliche Aktivitäten stellt OWB 9.2 zur Verfügung: Mapping OWB Mappings Transform Bestehende Transformation (z. B. Stored Procedure) Subprocess Einbinden eines bestehenden Prozessflusses als Unterprozess File Exists Prüft auf das Vorhandensein einer Datei FTP FTP Befehl(e) External Process Externer Prozess (z.b. Shell Skript) Email Versenden eines Emails Fork Verzweigung in parallele Abläufe And / Or End Wartet auf den Abschluss aller / einer einkommenden Aktivität(en) Prozessfluss-Ende mit Status WARNING oder ERROR (End SUCCESS und Start sind zwingend) All diese Aktivitäten erfordern während der Modellierungsphase die Konfiguration von Parametern, so z.b. benötigt ein Mapping (optional) Operating Mode, Audit Level, etc. während ein Email den SMTP-Server, den Email Empfänger und den eigentlichen Text benötigt. Ein PF kann auch mit Eingabe-Parametern ausgestattet werden, welche in der Start-Aktivität festgelegt und in andern Aktivitäten übernommen werden können. Leider kann OWB in dieser Version keine Aktivitätsergebnisse (Output-Parameter) an nachfolgende Aktivitäten weitergeben (mit Ausnahme des Aktivitäts-Status). Eine Workaround muss via Datenbank implementiert werden.
Transitions Eine Aktivität hat an ihrem Ende einen Status: SUCCESS, WARNING oder ERROR. Der Übergang (engl. Transition) zur nächsten Aktivität kann mit einer Bedingung dazu verknüpft werden und damit der weitere PF-Ablauf gesteuert werden. Daraus ergibt sich, dass jede Aktivität aus der Liste oben bis zu drei nachfolgende Aktivitäten haben können (FORK hat genau 2, START, AND und OR genau 1 unconditional, und END keinen Nachfolger). Beispiel Abb. 2: Beispiel Process Flows mit Transitions Zum Laden eines Data Marts müssen zuerst alle Dimensionen geladen werden. Dies kann parallel erfolgen und, sofern alle Dimensionen erfolgreich geladen werden konnten, wird anschliessend die Fakt- Tabelle Ticket geladen. Die Dimension CAT liest die Daten direkt aus einer Text-Datei (mit SQL*Loader), weshalb zuerst überprüft wird, ob diese Datei existiert (andernfalls die Dimension einfachheitshalber nicht neu geladen wird und dafür ein Email versendet wird). Am Beispiel der Dimension GEO wird gezeigt, dass im Fall des Status not SUCCESS ein 2. Versuch (GEO_AGAIN) unternommen wird, ansonsten der gesamte PF im Status ERROR endet. Mit OWB 10gR2 werden weitere Aktivitäten wie zum Beispiel Loops, While, Waits und Zuweisungen hinzukommen und damit noch mehr Prozessflüsse direkt modellierbar werden. Scheduling (Ablaufplanung) Statt PF direkt in OWB zu starten, können diese natürlich auch zeitlich gesteuert gestartet werden. Dies kann einfach z. B. mit AT (Windows) oder crontab (Unix) geschehen, aber auch die Datenbank stellt ähnliche Funktionalität zur Verfügung. Das eigentliche Scheduling erfolgt dort über das Standard-DBMS-Package DBMS_Scheduler. OEM unterstützt die Entwickler beim Erstellen der Jobs, Job-Klassen und Programme (http://<host>:5500/em, Bereich Administration -> Scheduler). Der von OEM daraus generiert Code könnte selbstverständlich selber geschrieben werden. Scheduler-Programm & Job-Klasse In OEM wird ein Programm vom Typ STORED_PROCEDURE für die im Abschnitt Installationsvoraussetzungen/Scheduling erwähnte Wrapper-Prozedur hier RUN_OWB_STEP genannt erstellt. Die Parameter werden default-mässig analog zum Oracle Skript gesetzt. Zusätzlich kann in OEM zusätzlich eine (oder mehrere) Job-Klasse dafür erstellt werden. Dies erleichtert später die Administration, ist aber optional.
18. Deutsche ORACLE-Anwenderkonferenz Abb. 3: Scheduler-Programm und Job-Klassen Konfiguration in OEM Job Das Scheduling von OWB Mappings oder Process Flows erfolgt am einfachsten über das Erstellen von Jobs in OEM. Mit dem oben konfigurierten Programm PRG_OWB_STEP ist dies relativ einfach, jedoch ist das Setzen der Parameter etwas gewöhnungsbedürftig. Nach dem Erstellen zumindest je eines Jobs für ein Mapping (PL/SQL und SQL*Loader) und einen Process Flow wird s aber zur Routine. Insbesondere ist darauf zu achten, dass der Befehlstyp auf Program geändert wird, und anschliessend die Option der ersten 4 Parameter der Prozedur auf User Defined und richtig (!) gesetzt werden (Gross- /Kleinschreibung). Der Parameter P_TASK_TYPE ist PLSQL für OWB PL/SQL Mapping SQL_LOADER für OWB SQL*Loader Mapping PROCESS für OWB Process Flow Bei SQL_LOADER ist zudem der Parameter P_LOCATION_NAME PlatformSchema (Achtung, falsch geschrieben im Usage Bereich des Oracle Skripts) Sonst entsprechen die beiden Parameter P_LOCATION_NAME und P_TASK_NAME dem physischen Namen der OWB Location bzw. des deploy -ten Objekts. Business Intelligence Der Ausführungsplan und die Optionen werden entsprechend den jeweiligen Anforderungen gesetzt. Abb. 4: Typische Konfigurationsparameter für OWB Jobs in OEM Monitoring Neben dem Erstellen und Starten von Process Flows ist von Interesse, sondern auch das Überwachen der einzelnen Prozessen und Aktivitäten.
Oracle Workflow stellt zwar einige Web-Pages zur Verfügung (http://<host>:7777/pls/wf/ wfa_html.home), welche rudimentär Abfragen über Process Flows zulassen. Aber nur schon Abfragen über nicht erfolgreich beendete Prozesse sind nicht direkt durchführbar geschweige denn, dass die Resultate vernünftig sortiert würden. Abb. 5: Grafische Darstellung eines Process Flows mit OWF Die grafische Darstellung eines (laufenden) Prozesses kann nützlich sein um den (aktuellen) Weg und den Aktivitäten-Status zu verfolgen, jedoch stösst man auch hier schnell an Grenzen der Möglichkeiten. Auch der Oracle Enterprise Manager liefert bezüglich Jobs nur eine allgemeine Übersicht in einer History, welche Jobs wann, wie gelaufen sind. Detailiertere Informationen über die OWB Process Flows können aber auch hier kaum gewonnen werden. OWB Runtime Audit Browser Eine Alternative für das Monitoring von (geplanten) OWB Process Flows und Mappings ist der OWB Runtime Audit Browser. Dieser Browser kann zusammen mit dem Application Server installiert werden, läuft aber auch als Client Version. Da sowohl Mappings wie auch die Process Flows mit OWB generiert wurden, diese die Audit Tabellen von OWB verwendet werden, um Informationen darüber im Browser a anzeigt, werden durch das Standard Auditing von OWB geliefert und da -sind überhaupt auswertbar. Abb. 6: OWB Runtime Audit Browser: Ausführungsübersicht eines Process Flows Aber auch dieser Browser ist limitiert. Da wie erwähnt nur Auditing Informationen ausgewertet werden ist weder ein Restart eines Process Flows noch ein neues Scheduling möglich. Auch eine grafische Darstellung des Prozessweges ist nicht vorhanden, die Aktivitäten werden in chronologischer Reihenfolge angezeigt.
18. Deutsche ORACLE-Anwenderkonferenz Fazit & Ausblick Oracle Warehouse Builder liefert einen Process Flows Editor, mit welchem einen Grossteil von DWH Workflows modelliert werden können. Die effektive Ausführung dieser Process Flows erfolgt mit dem Oracle Workflow Server, welche mit dem Scheduling-Mechanismus der Datenbank angestossen werden können. Die Funktionalität von Oracle Workflow reicht für die Modellierung und zur Überwachung aus, jedoch sind weitere wünschenswerte Features wie z. B. Restartability nicht vorhanden. Mit OWB 10gR2 ist angekündigt, dass das Scheduling direkt aus OWB erweitert wird, komplexere Ausführungspläne mit OWB erstellt werden können und noch mehr Funktionalität von Oracle Workflow Client im Process Flow Editor integriert wird. Hoffentlich wird auch die Steuerung mit Oracle Workflow ebenso erweitert. Verwendete Software Versionen für Demo Oracle Warehouse Builder 10g Release 1 10.1.0.2 Oracle Database 10g Release 1 10.1.0.2 Oracle Workflow Server 2.6.3.0 Kontaktadresse: Beat Flühmann Europa-Strasse 5 CH-8152 Glattbrugg Telefon: +41(0)44-808 70 20 Fax: +41(0)44-808 70 21 E-Mail beat.fluehmann@trivadis.com Internet: www.trivadis.com Business Intelligence