What are the Relations between Journalizing and IKM?

What is the best method to use in the following scenario:
I have about 20 source tables with large amount of data.
I need to create interfaces that join the source tables into target tables.
The source tables are inserted every few secondes with about hundreds to thousands rows.
There can be a gap of few seconds between the insert of different tables that sould be joined.
The source and target tables are on the same Oracle instance and schema.
I want to understand the role of: 'Journalizing CDC' and 'IKM - Incremental Update' and
how can i use it in my scenario?
In general What are the relations between 'Journalizing' and 'IKM'?
Should i use both of them? Or maybe it is better to deelte and insert to the target tables?
I want to understand what is the role of 'Journalizing CDC'?
Can 'IKM - Incremental Update' work without 'Journalizing'?
Does 'Journalizing' need to have PK on the tables?
What should i do if i can't put PK (there can be multiple identical rows)?
Thanks in advance Yael

Hi Yael,
I will try and answer as many of your points as I can in one post :-)
Journalizing is way of tracking only changed data in your source system, if your source tables had a date_modified you could always use this as a filter when scanning for changes rather than CDC, Log based CDC (Asynchronous in ODI, Logminer/Streams or Goldengate for example) removes the overhead of of placing a trigger on the source table to track changes but be aware that it doesnt fully remove the need to scan the source tables, in answer to you question about Primary keys, Oracle CDC with ODI will create an unconditional log group on the columns that you have defined in ODI as your PK, the PK columns are tracked by the database and presented in a Journal table (J$<source_table_name>) this Journal table is joined back to source table via a journalizing view (JV$<source_table_name>) to get the rest of the row (ie none PK columns) - So be aware that when ODI comes around to get all data in the Journalizing view (ie Inserts, Updates and Deletes) the source database performs a join back to the source table. You can negate this by specifying ALL source table columns in your PK in ODI - This forces all columns into the unconditional log group, the journal table etc. - You will need to tweak the JKM to then change the syntax sent to the database when starting the journal - I have done this in the past, using a flexfield in the datastore to toggle 'Full Column' / 'Primary Key Cols' to go into the JKM set up (there are a few Ebusiness suite tables with no primary key so we had to do this) - The only problem with this approach is that with no PK , you need to make sure you only get the 'last' update and in the right order to apply to your target tables, without so , you might process the update before the insert for example, and be out of sync.
So JKM's provide a mechanism for 'Change data only' to be provided to ODI, if you want to handle deletes in your source table CDC is usefull (otherwise you dont capture the delete with a normal LKM / IKM set up)
IKM Incremental update can be used with or without JKM's, its for integrating data into your target table, typically it will do a NOT EXISTS or a Minus when loading the integration table (I$<target_table_name>) to ensure you only get 'Changed' rows on the load into the target.
user604062 wrote:
I want to understand the role of: 'Journalizing CDC' and 'IKM - Incremental Update' and
how can i use it in my scenario?Hopefully I have explained it above, its the type of thing you really need to play around with, and throroughly review the operator logs to see what is actually going on (I think this is a very good guide to setting it up : http://soainfrastructure.blogspot.ie/2009/02/setting-up-oracle-data-integrator-odi.html)
In general What are the relations between 'Journalizing' and 'IKM'?JKM simply presents (only) changed data to ODI, it removes the need for you to decide 'how' to get the updates and removes the need for costly scans on the source table (full source to target table comparisons, scanning for updates based on last update date etc)
Should i use both of them? Or maybe it is better to deelte and insert to the target tables?Delete and insert into target is fine , but ask yourself how do you identify which rows to process, inserts and updates are generally OK , to spot a delete you need to compare the table in full, target table minus source table = deleted rows , do you want to copy the whole source table every time to perform this ? Are they in the same database ?
I want to understand what is the role of 'Journalizing CDC'?Its the ODI mechanism for configuring, starting, stopping the change data capture process in the source systems , there are different KM's for seperate technologies and a few to choose for Oracle (Triggers (Synchronous), Streams / Logminer (Asynchronous), Goldengate etc)
Can 'IKM - Incremental Update' work without 'Journalizing'?Yes of course, Without CDC your process would look something like :
Source target ----< LKM >---- Collection table (C$) ----<IKM>---- Integration table (I$) -----< IKM >---- Target table
With CDC your process looks like :
Source Journal (J$ table with JV$ view) ----< LKM >---- Collection table (C$) ----<IKM>---- Integration table (I$) -----< IKM >---- Target table
as you can see its the same process after the source table (there is an option in the interface to enable the J$ source , the IKM step changes with CDC as you can use 'Synchronise Journal Deletes'
Does 'Journalizing' need to have PK on the tables?Yes - at least a logical PK in the datastore, see my reply at the top for reasons why (Log Groups, joining back the J$ table to the source table etc)
What should i do if i can't put PK (there can be multiple identical rows)? Either talk to the source system people about adding one, or be prepared to change the JKM (and maybe LKM, IKM's) , you can try putting all columns in the PK in ODI. Ask yourself this , if you have 10 identical rows in your source and target tables, and one row gets updated - how can you identify which row in the target table to update ?
>
Thanks in advance YaelA lot to take in, as I advised I would reccomend you get a little test area set up and also read the Oracle database documentation on CDC as it covers a lot of the theory that ODI is simply implementing.
Hope this helps!
Alastair

Similar Messages

  • What are the relation between JPA and Hibernate, JPA and TopLink?

    What are the relation between JPA and Hibernate, JPA and TopLink?
    Can JPA instead of Hibernate and TopLink?

    The Java Persistence API (JPA) is the object relational mapping persistence
    standard for Java. Hibernate and TopLink provide an Open source Object-relational mapping framework for Java.
    They provide an implementation for the Java Persistence API. In my opinion, both Hibernate and TopLink provide support to JPA
    and they can also be regarded as the complementary to JPA.
    Let's wait to see other person's opinions.

  • What's the relation between Gain and transmitted power with coverage area?

    what's the relation between Gain and transmitted power with coverage area?
    if we want add coverage area, could we just add antenna's gain only or add transmitted power only?

    That information can be found at: http://www.cisco.com/warp/customer/cc/pd/witc/ao350ap/prodlit/agder_rg.htm

  • What is the relation between KTOPL and 0CHRT_ACCTS_ATTR? both Chart of Acct

    Hi
    If an R3 field e.g. KTOPL (in datasource 0fi_gl_4)  which is a "Chart of Accout" is extracted a part of 0fi_gl_4 to BI,
    is there the need to separately extract 0CHRT_ACCTS_ATTR & 0CHRT_ACCTS_TEXT which are also "Chart of Accout"
    What is the relation between KTOPL and 0CHRT_ACCTS_ATTR & 0CHRT_ACCTS_TEXT  in R3?
    What is the relation between KTOPL and 0CHRT_ACCTS_ATTR & 0CHRT_ACCTS_TEXT  in BI?
    Thx

    Hi,
    I get these well with examples so let me see if I get your point:
    So in the tranx data the 0fg_gl will be  a value for KTOPL  e.g. 450009 as a G/L Account number? (Values for chart of Acct should be GL Accounts, right?)
    but before this tranx data is loaded, preferrably,  0CHRT_ACCTS_ATTR and 0CHRT_ACCTS_TEXT should have been extracted to BI; and data loaded; and this will be the master data and there should have been in it:
    .._ATTR   -
    .._TEXT
    450009   -
    Petty cash Expenses
    Is my understanding exact?
    Thnx

  • What is the relation between UTXJ and JMOD, how JMOD determine in order

    Hi All,
    What is the relation between UTXJ and JMOD! 
    How JMOD determine in order! ( For TAXINJ).
    Please help me
    Regards
    raj

    Dear Raj
    Both are not related in anyway.  UTXJ is for sales tax and JMOD is for excise condition.  For UTXJ, you need to create a tax code in FTXP and assign it in VK11 / UTXJ, whereas, JMOD is an excise condition type for which, you need to maintain the relevant datas in J1ID.
    Coming to your question, how JMOD is determined in sale order, it is based on delivering plant.  This delivering plant, as already said above, you will have to maintain in J1ID with the indicator "1" under declared tab in Material Chapter ID combination.
    thanks
    G. Lakshmipathi

  • What's the relations between BEGIN_BALANCE_DR_BEQ and  BEGIN_BALANCE_DR ?

    hello, these days I am learning gl.
    I'm confused about what's the relations between BEGIN_BALANCE_DR_BEQ and BEGIN_BALANCE_DR if CURRENCY_CODE is a foreign currency and TRANSLATED_FLAG = 'R'?
    the trm describes BEGIN_BALANCE_DR_BEQ as 'Beginning debit balance, base currency'.
    where is the BEGIN_BALANCE_DR_BEQ amount come from?
    where is the BEGIN_BALANCE_DR amount come from?
    thank you very much!
    peter

    I'm not sure exactly what you're asking. The query
    UPDATE WH_T_ITEMS A
       SET BALANCE_QTY =MAX(ITEM_QTY)
    WHERE STORE_ID = V_STORE_ID
       AND ITEM_SERIAL = V_ITEM_SERIAL   ;is not valid Oracle SQL. Aggregate functions like MAX cannot be used in a query like that because Oracle has no idea what you are aggregating by. There is nothing that prevents Oracle from modifying the syntax of the SQL language to allow an aggregate to be used in that manner but there would generally be no reason to extend the SQL language like that.
    You could assign the result of a query that included an aggregate to the BALANCE_QTY column, i.e.
    UPDATE WH_T_ITEMS A
       SET BALANCE_QTY = (SELECT MAX(ITEM_QTY) FROM <<some table>> WHERE <<some condition>>)
    WHERE STORE_ID = V_STORE_ID
       AND ITEM_SERIAL = V_ITEM_SERIAL   ;As I believe I've mentioned in some of your previous threads, a data model where you have an ITEMS table that has both an ITEM_QTY and BALANCE_QTY seems suspect. The fact that you're assigning the value of the ITEM_QTY column to the BALANCE_QTY on the same row only increases the concern.
    Justin

  • What are the differences between Logos and LogosXT?

    What are the differences between Logos and LogosXT?

     Logos XT is a networking middle-layer maintained by the LabVIEW Network Technologies and Security group. Logos XT provides a thin layer on top of TCP/IP to simplify some common network tasks.
    The underlying foundation for NI networking is called Logos.
    I believe that the basic idea is Logos is what is going on behind the scenes at the base level and Logos XT lets you build your own networking protocols on top of Logos.  Logos XT would be used if you want to make your own networking protocol instead of using TCP/IP or UDP.
    Scott A
    SSP Product Manager
    National Instruments

  • What are the differences between jdk and sdk

    what are the differences between jdk and sdk?? thanks

    Just marketing whims.
    SDK = software development kit
    JDK = Java development kti
    Sun has use both names to refer to its SDK for Java. I forget which one they're using now, but they've switched a couple of times.

  • What are the differences between Essbase and Planning?

    What are the differences between Essbase and Planning?

    Planning is an enterprise application built around the Essbase OLAP engine.
    You can create planning applications with Essbase only, but Planning uses best practises and has built-in enterprise features.
    Brian Chow

  • What are the differences between trigger and constraints?

    what are the differences between trigger and constraints?

    Try the documentation, this would be a good starting point: How Oracle Enforces Data Integrity
    C.

  • What are the differences between iphone and iphone 5c 5s?

    What are the differences between iphone and iphone 5c 5s?

    Read here:
    http://www.apple.com/iphone/compare/
    The iPhone 5C is basically the original iPhone 5 in different colors.
    While the 5S gets the improved hardware.
    Read the link above for a feature comparison.

  • What are the differences between api and sdk

    Hi,
    Could anybody clarify for me what are the difference between API and SDK? I googled for the answer, and couldn't find any thing on this topic.
    Many thanks in advance.
    javasfan

    Is it correct to say that "a SDK includes all the
    APIs"? or "API sits on top of the SDK"?It's a bit weird to say either. First, the JDK doesn't include all APIs. Just the J2SE core API. Others, like 3rd party libraries or J2EE are not included. Second, if you mean the API docs, they're also not included IIRC.
    It'd technically only be correct to say "the SDK provides an API", I guess. The example is very lame, but: if the SDK is a machine, the API is the sum of its buttons and levers and gauges and intakes and outlets and exhausts. The API docs are the manual.

  • What are the differences between tracing and hierarchical profiler?

    There are many terms used by people, I am just wondering what are the differences between tracing and hierarchical profiler? Aren't they the same thing?
    Thanks a lot.

    Instrumentation and tracing are two different things; in fact they belong to two different categories - one's a thing the other's an activity.
    Tracing is following the execution path of a program. Tracing shows us the the calls a program makes, perhaps the internal choices it makes (ifs and whiles), exceptions thrown, etc,
    Instrumentation is code we build into our program to produce a record of its status. There are different techniques, from using DBMS_APPLICATION_INFO calls to monitor status to writing log tables or files. Instrumentation can be used to generate a trace; it can do profiling; it can provide information reports on outputs and exceptions.
    In my opinion DBMS_TRACE and DBMS_HPROF are not instrumentation, because they are external to the program under investigation, rather than built into it. However, there is an obvious overlap between the insight they provide and what we might do with our own logging.
    Cheers, APC
    PS
    970992 wrote:
    you are not a stranger for me.Really? I don't believe we've met. I'm pretty certain I don't know anybody whose name is just a number.

  • What are the differences between inactive and active ABAP objects?

    Can anybody tell me what are the differences between inactive and active ABAP objects?
    In my opinion,  an active object is compiled and system wide available, that means the system do not have to compile the program again before run or use the object. While An inactive object is not system wide available and every time you run an inactive object, firstly the abap runtime will have to  generate a tempory runtime object and this inactive object can not seen by others.
    Am I right? Can anybody kindly tell me other differences?

    Hi,
    "When it is inactive, it is like it would not exist at all:" no - it's like it only exists to you
    "If we just saved that one means it is stored in application server not in database": no - the inactive version is also stored in the database. You can log off and log on and it will still be there, in its inactive status.
    "Only active objects can be executed.": no - inactive objects can be executed by you
    When you create or modify a program, it is inactive until you activate it.
    With a change, there are two versions of the program stored in the database - the active version (as it was before you made your change), and the inactive version. If you attempt to run the program, you'll run the inactive version - the one with your changes. Everyone else on the system will run the active version.
    In this way, you can make changes without affecting anyone else.
    Once you activate your program, then the inactive version becomes the active version.
    With a create, there is no active version, until you hit the activate button. This means ONLY you can run the program.
    An additional benefit of this model, is that if you make a change, save it, and then change your mind without activating, you can recover the active version into the editor, using version management.
    A downside is that sometimes you have to activate your change before you can test it, if it interacts with other, active, programs.
    Regards,
    Kumar

  • What are the differences between StreamConnection and SocketConnection?

    hi guys.
    i desperately needs some explanation. i have google and the results are nt useful
    What are the differences between StreamConnection and SocketConnection?
    i have a j2se server using a serverconnection.
    the articles on the web are contradictory as a result i am really confuse and dont know which one i should use in creating the socket connection in my j2me midlet
    PLS Pls help me .

    hi, a socketConnection is a subclass of StreamConnection. In other word, a StreamConnection is an interface (template) to improve more specific connection like : FileConnection, HttpConnection, ...
    If you have to connect a specific server, use SocketConnection, if it's a HTTP server use HttpConnection ...

Maybe you are looking for