ora-24033:FND_USER_RESP_GROUPS_API.UPDATE_ASSIGNMENT 中未检测到邮件的收件人

ora-24033 : no recipent for message has been detected in FND_USER_RESP_GROUPS_API.UPDATE_ASSIGNMENT

我使用的是Oracle E-business Suite R12.1,11G数据库版本。

我在尝试创建或修改用户或职责时遇到的错误:
ora-24033: 没有检测到消息的配方 FND_USER_RESP_GROUPS_API.UPDATE_ASSIGNMENT

我的解决方法: 我已经按照这个 oracle metalink 文档(文档 ID 358151.1)来修复错误。每当我尝试执行第一步(删除现有订阅者)时,都会出现此错误:

ERROR at line 1:
ORA-04020: deadlock detected while trying to lock object 30x0C2ABE5980x0C798B3F80x0D9CA49D8
ORA-06512: at "SYS.DBMS_AQADM_SYS", line 7541
ORA-06512: at "SYS.DBMS_AQADM", line 441
ORA-06512: at line 5

所以,我必须修复 ora-04020,这样我以后才能重新创建现有的订阅者(通过删除现有的订阅者,然后添加一个新订阅者)。

  1. 我试图退回应用程序和数据库。
  2. 我编译了应用架构。
  3. 我试图找出锁在哪里以及哪个模式正在阻止另一个,以便我可以终止该会话:

    sql> SELECT c.owner, c.object_name, c.object_type, b.SID, b.serial#, b.status, b.osuser, b.machine 从 v$locked_object 一个, v$会话b, dba_objectsc 在哪里 b.SID = a.session_id 和 a.object_id = c.object_id;</p> <p>所有者 OBJECT_NAME OBJECT_TYPE SID 序列号状态 ----- -------------- ---------- ------ ------ ---------- -- 应用程序 FND_CONCURRENT_QUEUES TABLE 152 3 不活动 应用程序 FND_CONCURRENT_REQUESTS TABLE 466 7 不活动</p> <p>

    然后试图找出哪个会话正在阻止另一个会话以将其杀死:

    sql>SELECT l1.SID ||' IS BLOCKING '|| l2.SID FROM v$lock l1, v$lock l2 WHERE l1.BLOCK =1 AND l2.request > 0 AND l1.id1=l2.id1 AND l1.id2=l2.id2;

但是我没有返回行。

网上的一些建议说当数据库中存在无效对象时会发生死锁。
所以,我接下来做的是: 我通过 运行 $ORACLE_HOME/rdbms/admin/utlrp.sql

重新编译了无效对象

该脚本返回了一个输出。以下是输出的一部分:

ERROR at line 1:
ORA-04063: package body "SYS.UTL_RECOMP" has errors
ORA-06508: PL/SQL: could not find program unit being called: "SYS.UTL_RECOMP"
ORA-06512: at line 4

这也是输出的一部分:


OBJECTS WITH ERRORS
-------------------
1

注意:我在应用补丁后遇到了这个问题。自检测到死锁以来已经超过 5 天了,尽管大多数关于死锁的建议都说 oracle 将自行管理发布。不需要显式释放。

知道如何解决这个问题吗?非常感谢您的建议。

我会把解决方法写在这里,以防以后遇到这种错误的人。

我通过重新编译无效对象解决了错误。