dbms_aqadm - Cómo borrar una cola en Oracle AQ
clear queue oracle (2)
He estado probando Oracle AQ por primera vez. He logrado crear 2000 filas de inserciones de prueba en la cola que creé.
Ahora, me gustaría aclarar eso. Como me estaba enseñando a mí mismo, establezco el tiempo de caducidad en un mes. No puedo esperar tanto. Y no creo que deba eliminarlos de la tabla de colas.
¿Cuál es la mejor manera de hacer esto?
Simplemente haga una eliminación en la tabla de cola.
No importa, solo hice un cheque y eso no está bien :
Oracle Streams AQ no admite operaciones de lenguaje de manipulación de datos (DML) en tablas de cola o tablas asociadas organizadas por índice (IOT), si las hay. El único medio compatible para modificar las tablas de cola es a través de las API proporcionadas. Las tablas de cola y los IOT pueden volverse inconsistentes y, por lo tanto, arruinarse efectivamente, si se realizan operaciones DML en ellos.
Por lo tanto, tendrás que crear una pequeña rutina PL / SQL para sacar los elementos.
Utilice el paquete dbms_aq
. Verifique el ejemplo en la documentación: Desvío de mensajes . Desplácese hacia abajo un poco y hay un ejemplo completo.
Puede utilizar el procedimiento DBMS_aqadm.purge_queue_table
.
SOLUCIÓN
El SQL se ve algo como esto:
-- purge queue
DECLARE
po_t dbms_aqadm.aq$_purge_options_t;
BEGIN
dbms_aqadm.purge_queue_table(''MY_QUEUE_TABLE'', NULL, po_t);
END;