Oracle : maintenance des tables et des index

Une procédure stockée pour vous éviter de recourir à la lecture des entrailles de dindes ! ;+)L’objet de la procédure stockée que je vais vous présenter est de réduire les tables et reconstruire les index d’un schéma. Ainsi, vous disposerez d’un accès plus rapide à vos données !

La procédure ne fonctionne pas pour les tables mises en cluster !

 Réduction des tables et reconstruction des index

CREATE OR REPLACE PROCEDURE maintenance (user VARCHAR2) IS
    cursor cTables IS
        SELECT table_name FROM dba_tables WHERE owner=user;
    cursor cIndexes IS
        SELECT index_name FROM dba_indexes WHERE owner=user;
    sql_stmt  VARCHAR2(1024);
BEGIN
   FOR rTable in cTables
   LOOP 
      sql_stmt := 'ALTER TABLE ' || user || '.'|| rTable.TABLE_NAME || ' ENABLE ROW MOVEMENT';
      EXECUTE IMMEDIATE sql_stmt;
      sql_stmt := 'ALTER TABLE ' || user|| '.' || rTable.TABLE_NAME || ' SHRINK SPACE COMPACT';
      EXECUTE IMMEDIATE sql_stmt;
      sql_stmt := 'ALTER TABLE ' || user || '.'|| rTable.TABLE_NAME || ' DISABLE ROW MOVEMENT';
      EXECUTE IMMEDIATE sql_stmt;
   END LOOP;
   FOR rIndex in cIndexes
   LOOP
      sql_stmt := 'ALTER INDEX ' || user || '.' || rIndex.index_name || ' REBUILD';
      EXECUTE IMMEDIATE sql_stmt;
   END LOOP;
END;

Utilisation de la procédure

Vous devez passer en paramètre le nom du schéma – le nom de l’utilisateur – auquel appartiennent tables et index ! L’utilisateur qui exécute la procédure stockée doit disposer des droits sur les objets de l’utilisateur. Il peut s’agir de SYS ou de SYSTEM !

EXEC maintenance('CRM');

Base de données  / ALTER TABLE Formateur Oracle Oracle Database Procédure stockée 

Commentaires

Pas encore de commentaire.

Laisser un commentaire

(requis)

(requis)