25

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

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

最好的方法是什么?

4

2 回答 2

36

您可以使用该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;
于 2010-11-23T23:44:13.610 回答
2

只需对队列表进行删除即可。

没关系,只是做了检查,这是不对的

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


因此,您必须创建一个小的 PL/SQL 例程来完成这些项目。

使用dbms_aq包。检查文档中的示例:Dequeuing Messages。向下滚动一点,有一个完整的例子。

于 2010-11-23T23:05:00.643 回答