Avant quand je voulais désactivé un indexe, je le supprimai car il me semblait que s’était impossible de le désactiver (comme une contrainte avec l’option DISABLE).
Et puis finalement il y avait bien une option pour ne pas avoir à supprimer un indexe juste pour le désactiver.
Voici la méthode pour par exemple désactiver les indexes d’une table avant insertion dans cette dernière (ce qui permet d’accélérer les traitements) :
1 2 3 4 5 6 7 8 9 10 11 12 13 | BEGIN FOR C1 IN ( SELECT INDEX_NAME FROM user_indexes WHERE TABLE_NAME = 'MA_TABLE' AND INDEX_NAME LIKE 'IDX%' ) LOOP EXECUTE IMMEDIATE 'ALTER INDEX ' || C1.INDEX_NAME || ' UNUSABLE'; END LOOP; END; |
Ensuite pour les réactiver :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | BEGIN FOR C1 IN ( SELECT INDEX_NAME FROM user_indexes WHERE TABLE_NAME = 'MA_TABLE' AND INDEX_NAME LIKE 'IDX%' ) LOOP EXECUTE IMMEDIATE 'ALTER INDEX ' || C1.INDEX_NAME || ' REBUILD'; END LOOP; END; |