如何清除Oracle AQ中的队列

时间:2010-11-23 22:57:27

标签: oracle queue jms oracle-aq

我第一次测试Oracle AQ。我已经设法在我创建的队列中创建了2000行测试插入。

现在,我想清除这些。在我自学的时候,我将到期时间定为一个月。我不能等那么久。我不认为我应该从队列表中删除它们。

最好的方法是什么?

2 个答案:

答案 0 :(得分:22)

您可以使用DBMS_aqadm.purge_queue_table程序。


解决方案

SQL看起来像这样:

-- purge queue
DECLARE
 po_t dbms_aqadm.aq$_purge_options_t;
BEGIN
  dbms_aqadm.purge_queue_table('MY_QUEUE_TABLE', NULL, po_t);
END;

答案 1 :(得分:2)

只需对队列表执行删除操作。

没关系,只是做了检查并that's not right

  

Oracle Streams AQ不支持对队列表或关联的索引组织表(IOT)进行数据操作语言(DML)操作(如果有)。唯一受支持的修改队列表的方法是通过提供的API。如果对它们执行DML操作,队列表和IOT可能会变得不一致,因此会被破坏。


因此,您必须创建一个小的PL / SQL例程来关闭项目。

使用dbms_aq包。请查看文档中的示例:Dequeuing Messages。 向下滚动一下,这是一个完整的例子。