Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Oracle 12.2c中,清除队列don';更新计数器un gv$aq_Oracle_Queue - Fatal编程技术网

在Oracle 12.2c中,清除队列don';更新计数器un gv$aq

在Oracle 12.2c中,清除队列don';更新计数器un gv$aq,oracle,queue,Oracle,Queue,我在Oracle 12.2c中遇到了一个问题,该代码在Oracle 10g中运行良好: 我创建一个消息队列: begin dbms_aqadm.create_queue_table( queue_table => 'QT_test', queue_payload_type => 'RAW', storage_clause => 'PCTFREE 0 PCTUSED 99', sort_list => 'ENQ_TIME', comment => 'Test

我在Oracle 12.2c中遇到了一个问题,该代码在Oracle 10g中运行良好:

我创建一个消息队列:

begin
dbms_aqadm.create_queue_table(
 queue_table => 'QT_test',
 queue_payload_type => 'RAW',
 storage_clause => 'PCTFREE 0 PCTUSED 99',
 sort_list => 'ENQ_TIME',
 comment => 'Test Queue Table',
 secure => FALSE);
 
 dbms_aqadm.create_queue(
 queue_name => 'Q_Test',
 queue_table => 'QT_test',
 queue_type => dbms_aqadm.NORMAL_QUEUE,
 max_retries => 3,
 retry_delay => 1);
end;
我将消息排入队列并毫无问题地查看它:

declare
 eq_msgid RAW(16);
 usermsg RAW(160);
 eq_opt   dbms_aq.enqueue_options_t;
 msg_prop dbms_aq.message_properties_t;
BEGIN
 msg_prop.priority := 1;
 eq_opt.visibility := dbms_aq.immediate;
 msg_prop.delay := dbms_aq.no_delay;
 msg_prop.expiration := 1;   
 dbms_aqadm.start_queue('Q_Test');
 dbms_aq.enqueue('Q_Test', eq_opt, msg_prop, usermsg, eq_msgid);
 COMMIT;
end;
/
SELECT * FROM GV$AQ GV, all_queues AQ WHERE OWNER = USER AND GV.QID = AQ.QID AND 
AQ.QUEUE_TABLE='QT_TEST';
SELECT * FROM AQ$QT_TEST;
我执行清除,但计数器未更新:

declare
 po dbms_aqadm.aq$_purge_options_t;
begin
 po.block := false;
 dbms_aqadm.purge_queue_table(queue_table => 'QT_TEST',purge_condition => NULL,purge_options => po);
end;
/
SELECT * FROM GV$AQ GV, all_queues AQ WHERE OWNER = USER AND GV.QID = AQ.QID AND 
AQ.QUEUE_TABLE='QT_TEST';
SELECT * FROM AQ$QT_TEST;
我无法在QT中显示消息,我无法将任何内容出列,但GV$AQ中的计数器显示旧消息的计数