Oracle 高级队列(AQ)

  • 永远不要对 dbms_aqadm.create_queue_table 创建的表使用 DDL 或 DML。仅使用 dbms_aqadm 和 dbms_aq 来处理这些表。Oracle 可能会制作一些你不会注意到的支持表,索引等。针对表手动运行 DDL 或 DML 可能会导致 Oracle 支持需要你删除并重新创建表和队列以解决此问题。

  • 强烈建议你不要使用 dbms_aq.forever 作为等待选项。这导致了过去的问题,因为 Oracle 可能会开始安排过多的工作人员作业来处理不必要的队列(请参阅 Oracle Doc ID 2001165.1)。

  • 建议你不要在 10.1 及更高版本中设置 AQ_TM_PROCESSES 参数。特别是避免将其设置为零,因为这将禁用维护队列所必需的 QMON 后台作业。你可以使用以下命令将此值重置为 Oracle 默认值并重新启动数据库。alter system reset aq_tm_processes scope=spfile sid='*';