如何清除Oracle中的高级队列

如何清除Oracle中的高级队列,oracle,oracle11g,oracle-aq,Oracle,Oracle11g,Oracle Aq,文档清楚地说明了如何清除Oracle AQ: dbms_aqadm.purge_queue_table() 但是,存储会发生什么变化,特别是队列表、索引和LOB段的高水位线?有必要把桌子也缩小吗 在生产环境中,队列几乎总是空的(它们应该是空的),但在我们的测试系统中,由于各种原因,它们填充了数百万行,因此有时需要清空它们 是否有必要查看底层表和索引,还是自动处理 非常感谢 DBMS\u AQADM.PURGE\u QUEUE\u TABLE它相当于truncate TABLE。当您尝试截断队列

文档清楚地说明了如何清除Oracle AQ:

dbms_aqadm.purge_queue_table()
但是,存储会发生什么变化,特别是队列表、索引和LOB段的高水位线?有必要把桌子也缩小吗

在生产环境中,队列几乎总是空的(它们应该是空的),但在我们的测试系统中,由于各种原因,它们填充了数百万行,因此有时需要清空它们

是否有必要查看底层表和索引,还是自动处理


非常感谢

DBMS\u AQADM.PURGE\u QUEUE\u TABLE
它相当于truncate TABLE。当您尝试截断队列表时,还要查看此错误消息

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.

Tom Kyte已经写过关于经常截断表的信息

你的意思是
清除队列表
而不是
删除队列表
,对吗?@wolφi O,是的。谢谢,我马上改变答案