Comando Recriar Indices

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
Allan Gorodniuk
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Qua, 25 Jan 2012 1:49 pm

Boa Tarde a Todos,

Efetuei a alteração de algumas tabelas mudando as tablespace.
Enfim, depois dessa alteração preciso recriar os indices dessas tabelas, alguêm poderia me informar qual o comando para recriar os idices das tabelas que foram alteradas.
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Allan,

Utilize a querie abaixo para gerar os comandos de REBUILD dos índices de um determiando schema.

Só que antes corrija a querie com o nome correto do SCHEMA e TABLESPACE, ok?:

Selecionar tudo

     SELECT 'ALTER INDEX ' ||owner||'.'||index_name|| ' REBUILD  <INFORME_AQUI_SUA_TABLESPACE>'|| ----||tablespace_name||
            ' PCTFREE '|| nvl(pct_free,10) || ' INITRANS '|| ini_trans || ' MAXTRANS '|| max_trans ||
            ' STORAGE (MAXEXTENTS UNLIMITED PCTINCREASE 0)'
       FROM dba_indexes
      WHERE partitioned = 'NO'
        AND temporary = 'N'
        AND owner = UPPER('<INFORME_AQUI_SEU_SCHEMA>')
        AND INDEX_TYPE NOT IN ('DOMAIN','LOB')
      ORDER BY INDEX_NAME;
Esta querie acima não faz rebuild de índices do tipo DOMAIN e LOB e PARTICIONED. Consulte a documentação da ORACLE se você precisar reconstruir índices deste tipo.

A querie acima pode ser melhorada, para gerar os comandos de REBUILD para os índices de uma determinada tabela ou lista de tabelas.

Abraços,

Sergio Coutinho
Responder
  • Informação