如何清除 Oracle 中的高级队列
How to purge an Advanced Queue in Oracle
文档清楚地说明了如何清除 Oracle AQ:
dbms_aqadm.purge_queue_table()
但是,存储会发生什么变化,尤其是队列 table、索引和 LOB 段的高水位线? table 是否也需要缩小?
在生产环境中,队列几乎总是空的(它们本该如此),但在我们的测试系统中,由于各种原因它们会填满数百万行,因此有时需要清空它们。
是否需要查看底层 table 和索引,或者这是自动处理的?
非常感谢!
DBMS_AQADM.PURGE_QUEUE_TABLE
等价于截断 table。当您尝试 truncate 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 已经写了关于经常截断的信息 table https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:47911859692542
文档清楚地说明了如何清除 Oracle AQ:
dbms_aqadm.purge_queue_table()
但是,存储会发生什么变化,尤其是队列 table、索引和 LOB 段的高水位线? table 是否也需要缩小?
在生产环境中,队列几乎总是空的(它们本该如此),但在我们的测试系统中,由于各种原因它们会填满数百万行,因此有时需要清空它们。
是否需要查看底层 table 和索引,或者这是自动处理的?
非常感谢!
DBMS_AQADM.PURGE_QUEUE_TABLE
等价于截断 table。当您尝试 truncate 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 已经写了关于经常截断的信息 table https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:47911859692542