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