OWB2ODI-Migration – „Geschwindigkeit ist keine Hexerei!“

oder: sinnvolle Prüfungen für die Migration

Ein entscheidender Punkt wird in Migrationsprojekten oftmals unterschätzt: Die Validierung der ODI Mappings ist mit erheblichem Aufwand verbunden. Funktionieren die ODI Mappings exakt so, wie die vorigen OWB Mappings? Wir empfehlen ausdrücklich, dies zu überprüfen. Die Erfahrung hat gezeigt, dass dies bei einigen migrierten Mappings nicht der Fall ist.

Die zugrundeliegende Laufzeit-Architektur von OWB und ODI ist unterschiedlich und verlangt eine besondere Beachtung. Die OWB Mappings werden ausschließlich als PL/SQL-Logik in der Oracle Datenbank abgelegt und ausgeführt, die ODI Mappings teilweise direkt in der Datenbank, teilweise im Application Server.

Bei lastintensiven ETL-Strecken ist beim OWB ausschließlich die Oracle Datenbank für eine geeignete Skalierung verantwortlich. Beim Einsatz von ODI verteilt sich die Skalierung auf die Datenbank und den Application Server. Nach einer Migration können sich somit das Verhalten und die Performance einer ETL-Strecke signifikant ändern. Hier sollten geeignete Prüfmechanismen, wie die Prüfung der Ausführungsdauer, vorgesehen werden. Die nachfolgenden Listings zeigen SQL-Skripte zur Ermittlung der Ausführungszeit eines OWB Mappings und eines ODI Mappings:

Datenbankfrage zur Ermittlung der Ausführungszeiten eines OWB Mappings:

exec OWBSYS.WB_RT_SCRIPT_UTIL.SET_WORKSPACE('&&Workspaceowner..&&Workspacename.');
select e.TASK_OBJECT_STORE_NAME as location_name
     , e.TASK_NAME
     , e.EXECUTION_OBJECT_NAME
     , e.CREATION_DATE as startzeitpunkt 
     , e.LAST_UPDATE_DATE as endezeitpunkt 
     , e.ELAPSE as dauer_sekunden 
     , nvl(e.RETURN_RESULT, case when e.ABORT_SENT=1 then 'ABORTED' end) as return_result 
  from OWBSYS.WB_RT_AUDIT_EXECUTIONS e 
 where e.EXECUTION_OBJECT_NAME like '&&Mappingname.' 
order by e.CREATION_DATE desc;

Datenbankfrage zur Ermittlung der Ausführungszeiten eines ODI Mappings:

select st.LSCHEMA_NAME
     , st.STEP_NAME
     , sl.STEP_BEG as startzeitpunkt
     , sl.STEP_END as endezeitpunkt
     , sl.STEP_DUR as dauer_sekunden
     , sl.STEP_STATUS
  from SNP_STEP_LOG sl
  join SNP_SB_STEP st
       on (    sl.SESS_NO = st.SB_NO
           and sl.NNO = st.NNO
          )
where st.STEP_TYPE = 'M'
   and (   st.STEP_NAME like '&&Mappingname.'
        or st.STEP_NAME like '&&Mappingname./_DS/_STEP' escape '/'
       )
order by sl.STEP_BEG desc;

Für jedes fertig migrierte ETL-Objekt werden idealerweise ausgiebige Tests durchgeführt. Wenn möglich, bauen Sie eine parallele ETL-Strecke mit Tabellen und produktionsnahen Daten in einem separaten Datenbankschema auf. In dieser Umgebung können Sie in einem Regressionstest vor der Produktivnahme Daten und Ausführungszeiten migrierter ODI Objekte mit den produktiven Ergebnissen vergleichen. Ob Sie ein vollständiges Duplikat Ihrer Produktionsumgebung anlegen, oder nur von einzelnen ETL-Strecken, ist abhängig von Ihrem gewählten ODI Einführungsszenario und von der Komplexität und dem Datenvolumen Ihrer Produktionsumgebung.

OWB_ODI_Testumgebung_Vergleiche

Beim Auftreten von Datendifferenzen kann dies ein Anzeichen für eine mangelhafte Migration der betroffenen OWB Mappings sein. Es sollte allerdings auch die Möglichkeit beachtet werden, dass die Migration bereits mit Metadaten durchgeführt wurde, die nicht (oder nicht mehr) dem jeweiligen produktiven OWB Mapping entsprach. Wir empfehlen deshalb, vor einer Migration die OWB Metadaten mit den produktiven Laufzeitobjekten abzugleichen.

Dieser Beitrag wurde unter Analytics & BigData abgelegt und mit , , , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s