`

获取ODI package中任何一个对象执行失败的错误信息

    博客分类:
  • ODI
阅读更多

原文链接:http://odiexperts.com/get-the-error-message-of-any-failed-odi-objects-inside-package/

**********翻译的不好请见谅**************************

Get the Error Message of any Failed ODI objects inside Package

获取ODI package中任何一个对象执行失败的错误信息

 

When we have multiple Interface, Variable  and other ODI objects inside the Child Package  and when such Child Package Fails we get the Error message ‘The scenario did not end properly’  and we need to look into the operator .

当我们的ODI package中含有多个接口,变量和其他ODI 对象时,当这个package执行失败时我们会得到'The secenario did not ent properly',因此我们需要查看其内部的执行结果。

Here is a simple code  and process which can look into the Child Session and get the correct error message and also later we can capture the same in the Error Log .

本文给出一个程序案例,演示如何获取一个package包运行中的子会话的准确错误信息,并且捕获这些信息到错误日志。



 

Create a Global Variable called "GET_ERROR_MSG" and paste the following codes ,  so you can call and use it for multiple package.

创建一个全局变量"GET_ERROR_MSG" 并且指定如下SQL,你可以在任何一个package中使用这个全局变量。

SELECT ' The  '||CASE
WHEN SSS.STEP_TYPE='F' THEN 'INTERFACE'
WHEN SSS.STEP_TYPE='VD' THEN 'VARAIBLE DECLARATION'
WHEN SSS.STEP_TYPE='VS' THEN 'SET/INCREMENT VARAIBLE'
WHEN SSS.STEP_TYPE='VE' THEN 'EVALUATE VARIABLE'
WHEN SSS.STEP_TYPE='V' THEN 'REFRESH VARIABLE'
WHEN SSS.STEP_TYPE='T' THEN 'PROCEDURE'
WHEN SSS.STEP_TYPE='OE' THEN 'OS COMMAND'
WHEN SSS.STEP_TYPE='SE' THEN 'ODI TOOL'
WHEN SSS.STEP_TYPE='RM' THEN 'REVERSE ENGINEERING MODEL'
WHEN SSS.STEP_TYPE='CM' THEN 'CHECK MODEL'
WHEN SSS.STEP_TYPE='CS' THEN 'CHECK SUB MODEL'
WHEN SSS.STEP_TYPE='CD' THEN 'CHECK DATA STORE'
WHEN SSS.STEP_TYPE='JM' THEN 'JOURNALIZE MODEL'
WHEN SSS.STEP_TYPE='JD' THEN 'JOURNALIZE DATA STORE'
END||' '||SSS.STEP_NAME||
' , has failed due to - '||
SNET.TXT
FROM <%=odiRef.getObjectName("SNP_SESSION")%> SS,
<%=odiRef.getObjectName("SNP_SESS_STEP")%> SSS,
<%=odiRef.getObjectName("SNP_EXP_TXT")%> SNET
WHERE SSS.SESS_NO=SS.SESS_NO
AND SNET.I_TXT=SS.I_TXT_SESS_MESS
AND SNET.TXT_ORD=0
AND SS.PARENT_SESS_NO ='<%=odiRef.getPrevStepLog("SESS_NO")%>'

 [ Note :select the Work repository schema in the variable so that getobjectname can calculate accordingly the values, if in case you are using other schema which have select permission on work Repository schema , replace <%=odiRef.getObjectName("")%> with the required schema name. ]

【注意:在选择工作存储库的方案时,如果你正在使用其他方案,可以用< % = odiRef.getObjectName(" ")% >取代所需的模式名,这样getObjectname方法可以计算相应的值。】

In the first step call an OdiOutFile and uncheck Append option so that new File is created for a daily run  with  Header and Date .

在第一步我们调用OdiOutFile组件,不勾选追加选项,这样可以可以每天创建一个新的带有头和日期的文件。



 

Call the Child package and call the Variable   and  join the KO step ( red) to the Variable so that when ever the Child Package fails only then the variable is called else process the next child Package.

调用package并且下一步调用全局变量,使用KO线连接到变量,这样可以让程序只有在第一个package失败时才会调用变量,否则进行下一个package运行。

In the next step , call the OdiOutFile and mention the path to File mentioned in Step 1 and in the Text mention the variable name and keep repeating the steps for multiple child packages.

在下一步,调用OdiOutFile并且指定在第一部初始化文件时指定的目录,在文本正文指定全局变量的名称'#GET_ERROR_MSG',并在没个package后都重复上述操作。



 

This way you can capture all the Failed ODI objects Error Messages into Single Log and send them as an attachment through OdiSendMail.

这样你就可以捕获任何ODI对象执行过程中的异常信息,并且写入一个日志文件;你也可以调用OdiSendMail将日志文件作为附件发送出去。



 

  • 大小: 30.9 KB
  • 大小: 24.8 KB
  • 大小: 21.1 KB
  • 大小: 29.6 KB
分享到:
评论

相关推荐

    java 调用 odi webservice

    最后,我们将使用 `OdiInvoke` 对象的 `getOdiInvokeRequestSOAP11Port0()` 方法获取一个 `RequestPortType` 对象,并使用该对象的 `invokeStartScen()` 方法调用 ODI webservice。 在调用 ODI webservice 之后,...

    ODI中变量的使用

    在Oracle Data Integrator (ODI)中,变量是一个至关重要的概念,它允许我们在数据集成过程中动态地管理信息,从而提高了灵活性和效率。ODI的变量能够存储各种类型的数据,并在不同场景下进行复用,减少重复工作,...

    ODI培训-ODI流程

    5. **包** (04_Package.pdf): 包是ODI中的高级组织单元,它可以包含一个或多个接口,以实现更复杂的执行顺序。包允许用户定义执行条件、错误处理策略和调度,以满足不同业务需求。 6. **场景与调度** (05_Scenario_...

    ODI中过程的使用

    在ODI中,"过程"是类似于数据库存储过程的概念,它允许用户执行一系列复杂的操作,如数据清洗、转换和加载,而无需依赖特定的知识模块(KM)。这个文档主要介绍了如何在ODI中使用过程,特别是如何通过源表标志位删除...

    ODI接口同步Planning主数据(包括增删改)

    为了支持对Planning主数据的增删改操作,ODI提供了一个特殊的字段——“Operation”。该字段的不同值代表了不同的操作类型: - **Update**:添加、更新或移动正在加载的成员(默认为null,等同于Update)。 - **...

    ODI中临时接口创建及使用

    ODI提供了一个机制,可以在需要时自动创建临时表,并在任务执行完毕后自动删除这些临时表。 2. 临时接口的创建:创建临时接口的基本步骤包括定义接口的数据源、进行数据映射和字段关联,以及设置流控制和IKM...

    odi+snpw数据库表结构初探.doc

    Oracle Data Integrator (ODI) 是一款强大的数据集成工具,其中SNPW(Sunopsis Work Repository)是ODI的内部数据库,用于存储设计和操作层面的所有元数据和执行记录。了解SNPW的表结构对于深入理解ODI的工作原理、...

    odi软件操作步骤详细学习文档

    包是ODI中的执行单元,可以包含一个或多个接口、子程序或其他包。通过包,你可以组织和调度多个任务,实现复杂的工作流。包可以有顺序、并行或者条件执行的步骤,是实现业务逻辑的关键。 5. **Scenario Scheduling...

    ODI应用指南(教程)

    Package是ODI中的一个重要概念,用于组织和执行一系列相关的接口和包。ODI工具箱则提供了一系列实用工具,帮助用户更高效地完成数据集成任务。 #### 八、WebService **8.1 安装Public Web Services** 介绍如何...

    信息技术最佳实践-Oracle ODI之入门开发

    每个工作资料库都必须连接到一个主资料库,并且一个数据库模式下只能存储一个工作资料库。 ##### 2. **知识模块(Knowledge Modules)** - **反向工程RKM**:用于从源系统和目标系统的数据结构中获取元数据,自动...

    odi集成个人文档整理

    ODI(Oracle Data Integrator)是Oracle公司提供的一款强大的...以上步骤构成了一次完整的ODI集成流程,涵盖了从数据源的获取到目标数据的加载整个过程。理解并掌握这些步骤对于有效地使用ODI进行数据集成至关重要。

    ODI 操作教程

    包是ODI中的一组接口,它们可以按顺序执行,形成一个逻辑上的工作单元。04_Package部分将深入讨论如何创建和组织包,包括设置执行顺序、条件和依赖关系。包可以用于批量处理,或者作为更大的数据集成项目的一部分。 ...

    ODI部署及使用

    * 数据同步:ODI 可以用于数据同步,例如将数据从一个系统同步到另一个系统中。 * 计划更新:ODI 可以用于计划更新,例如将数据从一个系统更新到另一个系统中。 * 新模块:ODI 可以用于新模块的开发,例如开发新的...

    ODI系统架构介绍

    - **数据整合**:将来自多个系统的数据整合到一个中央仓库或数据湖中。 - **数据质量管理**:通过实施数据清洗和验证规则,确保数据的准确性和一致性。 综上所述,ODI作为一款强大的数据整合工具,不仅提供了高效的...

    ODI本地抽取练习文档及简单数据

    总之,"ODI本地抽取练习文档及简单数据"是一个全面的学习资源,涵盖了从理论到实践的所有关键环节,帮助用户深入理解并熟练应用Oracle Data Integrator进行数据抽取。通过阅读文档并动手实践,你可以提升在Oracle...

    ODI官方开发者手册

    “知识模块”则是ODI中的一个核心概念,它们是一系列预定义的组件,用于简化与特定类型数据源的集成过程。知识模块包含了针对不同数据源的连接逻辑、数据转换规则和最佳实践,使得开发人员无需深入了解每个数据源的...

Global site tag (gtag.js) - Google Analytics