Two days ago Devendra talk to me about parallel executions in ODI and we are discussing the solution from Oracle Metalink that works but, at true, I never was stopped to analyse.
In face of that, I decided try something in a new way and it worked fine!
Let me share my 2 minutes approach.
Oracle Data Integrator uses the target table name to build the work tables (I$, E$, C$) and, because of that if more then one interface that loads the same target table is executed at same time the work tables creation, insert and drop process got mixed and nothing works.
The solution is pretty obvious… It is necessary to make the work table name variable and linked to each execution. The ODI path for that is the Session Number.
All solutions that I saw until today uses an Oracle Data Integrator variable but got problems if the table name is near to the maximum name length allowed for the technology.
In face of that, I decide to use the ODI natural behavior to manage the lenght.
All that is necessary to do is:
1. Edit all your KM (IKM and LKM if some) and add a new step (move it to be the first step)
Step Name: Parallel Setup
Technology: Java Bean Shell
Code: <? String vSess = odiRef.getSession(“SESS_NO”); ?>
Importante note: this change can be done to any KM that will not interfier with process not parallel
2. Go to Topology Module, in the Physical Schema that will have parallel execution (or in all if you wish) and change the Work Table Prefix to:
Well my friends… that is all! Any Parallel or Single execution can be executed with no conflicts between work table name or length name problem will be raise.
The best about it is be very simple!!!
See you all in next post!
Leave a reply →
Pingback: Chapter 5. Knowledge Module Internals | Oracle-dba