如何清除Oracle AQ中的队列?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (108)

我一直在测试Oracle AQ。我已经创建了2000行测试插入到我创建的队列中。

现在,我想清除这些。正如我在教导我自己,我设定的到期时间为一个月。我等不了多久。我不认为我应该从队列表中删除它们。

什么是最好的方法来做到这一点?

提问于
用户回答回答于

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;
用户回答回答于

这是不正确的:

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

所以,你必须创建一个小PL / SQL例程来关闭这些项目。

扫码关注云+社区