2016-07-12 29 views
3

Die Dokumentation ist klar zu spülen, wie eine Oracle AQ zu reinigen:Wie eine Advanced Queue in Oracle

dbms_aqadm.purge_queue_table() 

jedoch, was die Lagerung geschieht, vor allem der Hochwassermarken der Queue-Tabelle, die Indizes und der LOB-Segmente? Muss auch der Tisch verkleinert werden?

In der Produktion sind die Warteschlangen fast immer leer (wie sie sollten), aber in unserem Testsystem füllen sie sich aus verschiedenen Gründen in Millionen von Zeilen, so dass sie manchmal geleert werden müssen.

Muss man sich die zugrunde liegenden Tabellen und Indizes ansehen oder wird das automatisch erledigt?

Vielen Dank!

Antwort

2

DBMS_AQADM.PURGE_QUEUE_TABLE es ist äquivalent für truncate Tabelle. Schauen Sie auch bei dieser Fehlermeldung, wenn Sie Warteschlangentabelle

ORA-24005: Inappropriate utilities used to perform DDL on AQ table %s.%s 
*Cause: An attempt was made to use the SQL command DROP TABLE or TRUNCATE 
      TABLE or ALTER TABLE on queue metadata or tables. 
*Action: Use the DBMS_AQADM.DROP_QUEUE_TABLE to DROP TABLE, 
      DBMS_AQADM.PURGE_QUEUE_TABLE to TRUNCATE TABLE. 
      ALTER TABLE redefinition based on only ALTER_TABLE_PROPERTIES and 
      ALTER_TABLE_PARTITIONING clauses are allowed. 
über oft

Tom Kyte hat bereits geschrieben Info https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:47911859692542

+0

der Fehlertabelle Nachricht versuchen gestutzt ist eine gute Idee, durch Kürzen! –

+0

Sie meinten 'PURGE_QUEUE_TABLE' anstelle von' DROP_QUEUE_TABLE', richtig? –

+0

@ wolφi O, ja. Danke, dass ich die Antwort sofort ändere –