子分区索引状态为 USABLE

问题描述 投票:0回答:2

据我所知,索引可以是 VALID、INVALID、UNUSABLE 和 N/A 状态。对于子分区索引,我看到状态为 USABLE 而不是 VALID。我在任何地方都找不到这种状态的原因。请让我了解这种状态背后的原因。

我创建了一个子分区表。在其上创建本地索引。查看所有 ind 表中的索引状态。这一切都有 N/A。只有 all_ind_subpartitions 表具有 USABLE 状态。

oracle database-partitioning
2个回答
0
投票

这只是术语上的差异。

USABLE
=
VALID
。出于某种疯狂的原因,在分区段级别使用了与索引级别不同的术语。
N/A
表示索引分区的级别低于您正在查看的级别,因此它不能代表更高级别的状态,因为它可能是可用和不可用的混合。因此,您必须查看段级别(对于复合分区索引为
dba_ind_partitions
dba_ind_subpartitions
)视图以查看实际状态。

如果索引的any子分区不可用,除非查询被分区修剪,否则索引将不会被使用。人们希望这可以反映在索引级别,但不幸的是 Oracle 选择不这样做。因此,如果您试图找出未使用索引的原因,请确保检查

dba_ind_subpartitions
dba_ind_partitions
(如果不是复合分区)并查找任何处于不可用状态的行。重建任何不可用的段以将索引恢复到有用状态。


0
投票

我不确定,但我认为 INVALID 和 UNUSABLE 之间的区别适用于 Partial Indexes.

当您删除或截断分区并且索引未重建时,索引(或索引分区)变为无效。

由于

INDEXING OFF
子句,未创建 UNUSABLE 索引分区。

© www.soinside.com 2019 - 2024. All rights reserved.