Versão: Oracle 12cR2 EE
A tabela contém os seguintes tipos de coluna: NUMBER, CLOB, NVARCHAR2, TIMESTAMP, VARCHAR2
Tamanho da mesa: 95 GB
Contagem de linhas da tabela: 20 milhões
Tabela particionada? Não
Índices na tabela: existe apenas uma chave primária como índice na tabela.
Dependências: existe apenas um gatilho "antes de cada linha (inserir)" como dependência na tabela.
Restrições: existem 3 restrições (1 delas é chave primária e outras são checadas).
Queremos arquivar esta tabela. No entanto, não consegui decidir como o arquivamento deveria ser feito para uma tabela tão grande. Seria um pesadelo mover registros antes de uma determinada data para uma nova tabela com CTAS e, em seguida, excluir esses registros importados na tabela existente.
Acho que a melhor maneira seria fazer o intervalo da tabela particionado por mês (estou aberto a quaisquer ideias se você tiver soluções melhores).
Algumas perguntas pré-operação e sequência:
- Existe uma maneira de saber de antemão quanto arquivo irá gerar durante o particionamento de uma tabela desse tamanho?
- Temos a possibilidade de calcular antecipadamente a duração do processo?
- Seria uma boa opção interromper outros trabalhos de banco de dados que serão carregados durante o processo?
- É necessário fazer uma alteração no índice de chave primária para a operação ou outras dependências ou gatilhos?
Para após o processo:
Causa carga pesada no banco de dados quando partições grandes são descartadas?
Por exemplo, é possível configurar um pedido assim; podemos manter apenas os dados dos últimos 3 ou 6 meses na tabela principal e mover as partições mais antigas para a tabela de arquivo todos os meses? É correto usar apenas o método de importação de exportação ao migrar?
A partição migrada será eliminada do processo de migração. Haverá um problema com base no arquivo gerado ao fazer isso?
Obrigada.
Cumprimentos.
O particionamento de intervalo deve ser o método apropriado para isso. Se você puder cuidar para que a maior parte do aplicativo também leve isso em consideração (ou seja: suas consultas devem SEMPRE conter os critérios de partição na cláusula WHERE), então isso acelerará as coisas.
pré-operação
pós operação: