【问题标题】:How to purge an Advanced Queue in Oracle如何清除 Oracle 中的高级队列
【发布时间】:2016-11-14 14:06:28
【问题描述】:

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

dbms_aqadm.purge_queue_table()

但是,存储会发生什么变化,尤其是队列表、索引和 LOB 段的高水位标记?是不是也要缩表?

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

是否有必要查看基础表和索引,或者这是否会自动处理?

非常感谢!

【问题讨论】:

    标签: oracle oracle11g oracle-aq


    【解决方案1】:

    DBMS_AQADM.PURGE_QUEUE_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 已经写过关于经常截断表的信息https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:47911859692542

    【讨论】:

    • 你的意思是PURGE_QUEUE_TABLE而不是DROP_QUEUE_TABLE,对吧?
    • @wolφi O,是的。谢谢我立即更改答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-20
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    • 2015-08-10
    相关资源
    最近更新 更多