Oracle EBS OM处理销售挑库卡在待定事务处理和保留中

本文介绍了一种解决Oracle EBS系统中物料搬运单处理异常的方法,包括直接修改搬运单行状态来解除销售订单挑库卡住的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:http://blog.youkuaiyun.com/chenxianping/article/details/42400913

写该blog之前,非常感恩网上各位热心朋友出手相助,为本人提供很多方法和建议。

系统版本:

       RDBMS : 9.2.0.6.0

       Oracle应用产品 : 11.5.10.2

问题症状:

1. 销售订单: 1110031700发运事务处理状态:已发放至仓库,搬运单: 2239734。并且销售订单的工作流正常。

2. 处理物料搬运单,输入搬运单: 2239734,查找不到要处理的录,从后台查看搬运单行有二条记录,其中有一条已经销售挑库成功。

select *from mtl_txn_request_headers mthwhere mth.request_number ='2239734';

select *from mtl_txn_request_lines mtlwhere mtl.header_id=1981938;

3. 查看现有量库存数量是够本次销售挑库。查看保留,现有量补该销售订单保留。试图删除保留记录,提示错误如下

4. 查看待定事务处理(非事务处理开放接口)中,并且选择“工具”->“全部提交”无任何效果。待定事务处理的处理标志为1、事务处理状态为已分配,但是无任何错误代码和错误解释。

5.在物料事务处理窗中,根据销售挑库的日期(事务处理日期)范围、物料编码(181810106786)、来源类型(销售订单)、来源(1110031700.11内销\.销售订单.ORDER ENTRY)和事务处理类型(销售挑库)等等条件,查找不到物料事务处理记录,说明没有销售挑库成功,确认挑库卡在待定事务处理中。

处理过程:

1.尝试通过销售订单取消保留,操作如下:

但是处理失败,提示错误

2.尝试提交请求“清除物料搬运单”,还是没有删除该搬单运。

3.有朋友建议后台删除对应的待定事务处理和保留(供应与需求),由于最近工作上事情,没有时间测试该方法,加涉相关台后基表比较多。后期有空测试一下。

最后,联想到以前做过类似的处理Oracle EBS“处理物料搬运单”出错解决方法,直接修改搬运单行的状态。

1.后台修改搬运单行状态

Declare

  v_MoveOrderLineIDNumber;--搬运单行ID

  v_OrderLineId    Number;--销订单行ID

Begin

  Select WDD.SOURCE_LINE_ID, WDD.MOVE_ORDER_LINE_ID

    Into v_OrderLineId, v_MoveOrderLineID

    From WSH_DELIVERY_DETAILS WDD

   Where WDD.DELIVERY_DETAIL_ID =2550584--对应发运事务处理的界面的详细资料”如下图

     And WDD.RELEASED_STATUS ='S';--发运事务处理行的状态为已发放至仓库

  If (v_OrderLineIdIsNullOr v_MoveOrderLineIDIsNull)Then

    Return;

  EndIf;

  --修改搬运单行状态

  Update MTL_TXN_REQUEST_LINES MTL

     set MTL.LINE_STATUS =7--Line status old 5关闭

   WHERE MTL.LINE_ID = v_MoveOrderLineID

     And MTL.Txn_Source_Line_Id = v_OrderLineId;

  Commit;

Exception

  WhenOthersThen

    RollBack;

End;

2.按照正常的“处理搬动单”的操作方法完成销售挑库。

3.查检如下事项:

            1.查看“保留”无对应销售订单记录

            2.查看“待定事务处理”无对应销售订单记录

            3.查看“物料事务处理”已经产生销售挑库的事务处理记录

            4.查看“发运事务处理”对应行的状态“分批发运/确认挑库”和“销售订单”行的状态“已挑库”

总结:

根据网上朋友简单讨论得出“处理搬动单”过程相关影响如下示意图,

 

如处理方法欠佳或其它问题,敬请各位网友斧正。


<think>我们正在讨论如何设置自动监控机制来检测OracleEBS中的待处理事务。根据用户的问题之前的回答,我们需要构建一个自动化的监控方案。结合引用内容,我们可以考虑以下方面: 1. **引用[1]中提到**:系统管理员可以在“请求”窗口监控并发程序的状态,并作出相应处理。这提示我们可以通过并发请求的状态原因来监控待处理事务。 2. **引用[2]中提到**:定期维护,包括收集统计信息清理无效会话,以及使用监控工具(如AWR报告)进行分析。这提示我们在自动监控中需要包括定期作业性能监控。3.**引用[3]中提到**:使用OracleApplications实施向导(AIW)来协调设置活动。虽然不直接相关,但说明Oracle有提供一些向导工具,我们可以利用标准功能或自定义。因此,自动监控机制可以包括以下组成部分: ###方案设计1. **创建并发程序定期检查失败请求**:-编写一个PL/SQL过程,查询`fnd_concurrent_requests`表,找出因待处理事务而失败的请求。-将该PL/SQL程序注册为并发程序,并定期运行(例如每小时一次)。2.**设置报警机制**:-当监控程序发现待处理事务导致的失败作业时,发送通知(邮件、短信等)。3.**定期清理维护**:-设置定期作业清理接口表(如`ap_interface_control`)无效会话,预防事务挂起。4.**利用OracleEBS标准功能**:-使用“并发程序监视器”标准功能,设置预警条件。###具体实施步骤####步骤1:创建监控PL/SQL程序```sqlCREATE ORREPLACE PROCEDURE monitor_pending_txns ASv_countNUMBER;v_message VARCHAR2(4000); BEGINSELECT COUNT(*)INTOv_countFROM fnd_concurrent_requestsWHEREphase_code= 'C'ANDstatus_code= 'E'ANDUPPER(reason)LIKE '%PENDING%TRANS%'AND request_date >SYSDATE -1;--检查最近24小时IF v_count >0THENv_message :='发现'|| v_count ||'个作业因待处理事务失败。请检查并发请求!';--调用发送邮件的过程(需要预先配置邮件发送功能)send_email_alert(v_message);ENDIF;EXCEPTIONWHENOTHERS THEN--异常处理NULL;END;/ ```####步骤2:注册并发程序1.使用系统管理员职责,导航到“应用开发员” >“并发” >“程序”。 2.定义一个新的可执行文件:-执行文件:`monitor_pending_txns`-应用短名:`SQLAP`-执行方法:`PL/SQL存储过程` 3.定义并发程序,关联到上一步的可执行文件。 ####步骤3:设置并发请求集1.创建请求集,将上述并发程序添加到请求集中。 2.安排请求集定期运行(例如每小时一次)。####步骤4:配置邮件报警-在PL/SQL过程中调用`UTL_MAIL`或自定义邮件过程(需配置ACL): ```sqlCREATE PROCEDURE send_email_alert(p_message VARCHAR2)ASBEGINUTL_MAIL.SEND(sender=>'oracle@company.com',recipients=> 'dba@company.com',subject=> 'EBS处理事务警报',message =>p_message); END; ```####步骤5:预防性维护(引用[2])-创建定期作业清理接口表:```sqlBEGINAP_INTERFACE_CONTROL_PKG.delete_interface_rows();END;```-定期收集统计信息:使用`DBMS_STATS.GATHER_SCHEMA_STATS`[^2]。 ####步骤6:利用标准预警功能-在“系统管理员”职责下,导航到“预警管理器”>“定义预警”。-创建基于“并发请求”的预警,条件为:状态=失败,原因包含“PENDING”。###监控机制示意图```mermaidgraphTDA[定时触发监控程序] -->B[查询失败请求]B--> C{存在待处理事务失败?}C --是--> D[发送报警]C--否 -->E[结束]```###注意事项1.**权限要求**:执行数据操作需要DBA权限,系统操作需root权限[^2]。2.**生产环境谨慎操作**:强制释放缓存可能导致性能波动,需评估业务影响[^2]。 3. **监控工具**:结合AWR报告分析系统性能,确认是否需要调整[^2]。 ###扩展建议-将待处理事务的监控集成到现有的系统监控平台(如Zabbix)。-定期生成待处理事务报告,帮助分析根本原因。 §§相关问题§§1.如何配置Oracle EBS的邮件通知功能?2.有哪些方法可以清理OracleEBS中的接口表? 3.如何优化并发管理器以减少待处理事务?</think>### 自动监控Oracle EBS处理事务的完整方案 #### 1. **核心监控机制设置** **a. 创建专用并发程序监控脚本** ```sql CREATE OR REPLACE PROCEDURE monitor_pending_txns AS v_count NUMBER; v_message VARCHAR2(4000); BEGIN -- 检查过去1小时内的待处理事务失败 SELECT COUNT(*) INTO v_count FROM fnd_concurrent_requests WHERE phase_code = 'C' AND status_code = 'E' AND UPPER(reason) LIKE '%PENDING%TRANS%' AND request_date > SYSDATE - 1/24; -- 1小时时间窗口 IF v_count > 0 THEN v_message := '发现 ' || v_count || ' 个待处理事务失败作业! 时间: ' || TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI'); -- 调用邮件报警程序 apps.xxen_util.send_mail( p_sender => 'ebs_monitor@company.com', p_recipient => 'dba_team@company.com', p_subject => 'EBS处理事务警报', p_message => v_message ); END IF; END; / ``` **b. 注册为并发程序** 1. 系统管理员职责 > 并发 > 程序 2. 定义可执行文件: - 执行文件:`monitor_pending_txns` - 应用:`Application Object Library` - 执行方法:`PL/SQL存储过程` 3. 定义并发程序并关联可执行文件 **c. 设置定期计划** - 使用标准`Concurrent: Request Scheduler`[^1] - 安排每30分钟运行一次 - 关键参数:`Interval Minutes = 30` #### 2. **增强型监控方案** **a. 事务级深度监控** ```sql -- 创建监控表存储历史记录 CREATE TABLE pending_txns_log ( request_id NUMBER, program_name VARCHAR2(240), failure_time DATE, reason VARCHAR2(2000), interface_table VARCHAR2(30) ); -- 增强监控过程 INSERT INTO pending_txns_log SELECT fcr.request_id, fcp.user_concurrent_program_name, fcr.request_date, fcr.reason, (SELECT table_name FROM fnd_lookups WHERE lookup_type = 'PENDING_TXN_INTERFACES' AND INSTR(UPPER(fcr.reason), lookup_code) > 0) FROM fnd_concurrent_requests fcr JOIN fnd_concurrent_programs_tl fcp ON fcr.concurrent_program_id = fcp.concurrent_program_id WHERE ... -- 同核心监控条件 ``` **b. 接口表积压监控** ```sql -- AP接口表示例 SELECT COUNT(*) pending_count FROM ap_invoice_interface_all WHERE process_status = 'PENDING' AND creation_date < SYSDATE - 1/24; -- 超过1小时处理 ``` #### 3. **报警与通知配置** **a. 邮件报警配置** 1. 配置`Workflow Mailer`[^3] 2. 设置SMTP服务器参数: ```sql UPDATE wf_notification_attributes SET TEXT_VALUE = 'smtp.yourcompany.com' WHERE NAME = 'SMTP_HOST'; ``` 3. 测试邮件发送: ```sql apps.fnd_web_pkg.send_mail( p_to => 'test@company.com', p_subj => '测试警报', p_body => 'EBS监控系统测试' ); ``` **b. 移动端报警** - 集成Oracle Mobile Approvals[^1] - 配置PUSH通知规则: ``` 条件: 待处理事务 > 阈值 动作: 发送手机通知给DBA团队 ``` #### 4. **维护与优化** **a. 预防性维护计划** ```sql BEGIN -- 每日清理接口表 AP_INTERFACE_CONTROL_PKG.delete_interface_rows(); -- 每周收集优化统计信息 DBMS_STATS.GATHER_SCHEMA_STATS( ownname => 'APPS', options => 'GATHER AUTO' ); END; / ``` **b. 性能监控集成** - 将待处理事务指标加入AWR报告[^2] - 使用OS Watcher监控相关表空间增长 - 配置ADDM分析建议自动检查事务积压 #### 5. **实施最佳实践** 1. **使用AIW实施向导** 通过Applications Implementation Wizard[^3]部署监控方案: - 向导路径:`System Administrator > Setup > AIW` - 选择"监控配置"流程流 - 自动生成配置文档 2. **权限控制** ```sql GRANT EXECUTE ON monitor_pending_txns TO APPS; REVOKE DELETE ON pending_txns_log FROM PUBLIC; ``` 3. **监控看板配置** ```sql -- 创建BI Publisher实时报表 SELECT TO_CHAR(failure_time, 'YYYY-MM-DD') day, program_name, COUNT(*) failures FROM pending_txns_log GROUP BY TO_CHAR(failure_time, 'YYYY-MM-DD'), program_name ORDER BY 1 DESC, 3 DESC; ``` ### 监控机制示意图 ```mermaid graph TD A[定时监控程序] --> B{检测失败请求} B -->|有失败| C[分析原因] C --> D{接口表积压?} D -->|是| E[清理接口表] D -->|否| F[检查工作流] F --> G[发送警报] G --> H[记录日志] B -->|无失败| I[下一周期] ``` ### 关键注意事项 1. **生产环境验证** - 先在测试实例验证监控脚本 - 使用`DBMS_LOCK.SLEEP`模拟延迟场景 - 逐步调整监控频率(从1小时→30分钟) 2. **性能影响控制** - 添加`/*+ INDEX(fcr FND_CONCURRENT_REQUESTS_N1) */`提示[^2] - 限制每次查询时间范围(`SYSDATE - 1/24`) - 定期归档历史日志 3. **灾备方案** - 创建监控备用程序: ```sql BEGIN monitor_pending_txns; EXCEPTION WHEN OTHERS THEN fallback_monitor; -- 简化版监控 END; ``` > **实施提示**:使用Oracle Applications实施向导(AIW)可标准化部署流程[^3]。首次配置后,通过`System Administrator > Monitoring > Request Monitor`实时查看效果[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值