前段时间需要新增克隆几套ERP环境,请了专业顾问的DBA进行了EBS系统克隆操作,但是在新克隆的ERP环境中,它的MRP请求一直无法正常运行,查阅官网MOS后,也是逐个定位和解决了,在这里简单做个记录。
环境信息

  源环境为生产环境,AP * 2 + DB * 2 部署;
  目标环境为单节点AP,单节点DB

问题一:

状态为“Pending”待定

  • 现象

    • 在克隆部署一套新的EBS系统之后,运行MRP任务请求,一直处于“Pending”待定的状态,且在等待一段时间之后,一直没有反应与后续的动作。
    • 取消后重新运行依旧是“Pending”的状态,无法运行后续请求。
  • 原因

    • 在对应并发请求的定义页面,在其“会话控制”中,设置了具体的主机节点。
  • 处理

    • 将对应请求及其子请求中,“会话控制”配置项中的内容直接清除,或者更改为对应新环境的节点信息

image
Image

注意:请求及其子请求中的目标节点信息需要全部清除或者更改。

  查看哪一些并发请求设置了服务器目标节点信息:

SELECT ps.concurrent_program_id
      ,ps.user_concurrent_program_name
      ,ps.concurrent_program_name
      ,ppp.node_name1
  FROM fnd_concurrent_programs_vl ps, fnd_conc_prog_onsite_info ppp
WHERE ppp.concurrent_program_id = ps.concurrent_program_id
   AND ps.concurrent_program_name LIKE 'MR%'
   AND ppp.node_name1 IS NOT NULL;

涉及到的全部请求为

  • 启动 MPS 供应链计划流程
  • MPS 冲减工作流程
  • 基于内存的快照
  • 快照监控程序
  • 快照监控程序
  • 快照删除工作流程
  • 基于内存的快照工作流程
  • 快照删除工作流程
  • 装入程序工作流程
  • 基于内存的计划员
  • 计算总装

问题二:

MRP请求运行报错

  • 现象

    • 在克隆环境中运行MRP相关请求任务,在解决第一种的异常问题之后,相关请求任务直接运行报错:

Image

  • 报错日志

    • 无法提交程序 MRCMON 的并发请求
    • 检查并发程序是否在应用对象程序库注册
    • 检查您是否指定了并发程序正确的应用简称

Image

  • 参考文档
    官方文档:Doc ID 1507748.1 进行数据处理

  • 处理方法及步骤

  1. 查看系统节点信息
SELECT p.node_name1, p.*
  FROM applsys.fnd_conc_prog_onsite_info p
WHERE node_name1 LIKE 'CNITERPAPP0%';

SELECT p.node_name1, p.*
  FROM applsys.fnd_conc_prog_onsite_info p
WHERE node_name1 is not null;
  1. 备份&更新正确数据
CREATE TABLE fnd_conc_prog_onsite_info_1129 AS
  SELECT * FROM fnd_conc_prog_onsite_info;

UPDATE fnd_conc_prog_onsite_info
   SET node_name1 = 'new_node_name'
WHERE node_name1 LIKE 'old_node_name%';
commit;
  1. 查验&确认问题
/*
所有的派生并发请求均需要以下操作(按执行顺序):
启动 MPS 供应链计划流程 —— MRPLPLAN   不需要
MPS 冲减工作流程        —— MRCSCW     需要
基于内存的快照          —— MRCNSP     需要
快照监控程序            —— MRCMON     需要
快照删除工作流程        —— MRCSDW     需要
基于内存的快照工作流程  —— MRCNSP     需要
快照删除工作流程        —— MRCSDW     (二次调用)
装入程序工作流程        —— MRCSLD     需要
基于内存的计划员        —— MRCNEW     需要
计算总装                —— MRCEAP     需要
*/
SELECT *
  FROM fnd_concurrent_programs   p,
       fnd_application           a,
       fnd_conc_prog_onsite_info poi
WHERE a.application_short_name = 'MRP'
   AND p.application_id = a.application_id
   AND p.application_id = poi.program_application_id
   AND p.concurrent_program_id = poi.concurrent_program_id
   AND p.concurrent_program_name IN ('MRCSCW',
                                     'MRCNSP',
                                     'MRCMON',
                                     'MRCSDW',
                                     'MRCNSP',
                                     'MRCSDW',
                                     'MRCSLD',
                                     'MRCNEW',
                                     'MRCEAP');
  1. 处理步骤
4.1 Enable triggers
alter trigger FND_PROG_ONSITE_INSERT enable;

alter trigger FND_PROG_ONSITE_DELETE enable;
4.2 Insert the missing records into fnd_conc_prog_onsite_info

以下三段SQL任选其一即可
-官方SQL-

1.
create table missing_fnd_conc_prog_info as
SELECT application_id,
       concurrent_program_id,
       last_update_date,
       last_updated_by,
       creation_date,
       created_by,
       last_update_login,
       SYSDATE reset_date,
       'ERROR' on_failure_log_level
  FROM fnd_concurrent_programs
WHERE concurrent_program_id IN
       (SELECT concurrent_program_id
          FROM fnd_concurrent_programs a
         WHERE NOT EXISTS
         (SELECT 'no record'
                  FROM fnd_conc_prog_onsite_info b
                 WHERE a.concurrent_program_id =  b.concurrent_program_id));
2.
INSERT INTO fnd_conc_prog_onsite_info
  (program_application_id,
   concurrent_program_id,
   last_update_date,
   last_updated_by,
   creation_date,
   created_by,
   last_update_login,
   reset_date,
   on_failure_log_level)
  SELECT * FROM missing_fnd_conc_prog_info;

-合并SQL-

INSERT INTO fnd_conc_prog_onsite_info
  (program_application_id,
   concurrent_program_id,
   last_update_date,
   last_updated_by,
   creation_date,
   created_by,
   last_update_login,
   reset_date,
   on_failure_log_level)
  SELECT application_id,
         concurrent_program_id,
         last_update_date,
         last_updated_by,
         creation_date,
         created_by,
         last_update_login,
         SYSDATE reset_date,
         'ERROR' on_failure_log_level
    FROM fnd_concurrent_programs
   WHERE concurrent_program_id IN
         (SELECT concurrent_program_id
            FROM fnd_concurrent_programs a
           WHERE NOT EXISTS
           (SELECT 'no record'
                    FROM fnd_conc_prog_onsite_info b
                   WHERE a.concurrent_program_id =  b.concurrent_program_id));

-指定并发请求-

INSERT INTO fnd_conc_prog_onsite_info
  (program_application_id,
   concurrent_program_id,
   last_update_date,
   last_updated_by,
   creation_date,
   created_by,
   last_update_login,
   reset_date,
   on_failure_log_level)
  SELECT application_id,
         concurrent_program_id,
         last_update_date,
         last_updated_by,
         creation_date,
         created_by,
         last_update_login,
         SYSDATE reset_date,
         'ERROR' on_failure_log_level
    FROM fnd_concurrent_programs s
   WHERE s.concurrent_program_name IN
         ('MRCSCW',
          'MRCNSP',
          'MRCMON',
          'MRCSDW',
          'MRCNSP',
          'MRCSDW',
          'MRCSLD',
          'MRCNEW',
          'MRCEAP');

Tips:记得调整后做COMMIT;

  1. 重新提交运行请求~

完毕!

+++==========================================================================+++
以上内容仅为个人学习记录使用。
如有转载,请附有原文出处链接。
参考链接:
https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=452565609103497&id=1507748.1&_afrWindowMode=0&_adf.ctrl-state=fxvilbz1a_4

posted on 2025-10-11 18:15  Hy旧人伤  阅读(3)  评论(0)    收藏  举报