3

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

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

4

2 回答 2

6

您使用包DBMS_AQADM

停止队列,命令如下所示:

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

此过程的可选参数“等待”具有以下行为:

指定是否等待未完成事务的完成。TRUE 表示等待是否有任何未完成的事务。在此状态下,不允许新事务入队或出队。FALSE 意味着立即返回成功或错误。

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

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

根据您的权限,您可能必须添加“SYS”作为包的前缀。

于 2016-11-11T11:20:23.397 回答
3

我经常发现我只想停止出队。然后我必须像这样使用 START_QUEUE() 上的额外选项

execute DBMS_AQADM.STOP_QUEUE (queue_name => 'schema.queue', enqueue => FALSE, dequeue => TRUE);
于 2018-09-24T06:45:02.860 回答