Para economizar espaço em disco, quero compactar algumas partições de minhas tabelas:
alter table TEST_TAB move partition TEST_TAB_2014 compress for all operations;
Eu também tenho índices nesta partição.
Devo recriar índices após a compactação ou não é necessário?
Esta compressão online é uma opção de custo extra. Além disso, geralmente a compactação online tem uma taxa de compactação pior do que a offline. É porque o primeiro funciona no nível da linha, enquanto o último funciona no nível do bloco. Portanto, se você realmente deseja poupar algum espaço no banco de dados e seus dados antigos são somente leitura, você deve usar:
Em seguida, reconstrua (não recrie) todos os índices manualmente, de preferência com uma opção paralela razoável.
PS: você também deve ler algo sobre várias opções de compactação que a Oracle oferece. Infelizmente, não é simples do ponto de vista técnico e também do licenciamento.
Resumidamente, o Oracle oferece suporte a estas opções de compactação:
BASIC, offline, nível de bloco. Normalmente, quanto maior o tamanho do bloco do tablespace, melhor a taxa de compactação. Este é usado apenas ao mover tabelas/partições ou ao usar carregamento de caminho direto (/* +APPEND */ dica)
OTLP, online, nível de linha, fazendo parte da opção de custo extra de compactação avançada.
Você pode reconstruir os índices depois ou usar o
ao executar sua declaração. Por exemplo
Observação. Sua declaração não compactará dados existentes: apenas dados futuros inseridos.