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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top