删除分区并“在线”重建全局索引

Sau*_*hin 3 oracle partitioning

我正在使用 Oracle 11g。

我需要删除分区并重建全局索引。下面的查询运行良好,但会阻塞表上的所有 DML 操作,直到重建索引。

ALTER TABLE ABC DROP PARTITION PART1 UPDATE GLOBAL INDEXES;
Run Code Online (Sandbox Code Playgroud)

但是,如果我将查询分成 2 部分并分别使用 ONLINE 选项重建索引,则在重建索引时 DML 查询不会被阻止

ALTER TABLE ABC DROP PARTITION PART1;
ALTER INDEX XYZ REBUILD ONLINE;
Run Code Online (Sandbox Code Playgroud)

这种方法的缺点是执行删除分区和重建索引之间的时间,这些索引将无法使用,可能会产生性能问题。

所以我的问题是,是否有任何选项可以在一个查询中删除分区并“在线”重建索引?目前我认为我们没有以下选择。

ALTER TABLE ABC DROP PARTITION PART1 UPDATE GLOBAL INDEXES ONLINE;
Run Code Online (Sandbox Code Playgroud)

Bal*_*app 5

不是 11g。

即使在 12c 中也不行,但 12c 使生活更轻松,您可以将“重建”部分推迟到更合适的时间。

在 12c 中有一个新功能,称为异步全局索引维护。您可以删除分区,这仍然使全局索引可用,并将不再需要的索引条目标记为孤立的。然后,您可以清理此索引(DBMS_PART.CLEANUP_GIDX、 或ALTER INDEX COALESCE CLEANUP,或者数据库也可以自动为您完成(有一个名为 的预定义作业PMO_DEFERRED_GIDX_MAINT_JOB)。