PL/SQL para alterar índices para UNUSABLE e executar REBUILD

Nada de mais aqui, pessoal. Só é algo que utilizei hoje para uma migração via Golden Gate, e guardo aqui para uso futuro.

Alterar todos os índices para UNUSABLE:

BEGIN
  FOR c IN
  (SELECT i.owner, i.index_name
   FROM dba_indexes i
   WHERE i.owner = 'SCOTT'
   AND i.index_type NOT IN ('LOB'))
  LOOP
    dbms_utility.exec_ddl_statement('alter index "' || c.owner || '"."' || c.index_name || '" unusable');
  END LOOP;
END;
/

Executar REBUILD de todos os Índices:

BEGIN
  FOR c IN
  (SELECT i.owner, i.index_name
   FROM dba_indexes i
   WHERE i.owner = 'SCOTT'
   AND i.index_type NOT IN ('LOB'))
  LOOP
    dbms_utility.exec_ddl_statement('alter index "' || i.owner || '"."' || i.index_name || '" rebuild');
  END LOOP;
END;
/

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.