Tenho banco de dados Oracle 12c e tabela particionada. Há uma partição antiga que tem 68734 MB, o que representa 27% do total.

Eu preciso descartar esta partição. Este é um banco de dados de produção e não tenho uma janela de tempo de inatividade para isso.

Quero saber se eu eliminar esta partição, os índices desta tabela ficarão inutilizáveis ou serão reconstruídos? Qual seria a melhor estratégia para descartar essa partição com o mínimo de impacto no tráfego ativo?

Comentários

  • Depende dos índices. Os índices globais precisarão ser reconstruídos.

Resposta

Quando você remove uma ou mais partições, os índices locais são também caiu. Você precisa reconstruir os índices globais, a menos que a cláusula UPDATE INDEXES ou UPDATE GLOBAL INDEXES seja especificada na ALTER TABLE DROP PARTITION declaração.

Por exemplo, eu tenho uma tabela chamada TBL1 com partição de intervalo e índices globais.

SQL> select p.index_name, p.partition_name,p.status from dba_ind_partitions p, dba_indexes i where i.index_name=p.index_name and table_name="TBL1"; INDEX_NAME PARTITION_ STATUS ---------- ---------- -------- T_INDEX GI3 USABLE T_INDEX GI2 USABLE T_INDEX GI1 USABLE SQL> alter table tbl1 drop partition p0 UPDATE GLOBAL INDEXES; Table altered. SQL> select p.index_name, p.partition_name,p.status from dba_ind_partitions p, dba_indexes i where i.index_name=p.index_name and table_name="TBL1"; INDEX_NAME PARTITION_ STATUS ---------- ---------- -------- T_INDEX GI3 USABLE T_INDEX GI2 USABLE T_INDEX GI1 USABLE 

Como você pode ver, se eu especificar a cláusula UPDATE GLOBAL INDEXES, os índices globais não se tornam inutilizáveis.

Depois de descartar a partição, as entradas dos índices pertencem a essas partições permanecem. Quando uma consulta usa esses índices, eles simplesmente ignoram essas entradas (órfãs). Você pode limpar essas entradas órfãs em sua janela de manutenção regular. Os detalhes também são fornecidos na documentação a seguir. = “7f9aeaca1a”>

As operações de manutenção de partição DROP PARTITION e TRUNCATE PARTITION são otimizadas fazendo a manutenção do índice apenas para metadados.

Em qualquer caso, a queda ou truncamento de uma partição é concluído imediatamente, o índice é sempre av disponível para uso e a manutenção do índice é adiada

Documentação:

  • Manutenção assíncrona de índice global para descartar e truncar partições
  • No banco de dados Oracle 12c

    Comentários

    • Essas informações são muito úteis. Tem ideia do tempo de duração desta operação, visto que esta partição contém a maior quantidade de dados? Levará várias horas ou a queda da partição ocorrerá em um tempo razoável? (com em segundos ou minutos)
    • De acordo com a última frase citada acima, o descarte real de uma partição é uma operação de metadados, portanto, envolverá apenas atualizações em um punhado de registros. Basicamente, será rápido.
  • Deixe uma resposta

    O seu endereço de email não será publicado. Campos obrigatórios marcados com *