Oracle高级队列AQ异常超期EXPIRED状态队列的出库

阅读: 评论:0

Oracle高级队列AQ异常超期EXPIRED状态队列的出库

Oracle高级队列AQ异常超期EXPIRED状态队列的出库

由于队列自动订阅通知(notification)出队时出现异常后超期,队列的状态变成EXPIRED,不能按正常方式出队,数据一直保存的队列表中。

处理的方式1一种是粗暴方式,直接删除队列表数据,具体命令查官方文档。

处理方式2,从异常队列中出队,在建立队列时,会自动建立一个异常队列,我们出队时指定异常队列的名字就可以出队。代码如下:重点是指定queue_name参数为异常队列的名字,格式如AQ$XXXXX_E。“XXXXX”为你正常时的队列名,如果不知道可以从Oracle的查询。

--dequeue
declare
v_Message payloadnote;
v_MsgId RAW(16);
v_options DBMS_AQ.DEQUEUE_OPTIONS_T;
v_properties DBMS_AQ.MESSAGE_PROPERTIES_T;
v_Recipients DBMS_AQ.AQ$_RECIPIENT_LIST_T;
begin
 
   v_options.visibility :=DBMS_AQ.IMMEDIATE;
dbms_aq.dequeue(queue_name => 'AQ$XXXXXXXXX_E',dequeue_options => v_options,message_properties => v_properties,payload => v_Message,msgid => v_MsgId);
   dbms_output.put_line('decode success,msgid is '||v_MsgId);
end;

 

 

MESSAGE_PROPERTIES_T结构中的Expired参数对正常队列出库没啥用处。

 

Oracle官方文档

.920/a96587/toc.htm

 

本文发布于:2024-01-31 22:52:38,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170671275831966.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:队列   异常   状态   高级   Oracle
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23