2010-11-23 21 views
17

J'ai testé Oracle AQ pour la première fois. J'ai réussi à créer 2000 lignes d'inserts de test dans la file d'attente que j'ai créée.Comment effacer une file d'attente dans Oracle AQ

Maintenant, j'aimerais les effacer. Comme je m'enseignais moi-même, je fixais l'heure d'expiration à un mois. Je ne peux pas attendre aussi longtemps. Et je ne pense pas que je devrais simplement les supprimer de la table de file d'attente.

Quelle est la meilleure façon de faire cela?

+1

Cette solution ressemble exactement à l'exemple ici: http://psoug.org/reference/dbms_aqadm.html. Pour ceux qui aiment les docs Oracle http://docs.oracle.com/cd/B19306_01/server.102/b14257/aq_admin.htm#BAJFEDGG voir les exemples 8-17 et 8-18 "Purger tous les messages dans une table de file d'attente" – ono2012

Répondre

19

Vous pouvez utiliser la procédure DBMS_aqadm.purge_queue_table.


SOLUTION

Le SQL ressemble à ceci:

-- purge queue 
DECLARE 
po_t dbms_aqadm.aq$_purge_options_t; 
BEGIN 
    dbms_aqadm.purge_queue_table('MY_QUEUE_TABLE', NULL, po_t); 
END; 
+0

A travaillé parfait! Merci beaucoup –

2

Faites simplement une suppression sur la table de file d'attente.

Peu importe, juste fait un chèque et that's not right:

Oracle Streams AQ ne prend pas en charge les opérations langage de manipulation de données (DML) sur les tables de file d'attente ou de tableaux organisés d'index associés (IOT), le cas échéant. Les seuls moyens de modification des tables de files d'attente pris en charge sont les API fournies. Les tables de file d'attente et les IOT peuvent devenir incohérentes et donc efficacement gâchées si des opérations DML sont effectuées sur ces tables.


Ainsi, vous devrez créer un peu de routine PL/SQL pour tirer les éléments hors tension. Utilisez le package dbms_aq. Vérifiez l'exemple de la documentation: Dequeuing Messages. Faites défiler un peu et il y a un exemple complet.

+0

Je savais que je ne pouvais pas supprimer de la table de file d'attente. Quelle API dois-je utiliser pour supprimer un message de la file d'attente? –