Come cancellare una coda in Oracle AQ
Domanda
Ho testato Oracle AQ per la prima volta. Sono riuscito a creare 2000 righe di inserti di prova nella coda che ho creato.
Ora, vorrei cancellare quelli fuori. Come io stesso insegnavo, ho impostato il tempo di scadenza per essere un mese. Non posso aspettare così a lungo. E non credo che dovrei semplicemente cancellarli dalla tabella di coda.
Qual è il modo migliore per fare questo?
Soluzione
È possibile utilizzare la procedura DBMS_aqadm.purge_queue_table
.
SOLUTION
L'aspetto SQL qualcosa di simile:
-- purge queue
DECLARE
po_t dbms_aqadm.aq$_purge_options_t;
BEGIN
dbms_aqadm.purge_queue_table('MY_QUEUE_TABLE', NULL, po_t);
END;
Altri suggerimenti
Basta fare una eliminazione nella tabella di coda.
Non importa, appena fatto un controllo e che non è destra :
Oracle Streams AQ non supporta le operazioni di Data Manipulation Language (DML) sulle tavole di coda o tabelle index-organizzata associati (IOT), se presente. I mezzi solo supportate di modifica di tabelle di coda è attraverso le API dotazione. tavoli coda e IOT possono diventare incoerente e quindi effettivamente rovinato, se le operazioni DML vengono eseguite su di essi.
Quindi, si dovrà creare un po 'di PL / SQL di routine per tirare le voci fuori.
Con il pacchetto dbms_aq
. Vedi l'esempio dalla documentazione: annullamento dell'accodamento dei messaggi .
Scorrere verso il basso un po 'e c'è un esempio completo.