我第一次测试Oracle AQ。我已经设法在我创建的队列中创建了2000行测试插入。
现在,我想清除这些。在我自学的时候,我将到期时间定为一个月。我不能等那么久。我不认为我应该从队列表中删除它们。
最好的方法是什么?
答案 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。
向下滚动一下,这是一个完整的例子。