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

时间:2016-11-11 11:20:23

标签: plsql oracle-aq

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

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

2 个答案:

答案 0 :(得分:3)

您使用包DBMS_AQADM

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

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

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

  

指定是否等待未完成的完成   交易。 TRUE表示等待有任何未完成的   交易。在这种状态下,不允许新的交易入队   从此队列中取出或出列。 FALSE表示立即返回   成功或错误。

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

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

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

答案 1 :(得分:0)

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

execute DBMS_AQADM.STOP_QUEUE (queue_name => 'schema.queue', enqueue => FALSE, dequeue => TRUE);