-
ANALYZE TABLE ne reconstruit pas l'index, n'est-ce pas ?
Je ne sais pas mais de nos jours, vous devriez utiliser
DBMS_STATS.GATHER_TABLE_STATS
plutôt queANALYZE TABLE
-
Le chargement direct signifie que les données ne sont pas insérées ligne par ligne mais en bloc, voir Chargement direct du chemin
-
Si votre index devient
UNUSABLE
alors ce doit être un index global. -
Utilisez le
UPDATE GLOBAL INDEXES
clause, c'est-à-direalter table target_table drop partition target_eldest_partition UPDATE GLOBAL INDEXES;
ou créer des index locaux. -
Cela dépend des colonnes que vous avez indexées. Au lieu de la table entière, vous pouvez également exécuter
DBMS_STATS.GATHER_INDEX_STATS
. AvecDBMS_STATS.GATHER_TABLE_STATS
vous pouvez également spécifier uniquement des partitions uniques et même des colonnes uniques.
btw, pour de nombreuses questions, ma réponse devrait être :"Avez-vous consulté la documentation Oracle" ? ou "Connaissez-vous Google" ? Selon vos captures d'écran, vous utilisez le schéma SYS
et tablespace SYSAUX
pour vos objets utilisateur. Vous ne devriez pas faire ça. Créez votre propre utilisateur et créez n'importe quel objet dans ce schéma.
En général, il existe trois types d'index partitionnés :
- GLOBAL INDEX :vous disposez d'un grand index couvrant toute la table. Ceci est obligatoire par exemple pour UNIQUE INDEXES si les colonnes indexées ne font pas partie de la clé de partition. En fait, cet index n'est pas partitionné. (comme indiqué dans
ALL_INDEXES
) - INDEX LOCAL :cet index est partitionné de la même manière que la table sous-jacente. Chaque partition de table a une partition d'index correspondante.
- INDICE PARTITIONNÉ :cet index est partitionné mais différent que la table sous-jacente. Je pense qu'il est même possible de créer un index partitionné sur une table non partitionnée. Les index partitionnés sont limités à des cas d'utilisation très particuliers uniquement. En fait, je ne peux pas imaginer où un tel index aurait un sens.