Le script suivant permet de reconstruire tous les indexes d’un utilisateur et de les déplacer dans un tablespace spécifique, ici ‘TBS_IDX’.

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
28
29
30
/
DECLARE
   s_IndexName      VARCHAR2(255);
   s_TablespaceName VARCHAR2(255);

   Cursor c_Indexes Is
      SELECT IDX.INDEX_NAME
      FROM USER_INDEXES IDX
      WHERE INDEX_TYPE = 'NORMAL' OR INDEX_TYPE = 'BITMAP';

BEGIN

   Open   c_Indexes;
   Loop

      FETCH  c_Indexes INTO s_IndexName;
      EXIT WHEN c_Indexes%NOTFOUND;

      -- Deplacement des index dans le tablespace TBS_IDX
      s_TablespaceName := 'TBS_IDX';
      EXECUTE IMMEDIATE 'ALTER INDEX ' || s_IndexName || ' REBUILD TABLESPACE ' || s_TablespaceName;
      -- DBMS_OUTPUT.PUT_LINE('Index Rebuild:' || s_IndexName);

   End Loop;
   Close  c_Indexes;

   COMMIT;

END;
/