oder: wie eine sinnvolle Bereinigung des OWB Repository vor einer Migration durchgeführt werden sollte.
Um den Umfang einer OWB Migration auf das Notwendige zu reduzieren, sollte man versuchen, das OWB Repository um nicht mehr genutzte Objekte zu bereinigen.
Hierbei kann man folgenden Fragen nachgehen:
- Welche OWB Mappings wurden längere Zeit nicht mehr ausgeführt?
- Welche OWB Mappings transferieren keine Daten?
- Welche OWB Mappings existieren nur im Design Repository?
- Welche OWB Mappings werden von Anwenderseite nicht mehr benötigt?
Bezüglich der gefundenen Objekte ist zu überlegen, ob diese stillgelegt oder gelöscht werden können. Vor dem Löschen sollte man allerdings aufgrund von Murphy’s law unbedingt eine Sicherung der betroffenen Objekte erstellen.
Zu den oben genannten Punkten sind verschiedene Abfragen auf das Repository hilfreich. Nachfolgend einige Beispiele (11g):
1) Mappings im Design Repository, die noch nie oder seit einem Jahr nicht mehr ausgeführt wurden, findet man z.B. mit folgendem Statement:
exec OWBSYS.WB_RT_SCRIPT_UTIL.SET_WORKSPACE('&&Workspaceowner..&&Workspacename.'); select mo.PROJECT_NAME , m.INFORMATION_SYSTEM_NAME as module_name , m.MAP_NAME , max(e.CREATION_DATE) as zuletzt_gestartet from OWBSYS.ALL_IV_MODULES mo join OWBSYS.ALL_IV_XFORM_MAPS m on (mo.INFORMATION_SYSTEM_ID = m.INFORMATION_SYSTEM_ID) left outer join OWBSYS.WB_RT_AUDIT_EXECUTIONS e on ( m.MAP_NAME = e.EXECUTION_OBJECT_NAME and mo.LOCATION_NAME = e.EXECUTION_OBJECT_STORE_NAME ) group by mo.PROJECT_NAME , m.INFORMATION_SYSTEM_NAME , m.MAP_NAME having nvl(max(e.CREATION_DATE), date'1900-01-01') < sysdate - interval '1' year order by zuletzt_gestartet asc nulls last;
2) Mappings, die bei ihrer letzten Ausführung keine Daten transferierten:
exec OWBSYS.WB_RT_SCRIPT_UTIL.SET_WORKSPACE('&&Workspaceowner..&&Workspacename.'); select a.mapping_name , a.startzeitpunkt , a.endezeitpunkt , a.dauer_sekunden , sum (d.rtd_insert + d.rtd_update + d.rtd_delete + d.rtd_merge) as rows_changed from (select rtrim(ltrim(ra.RTA_LOB_NAME,'"'),'"') as mapping_name , ra.CREATION_DATE as startzeitpunkt , ra.LAST_UPDATE_DATE as endezeitpunkt , round ((ra.LAST_UPDATE_DATE - ra.CREATION_DATE)*24*60*60) as dauer_sekunden , ra.RTA_IID , dense_rank() over (partition by ra.RTA_LOB_NAME order by ra.RTA_IID desc ) as dr from OWBSYS.WB_RT_AUDIT ra ) a join OWBSYS.WB_RT_AUDIT_DETAIL d on (a.RTA_IID = d.RTA_IID) where a.dr = 1 -- betrachte nur die letzte Ausführung group by a.mapping_name , a.startzeitpunkt , a.endezeitpunkt , a.dauer_sekunden having sum (d.rtd_insert + d.rtd_update + d.rtd_delete + d.rtd_merge) = 0 -- keine Daten transferiert order by 2 desc;
3) Mappings, die nur im Design Repository existieren, weil sie entweder noch nie deployed wurden (diese findet man auch mit Statement 1) oder weil sie durch ein Drop-Deployment wieder entfernt wurden:
exec OWBSYS.WB_RT_SCRIPT_UTIL.SET_WORKSPACE('&&Workspaceowner..&&Workspacename.'); select mo.PROJECT_NAME , m.INFORMATION_SYSTEM_NAME as module_name , m.MAP_NAME , max(e.CREATION_DATE) as zuletzt_gestartet from OWBSYS.ALL_IV_MODULES mo join OWBSYS.ALL_IV_XFORM_MAPS m on (mo.INFORMATION_SYSTEM_ID = m.INFORMATION_SYSTEM_ID) left outer join OWBSYS.WB_RT_AUDIT_EXECUTIONS e on ( m.MAP_NAME = e.EXECUTION_OBJECT_NAME and mo.LOCATION_NAME = e.EXECUTION_OBJECT_STORE_NAME ) where not exists (select 1 from OWBSYS.WB_RTV_DEPLOYED_OBJECTS do where do.OBJECT_NAME = m.MAP_NAME and do.STORE_NAME = mo.LOCATION_NAME ) group by mo.PROJECT_NAME , m.INFORMATION_SYSTEM_NAME , m.MAP_NAME order by zuletzt_gestartet asc nulls last;
4) Mappings, die von der Anwenderseite nicht mehr benötigt werden, findet man nicht allein mit einer Abfrage auf das Repository. Folgende Vorgehensweise ist denkbar:
- Erstellen einer Liste mit allen Informationsprodukten (z.B. Berichte, etc.).
- Befragen der Anwender, welche Informationsprodukte nicht mehr benötigt werden.
- Analyse der den Informationsprodukten vorausgehenden Datenflüsse (wie ensteht das Informationsprodukt?).
- Identifikation derjenigen Mappings, die ausschließlich Daten für die nicht mehr benötigten Informationsprodukte bereitstellen.
Die genannten Statements sind als Beispiele zu sehen. Auf Basis des OWB Repository sind natürlich eine Reihe mehr Analysen möglich, wobei wir Sie gerne unterstützen.