Как очистить очередь в Oracle AQ
Вопрос
Я впервые тестировал Oracle AQ. Мне удалось создать 2000 строк тестовых вложений в очередь, которую я создал.
Теперь я хотел бы очистить их. Как я учил себя, я устанавливаю время срока, чтобы быть месяцем. Я не могу ждать так долго. И я не думаю, что я должен просто удалить их из таблицы очередей.
Какой лучший способ сделать это?
Решение
Вы можете использовать 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;
Другие советы
Просто сделайте удаление в таблице очередей.
Не берите в голову, просто проверил чек и это не правильно:
Oracle Tookes AQ не поддерживает операции языка манипуляций данных (DML) на таблицах очереди или связанными с соответствующими индексными столами (IOTS), если таковые имеются. Единственными поддерживаемыми средствами модификации таблиц очереди представляют собой поставляемые API. Столы в очереди и IOTS могут стать непоследовательными и, следовательно, эффективно разрушены, если выполняются операции DML на них.
Итак, вам придется создать немного процедуры PL / SQL для выключения элементов.
Использовать dbms_aq
упаковка. Проверьте примеру из документации: Сообщения с учетомОтказ Прокрутите немного вниз, и есть полный пример.