Подтвердить что ты не робот

Как очистить очередь в Oracle AQ

Я тестировал Oracle AQ в первый раз. Мне удалось создать 2000 строк тестовых вставок в созданной мной очереди.

Теперь я хотел бы очистить их. Когда я учился, я назначил время истечения месяца. Я не могу так долго ждать. И я не думаю, что я должен просто удалить их из таблицы очередей.

Какой лучший способ сделать это?

4b9b3361

Ответ 1

Вы можете использовать процедуру DBMS_aqadm.purge_queue_table.


РЕШЕНИЕ

SQL выглядит примерно так:

-- purge queue
DECLARE
 po_t dbms_aqadm.aq$_purge_options_t;
BEGIN
  dbms_aqadm.purge_queue_table('MY_QUEUE_TABLE', NULL, po_t);
END;

Ответ 2

Просто выполните удаление в таблице очередей.

Ничего, просто сделал чек и что не правильно:

Oracle Streams AQ не поддерживает операции с языком данных (DML) в таблицах очередей или связанных с ними индексных таблицах (IOT), если таковые имеются. Единственное поддерживаемое средство изменения таблиц очереди - через поставляемые API. Таблицы очередей и IOT могут стать непоследовательными и, следовательно, эффективно разрушены, если на них выполняются операции DML.


Итак, вам нужно создать небольшую подпрограмму PL/SQL, чтобы вытащить элементы.

Используйте пакет dbms_aq. Посмотрите пример из документации: Отменить сообщения. Прокрутите вниз немного, и там будет полный пример.