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,这样我以后才能重新创建现有的订阅者(通过删除现有的订阅者,然后添加一个新订阅者)。
- 我试图退回应用程序和数据库。
- 我编译了应用架构。
我试图找出锁在哪里以及哪个模式正在阻止另一个,以便我可以终止该会话:
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 将自行管理发布。不需要显式释放。
知道如何解决这个问题吗?非常感谢您的建议。
我会把解决方法写在这里,以防以后遇到这种错误的人。
我通过重新编译无效对象解决了错误。
我使用的是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,这样我以后才能重新创建现有的订阅者(通过删除现有的订阅者,然后添加一个新订阅者)。
- 我试图退回应用程序和数据库。
- 我编译了应用架构。
我试图找出锁在哪里以及哪个模式正在阻止另一个,以便我可以终止该会话:
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 将自行管理发布。不需要显式释放。
知道如何解决这个问题吗?非常感谢您的建议。
我会把解决方法写在这里,以防以后遇到这种错误的人。
我通过重新编译无效对象解决了错误。