Auditing in ODI

HI guys,
I wanted to know how can we perform auditing in the ODI and can any one tell me the data flow design of the ODI
Thanks,
Praveen

This might be of interest to you:
https://blogs.oracle.com/dataintegration/entry/new_feature_in_odi_112
Within ODI, we can specify checks which are applied during the flow which will move erroneous records to an error table. These records can be re-processed during the next run or simply purged.
The data flow will depend entirely on the knowledge modules that you utilize in your interfaces. There are various modules for different technologies, allowing you to control your data flow in various ways to best suit your requirements.
This is a useful reference:
http://www.oracle.com/technetwork/testcontent/oracledi-km-development-129055.pdf
For many KM's (but not all), ODI records the number of inserts, updates and deletes performed at each stage in the flow.

Similar Messages

  • Auditing and Custom error logging

    Guys,
    Can one of you tell me how can we do auditing in ODI i.e like say if load files how many records the file have and how many we have loaded for each file and how many are
    bad records etc and how many records we have inserted/updated in each table etc.
    Basically some sort of report we need to send in the end as audit report after odi batch run every day
    Can we do this in ODI?
    Is it possible to do sort of custome error logging like what we do in pl/sql, like inserting into error log table when ever oracle error comes or any runtime error which we need to insert into table etc.
    Can we do this kind of error handling ODI?
    Cheers
    Sri
    Edited by: aranisrinivas on 26-Nov-2011 10:13

    Just use below details for your required information
    '<%=odiRef.getPrevStepLog("STEP_NAME")%>'
    '<%=odiRef.getPrevStepLog("SESS_NO")%>'
    '<%=odiRef.getPrevStepLog("MESSAGE")%>'
    '<%=odiRef.getPrevStepLog("ERROR_COUNT")%>'
    You can get more details from below tables.
    1) snp_sess_txt_log -( It holds the scripts used for the task and session details)
    2) snp_sess_task_log-(It holds the time details error msg and all)
    3) snp_sess_task -( it holds the name of the task and technology , context details
    Thanks

  • Problem while invoking ODI Scenario from BPEL

    Hi,
    I am trying to invoke a scenario from BPEL process through ODIPublicWebService.
    When I initiate the process, its failing with following error message....
    InvokeDeptAdmin_invokeScenario_OutputVariable>
    -<part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="part1">
    -<ns1:invokeScenarioResponse xmlns:ns1="xmlns.oracle.com/odi/OdiInvoke/">
    <ns1:Ok>false
    </ns1:Ok>
    <ns1:SessionNumber>23101
    </ns1:SessionNumber>
    <ns1:ErrorMessage>Agent didn't execute this command:
    </ns1:ErrorMessage>
    </ns1:invokeScenarioResponse>
    </part>
    </InvokeDeptAdmin_invokeScenario_OutputVariable
    I observed that its failing as I am not giving any input to optional parameters like
    <xsd:element name="SessionName" minOccurs="0" type="xsd:string" />
    <xsd:element name="Keywords" minOccurs="0" type="xsd:string" />
    <xsd:element name="Variables" maxOccurs="unbounded" minOccurs="0" type="VariableType" />
    I can see following empty tags in my Audit of BPELConsole....
    <SessionName/>
    <Keywords/>
    <Variables/>
    And null is being considered as a variable by the Agent and following Exception is thrown in the Operator
    java.lang.Exception: Specified variable not found in the Repository : null
         at com.sunopsis.dwg.dbobj.SnpSession.a(SnpSession.java)
         at com.sunopsis.dwg.dbobj.SnpSession.y(SnpSession.java)
         at com.sunopsis.dwg.dbobj.SnpSession.treatSessionPreTrt(SnpSession.java)
         at com.sunopsis.dwg.dbobj.SnpSession.treatSession(SnpSession.java)
         at com.sunopsis.dwg.cmd.DwgCommandScenario.treatCommand(DwgCommandScenario.java)
         at com.sunopsis.dwg.cmd.DwgCommandBase.execute(DwgCommandBase.java)
         at com.sunopsis.dwg.cmd.e.i(e.java)
         at com.sunopsis.dwg.cmd.h.y(h.java)
         at com.sunopsis.dwg.cmd.e.run(e.java)
         at java.lang.Thread.run(Unknown Source)
    Please let me know how can I overcome this problem
    Appreciate earliest response.
    Thanks!!!
    Message was edited by:
    user644377

    Hi, how are you?
    I did works including a parameter in my scenario and put value in this parameter on call scenario from BPEL. If i remove the parameter on the scenario and the call, its dont works.
    Try include a parameter in your scenario.

  • Header and Trailer record handling in ODI

    Hi All,
    I have a delimited file which I am trying to load into Oracle DB using Oracle Data Integrator. We are using SQLLDR LKM for this. Since we have header, trailer have different format than the data records, so we have another interface which loads data. Since we have the requirement to load the data into another control table for audit purpose we have another interface.
    What happens when we load the file, because of two interfaces the file scan happens 2 twice. This increases the overall turnaround time. Please note these interfaces work on filter basis for a field called record_type. 0,1,2 are the values for this field which mean header, data and trailer respectively. What we are looking for is how to restrict this double scanning of file for header-trailer and data records. What are the options which can be used here.
    Regards,
    Prashant

    Hi Prashant
    You can use a combination of external table and multi table insert. In ODI 11g there is a Oracle Multi Table Insert IKM. You will have to have one interface which has the source as the file and the target is a temporary target. The LKM will use LKM File to External Table, the IKM will use Oracle Multi Table IKM, and it will set DEFINE_QUERY. Also the LKM should set DELETE_TEMPORARY_OBJECTS to false. Then define 2 interfaces to load your 2 targets for example. The first target loading interface will use the 1st interface as a source and the MTI IKM again will use the MTI IKM and set IS_TARGET_TABLE to true and execute to false. Then the second target loading interface will use the 1st interface as a source and the MTI IKM again wil set IS_TARGET_TABLE to true and execute to true.
    Cheers
    David

  • Issue switching authentication mode in ODI 11.1.1.6

    Hi all, I'm triying to switch the authentication mode in my odi 11.1.1.6. I've configured the jps-config.xml to use ACTIVE DIRECTORY, but when I try to switch the autentication mode I get the following error:
    oracle.odi.setup.AuthenticationConfigurationSwitchingException: JPS-00096: No provider defined for idstore.ldap.provider.
         at oracle.odi.setup.SwitchToExternalAuthenticationService.listMatchedSupervisorUsernames(SwitchToExternalAuthenticationService.java:155)
         at oracle.odi.ui.gallery.support.SwitchAuthModeController.hasValidSupervisor(SwitchAuthModeController.java:168)
         at oracle.odi.ui.gallery.support.SwitchAuthModeConnectionPage.invoke(SwitchAuthModeConnectionPage.java:90)
         at oracle.odi.ui.gallery.support.AbstractMasterRepositoryWizard$2.run(AbstractMasterRepositoryWizard.java:156)
         at oracle.ide.dialogs.ProgressBar.run(ProgressBar.java:655)
         at java.lang.Thread.run(Thread.java:619)
    This is my jps-config.xml:
    <serviceInstance name="idstore.ldap" provider="idstore.ldap.provider">
         <property name="idstore.type" value="ACTIVE DIRECTORY"/>
    <property name="security.principal.alias" value="ou=Service Accounts,ou=Central,ou=ar,dc=domain,dc=corp"/>
         <property name="security.principal.key" value="msad.ldap.credentials"/>
         <property name="ldap.url" value="ldap://ldaphost:389"/>
         <property name="max.search.filter.length" value="500"/>
         <extendedProperty>
         <name>user.search.bases</name>
         <values>
         <value>dc=cencosud,dc=corp</value>
         </values>
         </extendedProperty>
         <extendedProperty>
    <name>group.search.bases</name>
         <values>
         <value>dc=cencosud,dc=corp</value>
    </values>
    </extendedProperty>
         </serviceInstance>
    <jpsContext name="default">
    <serviceInstanceRef ref="credstore"/>
         <serviceInstanceRef ref="idstore.ldap"/>                                   
    <!--serviceInstanceRef ref="keystore"/-->
    <!--serviceInstanceRef ref="idstore.xml"/-->
    <!--serviceInstanceRef ref="policystore.xml"/-->
    <!--serviceInstanceRef ref="idstore.loginmodule"/-->
         <!--serviceInstanceRef ref="audit"/-->
    </jpsContext>
    Any help will be appreciated.
    Thanks!

    There seems to be some problem with your jps-config.xml . I think JPS experts in OPSS forum may be able to help you with jps-config
    Also check if correct jps-config is being picked by odi.

  • Upgrading ODI 11.1.1.7  Repositories to 12C

    Hi Friends,
    Does anybody has any clue to resolve the below error? This error comes at the time of calling ua.bat (12 C ) in CMD. I am trying my best to resolve this but it will be really appreciated for any suggestions on this.
    Thanks
    Bhabani
    java.lang.reflect.InvocationTargetException
      at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
      at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
      at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
      at oracle.ias.update.plugin.Plugin.instantiatePlugin(Plugin.java:248)
      at oracle.ias.update.plugin.Plugin.<init>(Plugin.java:229)
      at oracle.ias.update.plugin.Plugin.getPlugin(Plugin.java:180)
      at oracle.ias.update.plan.PlanStep.getPlugin(PlanStep.java:335)
      at oracle.ias.update.plan.PlanString.<init>(PlanString.java:66)
      at oracle.ias.update.plan.PlanCustom.<init>(PlanCustom.java:74)
      at oracle.ias.update.plan.PlanStep.<init>(PlanStep.java:189)
      at oracle.ias.update.plan.PlanComponent.<init>(PlanComponent.java:203)
      at oracle.ias.update.plan.Template.load(Template.java:161)
      at oracle.ias.update.plan.Template.loadAllTemplates(Template.java:102)
      at oracle.ias.update.UpgradeDriver.loadConfiguration(UpgradeDriver.java:838)
      at oracle.ias.update.UpgradeDriver.main(UpgradeDriver.java:257)
      at oracle.ias.update.UpgradeDriver.main(UpgradeDriver.java:175)
    Caused by: java.util.MissingResourceException: Can't find oracle.ias.update.plugin.odi.bundle.ODIResourceBundle bundle
      at java.util.logging.Logger.setupResourceInfo(Logger.java:1518)
      at java.util.logging.Logger.<init>(Logger.java:265)
      at java.util.logging.Logger.<init>(Logger.java:260)
      at oracle.ias.update.UpgradeLogger.<init>(UpgradeLogger.java:60)
      at oracle.ias.update.UpgradeLogger.getLogger(UpgradeLogger.java:93)
      at oracle.ias.update.LoggingManager.create(LoggingManager.java:249)
      at oracle.ias.update.plugin.UpgradePlugin.createPluginLogger(UpgradePlugin.java:195)
      at oracle.ias.update.plugin.UpgradePlugin.<init>(UpgradePlugin.java:181)
      at oracle.ias.update.plugin.odi.ODIPlugin.<init>(ODIPlugin.java:136)
      ... 17 more
    [2013-10-24T15:11:27.259+05:30] [Framework] [ERROR] [UPGAST-00259] [upgrade.Framework] [tid: 1] [ecid: 7ad7478d-5903-4792-82dd-c016d19d4403-00000001,0] The getInitialValue method for plug-in ODI.ODI1 will not be called due to a previous error.
    [2013-10-24T15:11:27.259+05:30] [Framework] [ERROR] [] [upgrade.Framework] [tid: 1] [ecid: 7ad7478d-5903-4792-82dd-c016d19d4403-00000001,0] Cause: An error occurred when loading or initializing the plug-in which prevents the getInitialValue method from executing.
    [2013-10-24T15:11:27.259+05:30] [Framework] [ERROR] [] [upgrade.Framework] [tid: 1] [ecid: 7ad7478d-5903-4792-82dd-c016d19d4403-00000001,0] Action: Review the log file for additional details.
    [2013-10-24T15:11:27.260+05:30] [Framework] [INCIDENT_ERROR] [] [upgrade.Framework] [tid: 1] [ecid: 7ad7478d-5903-4792-82dd-c016d19d4403-00000001,0] UPGAST-00251: An error occured reading Upgrade Descriptor file D:\Oracle\Middleware\Oracle_Home\odi\plugins\upgrade\odi.xml
    [2013-10-24T15:11:27.260+05:30] [Framework] [INCIDENT_ERROR] [] [upgrade.Framework] [tid: 1] [ecid: 7ad7478d-5903-4792-82dd-c016d19d4403-00000001,0] The file does not conform to the expected syntax.
    [2013-10-24T15:11:27.261+05:30] [Framework] [INCIDENT_ERROR] [] [upgrade.Framework] [tid: 1] [ecid: 7ad7478d-5903-4792-82dd-c016d19d4403-00000001,0] See the secondary message for additional information. Contact Oracle Support.
    [2013-10-24T15:11:27.261+05:30] [Framework] [INCIDENT_ERROR] [] [upgrade.Framework] [tid: 1] [ecid: 7ad7478d-5903-4792-82dd-c016d19d4403-00000001,0] UPGAST-00259: The getInitialValue method for plug-in ODI.ODI1 will not be called due to a previous error.
    [2013-10-24T15:11:27.261+05:30] [Framework] [INCIDENT_ERROR] [] [upgrade.Framework] [tid: 1] [ecid: 7ad7478d-5903-4792-82dd-c016d19d4403-00000001,0] [[
    oracle.ias.update.exception.UpgradeException: UPGAST-00259: The getInitialValue method for plug-in ODI.ODI1 will not be called due to a previous error.
      at oracle.ias.update.plugin.Plugin.getInitialValue(Plugin.java:317)
      at oracle.ias.update.plan.PlanString.<init>(PlanString.java:67)
      at oracle.ias.update.plan.PlanCustom.<init>(PlanCustom.java:74)
      at oracle.ias.update.plan.PlanStep.<init>(PlanStep.java:189)
      at oracle.ias.update.plan.PlanComponent.<init>(PlanComponent.java:203)
      at oracle.ias.update.plan.Template.load(Template.java:161)
      at oracle.ias.update.plan.Template.loadAllTemplates(Template.java:102)
      at oracle.ias.update.UpgradeDriver.loadConfiguration(UpgradeDriver.java:838)
      at oracle.ias.update.UpgradeDriver.main(UpgradeDriver.java:257)
      at oracle.ias.update.UpgradeDriver.main(UpgradeDriver.java:175)
    [2013-10-24T15:11:27.292+05:30] [Framework] [NOTIFICATION] [] [upgrade.Framework] [tid: 1] [ecid: 7ad7478d-5903-4792-82dd-c016d19d4403-00000001,0] Reading upgrade descriptor D:\Oracle\Middleware\Oracle_Home\oracle_common\plugins\upgrade\audit.xml
    [2013-10-24T15:11:27.318+05:30] [Framework] [NOTIFICATION] [] [upgrade.Framework] [tid: 1] [ecid: 7ad7478d-5903-4792-82dd-c016d19d4403-00000001,0]   Plugin for component AUDIT in D:\Oracle\Middleware\Oracle_Home\oracle_common
    [2013-10-24T15:11:27.318+05:30] [Framework] [NOTIFICATION] [] [upgrade.Framework] [tid: 1] [ecid: 7ad7478d-5903-4792-82dd-c016d19d4403-00000001,0] Reading upgrade descriptor D:\Oracle\Middleware\Oracle_Home\oracle_common\plugins\upgrade\mds.xml
    [2013-10-24T15:11:27.349+05:30] [Framework] [NOTIFICATION] [] [upgrade.Framework] [tid: 1] [ecid: 7ad7478d-5903-4792-82dd-c016d19d4403-00000001,0]   Plugin for component MDS in D:\Oracle\Middleware\Oracle_Home\oracle_common
    [2013-10-24T15:11:27.350+05:30] [Framework] [NOTIFICATION] [] [upgrade.Framework] [tid: 1] [ecid: 7ad7478d-5903-4792-82dd-c016d19d4403-00000001,0] Reading upgrade descriptor D:\Oracle\Middleware\Oracle_Home\oracle_common\plugins\upgrade\Opss.xml
    [2013-10-24T15:11:27.364+05:30] [Framework] [NOTIFICATION] [] [upgrade.Framework] [tid: 1] [ecid: 7ad7478d-5903-4792-82dd-c016d19d4403-00000001,0]   Plugin for component OPSS in D:\Oracle\Middleware\Oracle_Home\oracle_common
    [2013-10-24T15:11:27.364+05:30] [Framework] [NOTIFICATION] [] [upgrade.Framework] [tid: 1] [ecid: 7ad7478d-5903-4792-82dd-c016d19d4403-00000001,0] Reading upgrade descriptor D:\Oracle\Middleware\Oracle_Home\oracle_common\plugins\upgrade\syscomp.xml
    [2013-10-24T15:11:27.448+05:30] [Framework] [NOTIFICATION] [] [upgrade.Framework] [tid: 1] [ecid: 7ad7478d-5903-4792-82dd-c016d19d4403-00000001,0] Libraries for CAM.SYSCOMP
    [2013-10-24T15:11:27.449+05:30] [Framework] [NOTIFICATION] [] [upgrade.Framework] [tid: 1] [ecid: 7ad7478d-5903-4792-82dd-c016d19d4403-00000001,0]   D:/Oracle/Middleware/Oracle_Home/oracle_common/plugins/upgrade/CamPlugin.jar
    [2013-10-24T15:11:27.471+05:30] [Framework] [NOTIFICATION] [] [upgrade.Framework] [tid: 1] [ecid: 7ad7478d-5903-4792-82dd-c016d19d4403-00000001,0]   Plugin for component CAM in D:\Oracle\Middleware\Oracle_Home\oracle_common
    [2013-10-24T15:11:27.471+05:30] [Framework] [NOTIFICATION] [] [upgrade.Framework] [tid: 1] [ecid: 7ad7478d-5903-4792-82dd-c016d19d4403-00000001,0] Reading upgrade descriptor D:\Oracle\Middleware\Oracle_Home\oracle_common\plugins\upgrade\wlsservices.xml
    [2013-10-24T15:11:27.502+05:30] [Framework] [NOTIFICATION] [] [upgrade.Framework] [tid: 1] [ecid: 7ad7478d-5903-4792-82dd-c016d19d4403-00000001,0]   Plugin for component WLS in D:\Oracle\Middleware\Oracle_Home\oracle_common
    [2013-10-24T15:11:27.502+05:30] [Framework] [NOTIFICATION] [] [upgrade.Framework] [tid: 1] [ecid: 7ad7478d-5903-4792-82dd-c016d19d4403-00000001,0] Reading upgrade descriptor D:\Oracle\Middleware\Oracle_Home\oracle_common\plugins\upgrade\wsm.xml
    [2013-10-24T15:11:28.871+05:30] [Framework] [NOTIFICATION] [] [upgrade.Framework] [tid: 1] [ecid: 7ad7478d-5903-4792-82dd-c016d19d4403-00000001,0]   Plugin for component WSM in D:\Oracle\Middleware\Oracle_Home\oracle_common

    Hi Bhabani
    Did you following the post-install instructions in the release notes? There are some patches (in the download install) related to upgrade, not sure if its directly related yet.
    http://docs.oracle.com/middleware/1212/odi/ODIRN/index.html#CHDICJAE
    Cheers
    David

  • Auditing Information in $ERROR table operator view

    Hi All,
    I wold like to develop process for auding data in error table in odi so that operator can look at the records and take appropriate steps.
    I would like to provide a separate interface outside of ODI such as web page where, user can audit the data in this table.
    what is the methdology to develop such process, can someone guide me to understand implemenation approach
    Thanks and Regards

    SDD wrote:
    Hi
    Can any one help me to understand the error of ORA-00942: table or view does not exist while compiling the package on Oracle 9.2.0.4.0Which means package owner is granted select on view not directly but via roles. However, roles are ignored by definer rights packages/stored procedures/stored functions/triggers... You need to grant package owner select on view directly.
    SY.
    Edited by: Solomon Yakobson on Jan 21, 2010 4:06 AM

  • What's Different Between ODI and FDQM ?

    I need to know What's Different Between ODI and FDQM ?

    At is simplest ODI is an enterprise scale ELT tool that can cope with moving very large amounts of data bwteen heteregeneous systems. It requires a fair degree of technical knowledge to use well and that the user is pretty competent with SQL. It is not really an end user tool and the jobs tend to be lights out scheduled processes with a limited user interface for executing these jobs. FDQM is more of a data quaility tool which gives the average end user the out of the box functionality to be able to transform and load data into various target systems. It is not designed to move very large amounts of data efficiently i.e. multi millions of lines of data like ODI. However it does have a rich user interface that provides an easy to use mapping engine, a repeatbale controlled data load process and has a host of in built reporting and audit features which would have to be built from scratch in a tool like ODI

  • Pool : best practice ODI : PLSQL or Interface object ?

    Hello,
    My ODI consultant has developped an interface to load a flat file into Hyperion Planning :
    * first step : load flat file into staging : done with "Interface" object
    * second step : transform staging table (1,2,3 ==> JAN, FEB, MAR // transform "-" into ND_Customer ... very easy transformation !) : done trough a PLSQL Procedure. Result is load into FACT_TABLE
    * third step : load FACT_TABLE into ESSBASE : done with "interface" object
    During design, we didn't discuss the technology, but after the build, I'm very suprised by the second step. There is no justification to do it with PLSQL. My consultant explains me : "I'd rather to use PLSQL". But from my point of view, ODI best practice is to use "Interface" (more flexible, you can change the topology without impact in interface etc ...)
    What is your point of view? Should I raise an issue and expect from my consultant a rewriting with "interface" object?
    Rgds

    Thx SH, the complexity (use of two intermediate tables : STAGING and FACT) is due to our requirment to archive the original data during one year (in STAGING) and to give an audit trail from Essbase to original data (before transformation). From Essbase we could go back to FACT Table (same member name) then goes back to STAGING by using and unique ID that produces a link between tables.
    From my point of view ODI Interface is the simplier way to maintain the "mapping", instead of PLSQL, but I would have more feedbacks from other developper to be sure of my feeling (I've done only 2 Hyperion Planning + ODI Project before the current one).
    The complexity of interface are low or medium : simple filter on one or two dimensions / DECODE mapping on Month / group by on similar records / for few interfaces, more complexe rules with IF statement.
    Thx in adavance

  • ODI  Master and Work Repository schema deleted

    Hi,
    I found that the ODI  Master and Work Repository schema were deleted by someone, I want to know if there is a way to detect and find who committed the deletion.
    I will appreciate any idea to help me .
    Thanks.

    Hi, Your left with trying to track the schema deletion at the database level im afraid, without a Master Repos you dont have an ODI Environment so there is nowhere to look.
    If someone 'Detached' a work schema - you might be able to track this from a Master repos but if as you say they have been deleted / dropped then I might check th DB alert log but I dont think it will be registered unless you have Auditing enabled in the DB.
    Last solution would be to use something like logminer to read the DDL from the database logs, see if you can spot the drop that way.
    Rgrds
    Alastair

  • Whats the difference between ODI and FDM

    Hi Everyone,
    Can Anyone explain the diff between FDM and ODI ?
    Thanks!
    Vaneet

    ODI - Full extract, load and transform tool for moving data from heterogenous data sources to hetergenous targets.
    FDM - A workflow based tool for users to import data from a file or database, create mappings, validate the mappings and then move the data in Hyperion EPM targets.
    Where FDM is a predominantly user based interface that allows users to monitor and audit the progress of data (especially things like GL data), ODI is a significantly more technical tool and would - in all likelehood - be automated and potentially managed and monitored by the IT department.
    geeo

  • How can I move the ODI Work Repository from one server to another server?

    How can I move the ODI Work Repository from one server to another server?

    Hi,
    If you would like to move your source models, target models and project contents from Work repository 1 to another work repository.
    I.e. Dev. server to Prod Server.
    1. Firstly, replicate the master repository connections i.e. with same naming conventions manually
    2. Go to Dev. Server work repository -> File Tab -> Click on Export work repository (save it in a folder)
    3. After exporting, you can view the xml files in the folders.
    4. Now, Open the Prod. server and make sure you already replicated mas. rep. details.
    5. Now, right click on model and import source model in synonym mode insert_update (select source model from the folder where your xml file located)
    6. Similarily, import again target then Project.
    Now, check. It should work.
    Thank you.

  • Assigning a Jython variable value to an ODI variable

    I have to implement database cursor functionality in ODI.
    For storing the returned values from database, I am using a Jython list.
    The next functionality that I have to implement is as follows:
    (i) For each value in the Jython list, I have to pass that value as a variable to an interface and then execute the interface
    (ii) Return back to the Jython list to get the next value in it
    (iii) Execute the interface for the new value from Jython list
    (iv) Have to execute the interface for as many values as in the list and stop when list is over.

    Hi,
    Thanks for your replies.
    I tried your method of using source as a query in procedure and using ODI startScen in the Target of the same procedure. But the scenario runs only once, and then stops even though the Source query returns 4 rows.
    Do we have to write Source and Target in separate steps of the procedure?
    Does ODI store the many records returned into some internal variables?
    I need to implement a cursor functionality so what is the best approach?
    Can i pass array variable value to some odi variables and do a loop?
    I used a workaround....it works but dont know if that's a good way of doing things:
    I retrieved all the different values that I need in a string by appending the values(this was done using Java loop).
    In my next step in the procedure I call a scenario(package which has some variables and my interface), which passes this long variable from Java as <@...@>
    Then in the package I use an iteration variable which is used to find out the SubString position so that I can extract the correct string to use for my Interface in the next step of the Package.
    It is working fine as of now.....but things could be made simpler if I could call the scenario in the Java loop, then I wouldn't need the iteration variable etc.

  • Error encountered while assigning a value to a variable in ODI.

    we are getting the below error while trying to assign the o/p of the below query to a variable in ODI.THis error is encountered when the Table1 is empty....
    select b.res from (select (select CEIL((select count(1) from Table1)/2) - #SMARTS.loop_variable from dual) result from dual) a, (select CEIL((select count(1) from cst_dsa.m_pb_cable_data)/2) res from dual) b where a.result >= 0
    java.lang.Exception: Error: No value to affect to this variable for DefDate:2012-05-22 13:57:07.0
    DefN:null
    DefV:null
    IndStore:H
    ITxtDefT:null
    ITxtVar:null
    SessNo:800100
    VarDatatype:N
    VarName:SMARTS.total_loop_count_cable
         at com.sunopsis.dwg.dbobj.SnpSessTaskSqlV.execStdOrders(SnpSessTaskSqlV.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTaskTrt(SnpSessTaskSql.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSqlV.treatTaskTrt(SnpSessTaskSqlV.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTask(SnpSessTaskSql.java)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSqlV.treatTask(SnpSessTaskSqlV.java)
         at com.sunopsis.dwg.dbobj.SnpSessStep.treatSessStep(SnpSessStep.java)
         at com.sunopsis.dwg.dbobj.SnpSession.treatSession(SnpSession.java)
         at com.sunopsis.dwg.cmd.DwgCommandSession.treatCommand(DwgCommandSession.java)
         at com.sunopsis.dwg.cmd.DwgCommandBase.execute(DwgCommandBase.java)
         at com.sunopsis.dwg.cmd.e.i(e.java)
         at com.sunopsis.dwg.cmd.g.y(g.java)
         at com.sunopsis.dwg.cmd.e.run(e.java)
         at java.lang.Thread.run(Unknown Source)
    can somebody pls let me know ,how to handle this exception..

    This error means that there is no value to assign to your variable, because specified query doesn't return result row. You should rewrite your query to guarantee that it would return row in any case.
    For example, select nvl(min(b.res), -1) from (select (select CEIL((select count(1) from Table1)/2) - #SMARTS.loop_variable from dual) result from dual) a, (select CEIL((select count(1) from cst_dsa.m_pb_cable_data)/2) res from dual) b where a.result >= 0 group by a,b
    Edited by: apiminov on 15.06.2012 8:18
    Edited by: apiminov on 15.06.2012 8:19

  • ERROR WHILE RUNNING ODI SCENARIO FROM BAM ALERT

    We are using oracle data integrator 11g and have created an ODI Scenario and able to run the scenario from ODI studio client.
    We have done the configuration for BAM-ODI integration as mentioned in http://docs.oracle.com/cd/E21764_01/integration.1111/e10224/bam_odi.htm#BABEJIGD
    We have started ODI Agent, soa and bam servers. Created a BAM alert -> select action - Run ODI Scenario -> selected the same scenario.
    Alert ran at scheduled time but failed with following error:
    java.io.IOException : truncated data integrator frame received
    Error Message (if any)
    [2012-08-06T11:24:21.046+05:30] [bam_server1] [WARNING] []
    [oracle.bam.eventengine] [tid: bam-pool-Action-thread-1] [userId:
    OracleSystemUser] [ecid:
    3576f9092ef9497a:-743c430a:138fa7450c3:-8000-00000000000000a8,1:23453] [APP:
    oracle-bam#11.1.1] EventEngine: Error occured while running a ODI Scenario.
    [2012-08-06T11:24:21.250+05:30] [bam_server1] [ERROR] []
    [oracle.bam.eventengine] [tid: bam-pool-Action-thread-1] [userId:
    OracleSystemUser] [ecid:
    3576f9092ef9497a:-743c430a:138fa7450c3:-8000-00000000000000a8,1:23453] [APP:
    oracle-bam#11.1.1] EventEngine: Action exception: EEInstEv2 EEInstAct1 Rule
    Id: 2 exception: java.io.IOException: truncated Data Integrator Frame
    received
    [2012-08-06T11:24:21.250+05:30] [bam_server1] [WARNING] []
    [oracle.bam.eventengine] [tid: bam-pool-Action-thread-1] [userId:
    OracleSystemUser] [ecid:
    3576f9092ef9497a:-743c430a:138fa7450c3:-8000-00000000000000a8,1:23453] [APP:
    oracle-bam#11.1.1] EventEngine: Exception stack trace: [[
    at
    oracle.bam.eventengine.engine.event.action.RunScenario.invokeScenario(RunScena
    rio.java:145)
    at
    oracle.bam.eventengine.engine.event.action.ActionProcessor.runScenario(ActionP
    rocessor.java:891)
    at
    oracle.bam.eventengine.engine.event.action.ActionProcessor.actionHandler(Actio
    nProcessor.java:337)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.j
    ava:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at oracle.bam.system.Delegate$Sink.invoke(Delegate.java:80)
    at oracle.bam.system.Delegate.dynamicInvoke(Delegate.java:186)
    at
    oracle.bam.common.threading.threadpool.ThreadPoolController$PoolQueueItem.proc
    essWorkRequest(ThreadPoolController.java:155)
    at
    oracle.bam.common.threading.threadpool.ThreadPoolController$PoolQueueItem.run(
    ThreadPoolController.java:128)
    at
    java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java
    :886)
    at
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908
    at java.lang.Thread.run(Thread.java:619)
    Any help on this is highly appreciated...
    Thanks
    Rajdip Mukherjee

    Hi,
    Forgot to include the ODI classes RunScenario.invokeScenario() is invoking odi scenario using odi sdk api. Please see the below stack trace :-
    java.io.IOException: truncated Data Integrator Frame received
    at
    oracle.odi.sdk.invocation.internal.AgentNetworkCmd.readCmd(AgentNetworkCmd.java:303)
    at
    oracle.odi.sdk.invocation.OdiInvocation.invokeCommand(OdiInvocation.java:176)
    at
    oracle.bam.eventengine.engine.event.action.RunScenario.invokeScenario(RunScenario.java:140)
    at
    oracle.bam.eventengine.engine.event.action.ActionProcessor.runScenario(ActionProcessor.java:891)
    at
    oracle.bam.eventengine.engine.event.action.ActionProcessor.actionHandler(ActionProcessor.java:337)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    Thanks
    Rajdip Mukherjee

Maybe you are looking for