Не удается УДАЛИТЬ сообщение из очереди исключений Oracle Advanced - PullRequest
0 голосов
/ 25 апреля 2018

Например, у меня есть расширенная очередь с 3 сообщениями.Если я пытаюсь удалить их из очереди, он работает нормально, но в моем приложении мне нужно удалить некоторые из них по MSGID.Я пробовал это с помощью команд SQL, но это сильно задерживает, и затем я получаю тайм-аут.

Расширенная очередь:

CREATE_QUEUE_TABLE (
   queue_table            => 'AQUSER.event_message_queue_qt',
   queue_payload_type     => 'AQUSER.EventMessageType',
   sort_list              => 'ENQ_TIME, PRIORITY');

CREATE_QUEUE (
  queue_name => 'AQUSER.event_message_queue', 
  queue_table => 'AQUSER.event_message_queue_qt',
  max_retries=> 10,
  retry_delay=> 600);

CREATE_QUEUE ( 
  queue_name              => 'AQUSER.event_message_queue_ex_q', 
  queue_table             => 'AQUSER.event_message_queue_qt', 
  queue_type              => DBMS_AQADM.EXCEPTION_QUEUE);

Пытается удалить по MSGID:

select * from event_message_queue_qt
where Q_NAME = 'event_message_queue_ex_q'
and MSGID = '6AA2E0C9A14ABA97E053119A14333514'

1 Ответ

0 голосов
/ 25 апреля 2018

Таблица расширенных очередей была заблокирована другими пользователями, но я не получил хорошее сообщение об этом.

Я выполнил следующую команду, чтобы выяснить, что:

select 
   (select username from v$session where sid=a.sid) blocker,
   a.sid,
   ' is blocking ',
   (select username from v$session where sid=b.sid) blockee,
   b.sid
from v$lock a, v$lock b
where a.block = 1
and b.request > 0
and a.id1 = b.id1
and a.id2 = b.id2;
...