Bonjour tout le monde,
Voila, j'ai des index qui ont été créés dans le TABLESPACE USERS et j'aimerais les déplacer dans le TABLESPACE INDX en une seule fois.
J'ai donc fait un peu de PL/SQL qui récupère tous les index et qui boucle pour les déplacer un par un.
Le problème est que dans la boucle, quand je demande d'exécuter le Alter Index, il me retourne une erreur comme quoi il ne devrait pas y avoir d'Alter à cet endroit.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 alter index C.index_name rebuild tablespace INDX ; * ERREUR à la ligne 9 : ORA-06550: Ligne 9, colonne 1 : PLS-00103: Symbole "ALTER" rencontré à la place d'un des symboles suivants : begin declare exit for goto if loop mod null pragma raise return select update while <an identifier> <a double-quoted delimited-identifier> <a bind variable> << close current delete fetch lock insert open rollback savepoint set sql execute commit forall <a single-quoted SQL string>
Voila le code PL/SQL
Lorsque je lui demande d'afficher les requêtes, elles sont bien formées et tout.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 DECLARE CURSOR C_INDEX IS (SELECT index_name FROM user_indexes WHERE table_name IN (select table_name from user_tables)); BEGIN FOR C IN C_INDEX LOOP ALTER INDEX C.index_name REBUILD TABLESPACE INDX; END LOOP; END;
Au passage, j'aimerais avoir votre avis sur cette façon de faire car je ne suis pas certain que ce soit la meilleure façon de procéder.
Est-il mieux, niveau sécurité et intégrité de la base, de procéder d'une autre façon ? Par exemple, les changer un par un ?
Merci d'avance pour vos réponses et conseils
Partager