2

我决定尝试使用oracle 调度程序安排我的作业,我创建了一组作业,并尝试使用这些作业相互通信queue,我尝试使用一两个作业它运行良好,但是当我使用一堆作业(超过 20 个作业) 并尝试与使用queue. 一个工作成功后,它会同时queue向其他工作发布更多的消息,在一些成功的帖子之后它会抛出这个错误

SQL> @put.sql

PL/SQL procedure successfully completed.


PL/SQL procedure successfully completed.


PL/SQL procedure successfully completed.

SQL> BEGIN SAMPLE_ENQ_MSG('SAMPLE','SUCCESS'); END;

*
ERROR at line 1:
ORA-25455: evaluation error for rule set: DB_ADMIN.QUEUE_KONRAD23_R,
evaluation context: DB_ADMIN.AQ$_QUEUE_KONRAD23_TAB_V
ORA-25447: encountered errors during evaluation of rule
SYS.SCHEDULER$_RN$_146982
ORA-27355: unable to lock row cache entry
ORA-06512: at "SYS.DBMS_ISCHED", line 7503
ORA-06512: at "SYS.DBMS_AQ", line 169
ORA-06512: at "DB_ADMIN.SAMPLE_ENQ_MSG", line 9
ORA-06512: at line 1

我的疑惑:

  • 为什么会出现这个错误

  • 如何克服这个错误

4

1 回答 1

1

这是一个oracle bug,由同时发布(许多)消息引起的,会使队列陷入死锁,无法再次使用。

现在是patched

于 2014-11-25T04:53:03.670 回答