Bonjour à toutes et à tous.

Je suis sous Oracle 10g et j'aimerais recompiler les différents index existants pour mon schéma <monSchema>.

Pour l'instant, j'ai écrit ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
DECLARE
  CURSOR cListeIndex 
  IS
    SELECT
        sai.tablespace_name
      , sai.index_name
    FROM
      SYS.all_indexes sai
    WHERE sai.owner = '<monSchema>'
    ORDER BY 
        sai.tablespace_name ASC
      , sai.index_name ASC;
 
  vListeIndex cListeIndex%ROWTYPE;
  vRequete VARCHAR2(1000);
BEGIN
  OPEN cListeIndex;
  LOOP
    FETCH cListeIndex INTO vListeIndex;
    EXIT WHEN cListeIndex%NOTFOUND;
 
    vRequete := 'ALTER INDEX '||vListeIndex.index_name||' REBUILD TABLESPACE '||vListeIndex.tablespace_name;
 
    EXECUTE IMMEDIATE vRequete;
  END LOOP;
  CLOSE cListeIndex;
END;
Cependant, je ne connais pas bien la syntaxe pour Oracle 10g. Ai-je écrit ma requête selon la bonne syntaxe ? Est-il nécessaire de préciser le tablespace de l'index ou peut-on juste écrire :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
ALTER INDEX <NOM_INDEX> REBUILD;
Merci d'avance pour l'information.

Bahan