Cómo borrar una cola en Oracle AQ
Pregunta
He estado probando Oracle AQ por primera vez. He conseguido crear 2000 filas de insertos de prueba en la cola que he creado.
Ahora, me gustaría aclarar aquellos cabo. Como yo estaba enseñando a mí mismo, me puse el tiempo de caducidad a ser un mes. No puedo esperar tanto tiempo. Y no creo que yo debería eliminarlos de la tabla de cola.
¿Cuál es la mejor manera de hacer esto?
Solución
Puede utilizar el procedimiento DBMS_aqadm.purge_queue_table
.
SOLUCIÓN
La apariencia SQL 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;
Otros consejos
Sólo hacer una supresión en la tabla de colas.
No importa, acaba de hacer un cheque y eso no es derecha:
Oracle Streams AQ no soporta operaciones de lenguaje de manipulación de datos (DML) en las mesas de cola o tablas organizadas por índices asociados (IOT), si los hubiere. El único medio compatibles de modificar las tablas de cola es a través de las API proporcionadas. tablas de colas y TIO pueden llegar a ser inconsistente y, por tanto, de manera efectiva en ruinas, si las operaciones DML se realizan en ellos.
Por lo tanto, usted tiene que crear un poco de PL / SQL rutina para tirar de los elementos fuera.
Utilice el paquete dbms_aq
. Comprobar el ejemplo de la documentación: desencola Mensajes .
Desplazamiento hacia abajo un poco y hay un ejemplo completo.