Ugrás a fő tartalomra

ODI alapok

Az Oracle Data Integrator (ODI) az Oracle Fusion Middleware integrációs megoldásának eleme.


Verziói : 11, 12

Az ODI egy E-LT tehát Extract Load Transform adat integrációs alkalmazás csomag, melynek az lehet az előnye, hogy feleslegessé teheti az átmeneti transzformációs szervert, és közvetlenül a cél-adatbázisba végezheti az átalakításokat.


Betű jelentések:
E : Extract - kiolvassa a forrás adatokat,
L : Load - betölti a cél adatbázisba az adatokat
T : Transform - átalakítja. az adatokat


ODI kronologia: 

Oracle Warehouse Builder (OWB)
- Oracle előző ETL eszköze
- Támogatása már lejárt,




Oracle Data Integrator (ODI)
- Oracle új adat integrációs eszköze
- Felvásárolt eszköz, Eredetileg Sunopsis Data Integrator néven futott(2006-ban vásárolta fel)





ODI jellemzője:
Oracle Fusion Middleware része
- OWB funkcionalitás integrációja az ODI-ba
- Bővíthető a „Knowledge Modulok” által
- Támogatja a kötegelt, eseményvezért real-time integrációt
- Sok forrás rendszer tipushoz képes kapcsolódni
- Heterogén adatbázis környezetben is működik, már nem csak Oracle adatbázisra
- Metaadatok alapulú adat intergrátor eszköz
- Az adatbázist egy ETL (Extract, Transform, Load) motorként használja
- Web Service támogatással is kiegészül
- Kibővített adatellenőrzési képességek
- Java kliens
- Kiterjesztett sckriptelhetőség (Groovy)
- Master és Work repository jellemzi



További ODI elemek:
- Runtime Agent - az ágens mely belép a különböző forrás/cél adatbázisokba és futtatja az transzformációkat. Létezik java EE alkalmazásszerverre telepíthető, és standalone alkalmazás verziója is.
 - Oracle Data Integrator Console - Web alkalmazás melynek segítségével elérhető és konfigurálható a repository, illetve runtime beállítások.







   ODI Knowledge modulok (KM)

Telepítő könyvtár: c:\Oracle\ODI122\odi\sdk\xml-reference\ACT_Add_Alternate_Key.xm


A transzformációkat, rewerse enginiering és egyéb ETL feladatokat
az ODI beépülő Knowledge modulokkal valósítja meg.
Egy adott KM egy adott technológiában egy adott feladatot valósít meg.

   KM típusok:
Reverse-Engineering Knowledge Modules (RKM)
Check Knowledge Modules (CKM)
Loading Knowledge Modules (LKM)
Integration Knowledge Modules (IKM)
Journalizing Knowledge Modules (JKM)
Service Knowledge Modules (SKM)



  Reverse-Engineering Knowledge Modules (RKM)

Ezek a KM-ok adatstruktúrákat derítenek fel.
1 Törlik a metaadattárat OdiReverseResetTable eljárással.
2 Kinyerik a forrás oldali információkat (sub models, datastores, columns, unique keys, foreign keys, conditions... ) és a SNP_REV_SUB_MODEL, SNP_REV_TABLE, SNP_REV_COL, SNP_REV_KEY, SNP_REV_KEY_COL, SNP_REV_JOIN, SNP_REV_JOIN_COL, SNP_REV_COND táblákba töltik az adatokat.
3 Végül felépítik az ODI work repository-ban az adatmodelt (OdiReverseSetMetaData).








  Check Knowledge Modules (CKM)

Adatminőség ellenőrzést és constraintek teljesülésének kikényszerítését végző KM-ok.
Kétféleképpen működhetnek: STATIC_CONTROL vagy FLOW_CONTROL módban.
Opcionálisan a hibás adatokat törölheti.
   STATIC_CONTROL - Forrás táblák ellenőrzése, a hibákat a Staging területre az E$ táblákba írja.
   FLOW_CONTROL   - Az I$ flow táblákat ellenőrzi a staging területen és a hibákat az E$ táblákba írja.















   Loading Knowledge Modules (LKM)

A betöltő knowledge modulok, forrás adatbázisból nyeriki ki SQL lekérdezéssel az adatokat
és betöltik a staging területre az S$ táblákba.
Nem csak adatbázisból jöhetnek az adatok pl.: flat file-ok, xml és számos más forrás is lehet.







   Integration Knowledge Modules (IKM)

A végső betöltést és transzformációt az IKM modulok végzik.
Ezek feltételezik, hogy minden adat már be van töltve a staging adat területre,
mely lehet a cél szerveren vagy egy másik szerveren is.
Az IKM modulok átmeneti táblákat (I$) is tölthetnek amit később törölnek.
Illetve CKM-eket alkalmazhatnak ha szükség van az adatok ellenőrzésére.












     Journalizing Knowledge Modules (JKM)

Ezek a KM-ok valósítják meg/triggerelik a Change Data Capture üzemelést.
Illetve töltik a staging területen a log táblákat J$, nézeteket JV$,
és adattal látják el a feliratkozott log olvasókat.






   Service Knowledge Modules (SKM)

Webszolgáltatások eléréséhez szükséges Java kódokat generáló modulok
(Web Services deployment archive files), melyeket az alkalmazásszerverre deployolnak
és ott futnak.



   ODI általános adattöltési elve:







ODI Studio több felületből áll , ezek a 'Navigátorok' Baloldali TABfüleken helyezkednek el :

Designer Navigator - grafikus fejlesztői környezet
Operator Navigator - futtató, és monitorozó felület
Topology Navigator - a rendszerek topológiája (szerverek, sémák, objektumok, ágensek, technológiák, repository-k) böngészhetők
Security Navigator - biztonsággal kapcsolatos beállítások, tehetők (userek, szerepkörök, jogosultságok
























A modelezés objektumok node-jainak munkaterületre húzása összekötése (balról jobbra haladó műveletsor) és az egyes objektumok/nodok properties adatalapjainak beállításával történik











Az egyes telepítési műveletek elvégző scriptjei:

set JAVA_HOME=c:\Program Files\Java\jdk1.8.0_131
set ODI_HOME=c:\Oracle\ODI123

set PATH=%JAVA_HOME%\bin;%PATH%
set CLASSPATH=%ODI_HOME%\odi\sdk\lib\odi-core.jar;%ODI_HOME%\odi\sdk\lib\spring-core.jar;%ODI_HOME%\odi\sdk\lib\spring-tx.jar;%ODI_HOME%\odi\sdk\lib\commons-lang-2.2.jar;%ODI_HOME%\odi\sdk\lib\spring-jdbc.jar
set CLASSPATH=%CLASSPATH%;%ODI_HOME%\odi\sdk\lib\spring-beans.jar;%ODI_HOME%\odi\sdk\lib\commons-logging-1.1.1.jar;%ODI_HOME%\odi\sdk\lib\commons-codec-1.3.jar;%ODI_HOME%\odi\sdk\lib\commons-collections-3.2.jar
set CLASSPATH=%CLASSPATH%;%ODI_HOME%\odi\sdk\lib\bsh-2.0b2.jar;odireleasehandler.jar;%ODI_HOME%\oracle_common\modules\oracle.jps\jps-manifest.jar;%ODI_HOME%\oracle_common\modules\javax.management.j2ee.jar
set CLASSPATH=%CLASSPATH%;%ODI_HOME%\oracle_common\modules\org.springframework_3.1.0.jar;%ODI_HOME%\oracle_common\modules\oracle.ucp.jar;%ODI_HOME%\odi\sdk\lib\javolution.jar;.

java -Xmx4096m odireleasehandler.ReleaseHandler -action backup

java -Xmx4096m odireleasehandler.ReleaseHandler -action delete

java -Xmx4096m odireleasehandler.ReleaseHandler -action import

java odireleasehandler.ReleaseHandler -action create

java -Xmx4096m odireleasehandler.ReleaseHandler -action scengen



Hasznos lekérdezések:


-- select * from all_tables where owner = 'EBH_LD_TAF'  --ebh_ld_taf.taf_aa_camp_action
-- select * from ebh_meta.mt_source_object where SOURCE_SYSTEM like 'CM%'

SELECT
   mod_name source_system,
   table_name source_Table,
   m.name
FROM
   ebh_odi_repo.snp_model mdl,
   ebh_odi_repo.snp_table t,
   ebh_odi_repo.snp_map_ref mr,
   ebh_odi_repo.snp_map_comp mc,
   ebh_odi_repo.snp_mapping m
WHERE
   mdl.i_mod = t.i_mod
   AND mdl.lschema_name LIKE 'EBH_%'
   AND t.i_table = mr.i_ref_id(+)
   AND mr.i_map_ref = mc.i_map_ref(+)
   AND mc.i_owner_mapping = m.i_mapping(+)
   AND mod_name LIKE 'CM%'



SELECT  USER            SCHEMA_NAME
       ,U.OBJECT_NAME   OBJECT_NAME
       ,OBJECT_TYPE     OBJECT_TYPE
       ,DBMS_METADATA.GET_DDL(OBJECT_TYPE, U.OBJECT_NAME, USER) ||
        CASE WHEN OBJECT_TYPE = 'TABLE'
              AND 1 = (SELECT 1 FROM USER_TAB_COMMENTS C WHERE C.COMMENTS IS NOT NULL AND C.TABLE_NAME = U.OBJECT_NAME)
             THEN ' ' || DBMS_METADATA.GET_DEPENDENT_DDL ('COMMENT', U.OBJECT_NAME, USER)
             ELSE TO_CLOB('')
        END             SOURCE
FROM    USER_OBJECTS U
WHERE   OBJECT_TYPE IN ('PROCEDURE', 'PACKAGE', 'FUNCTION', 'TABLE', 'VIEW', 'SEQUENCE', 'TRIGGER', 'INDEX', 'SYNONYM')
   AND  OBJECT_NAME <> 'DDL_MENTES'

Oktatásra ajánlom:

















Megjegyzések