Eu tenho uma tabela Oracle que possui mais de 1,8 bilhão de linhas, preciso excluir até 260 milhões dessas linhas.
Sou um DBA Microsoft SQL, portanto não estou totalmente confortável com a sintaxe Oracle e as práticas recomendadas para esse tipo de processo.
- CTAS não parece uma boa opção, pois preciso excluir um número menor de linhas
- Edição padrão, portanto não é possível usar o MOVE ONLINE INCLUINDO ROWS
Quaisquer recomendações e conselhos serão apreciados.
Com 1,8 bilhão de linhas você realmente deveria ter EE. De longe, o melhor método é recriar a tabela sem as linhas que você deseja excluir. A formatação de novos blocos, especialmente o caminho direto, é muito mais rápida do que a atualização dos existentes. A exclusão de linhas requer mais refazer, mais desfazer, leituras de blocos atuais, manutenção de índice, gerenciamento de espaço de bitmap, possíveis problemas de simultaneidade (bloqueios, disponibilidade de ITL, etc.), possivelmente pesquisas de gatilho ou chave estrangeira, etc. trabalhe para atualizações e exclusões. Considerando que, ao criar um novo segmento e carregá-lo (CTAS), a maior parte disso é ignorada.
A diferença é tão grande que você teria que excluir uma pequena porcentagem da tabela para fazer uma
DELETE
operação valer a pena. Você está falando de 15%. Isso está muito acima do limite para preferir CTAS.O conceito básico é:
Se você absolutamente não deseja passar por todos os scripts de índices, restrições, concessões, etc... você pode optar por mover os dados duas vezes para que eles acabem no segmento original, embora isso acrescente mais tempo:
Pelo menos é assim que eu faria em EE. Não acredito que o paralelismo funcione sem EE, mas a abordagem deve ser a mesma mesmo sem paralelismo.
CTAS
NOLOGGING
é uma opção muito boa para excluir aproximadamente 15% de uma tabela grande.Exportar + importar com
QUERY
parâmetro é outro conceito muito semelhante.Ambos os métodos requerem espaço de armazenamento adicional e tempo de inatividade do aplicativo devido à indisponibilidade da tabela.
Outros métodos levariam muito mais tempo ou exigiriam recursos da Enterprise Edition.