如何在 Oracle AQ 中停止和启动队列

How to stop & start a queue in Oracle AQ

我必须使用哪些命令来停止或启动 Oracle AQ 队列?

我需要停止队列以执行维护和分析,然后在分析完成后启动队列。

您使用包 DBMS_AQADM

STOP一个队列,命令如下所示:

BEGIN
  DBMS_AQADM.STOP_QUEUE(queue_name => 'QUEUE_NAME');
END;

此过程的可选参数 "wait" 具有以下行为:

Specifies whether to wait for the completion of outstanding transactions. TRUE means wait if there are any outstanding transactions. In this state no new transactions are allowed to enqueue to or dequeue from this queue. FALSE means return immediately either with a success or an error.

然后开始一个队列,它看起来像这样:

BEGIN
  DBMS_AQADM.START_QUEUE(queue_name => 'QUEUE_NAME');
END;

您可能需要添加 "SYS" 作为包的前缀,具体取决于您的权限。

我经常发现我只想停止出队。然后我必须像这样

使用 START_QUEUE() 上的额外选项
execute DBMS_AQADM.STOP_QUEUE (queue_name => 'schema.queue', enqueue => FALSE, dequeue => TRUE);