Exclui todos os dados de uma subpartição especificada em uma tabela com partição composta. Esta operação remove permanentemente os dados, mas preserva a estrutura da subpartição. Antes de executar este comando, certifique-se de que os dados não são mais necessários ou já possuem backup.
Sinopse
ALTER TABLE table_name
TRUNCATE SUBPARTITION subpartition_name
[{DROP|REUSE} STORAGE]
Parâmetros
|
Parâmetro |
Obrigatório |
Descrição |
Exemplo |
|
|
|
Sim |
Nome da tabela de destino com partição composta. |
|
|
|
|
Sim |
Nome da subpartição a ser truncada. |
|
|
|
|
REUSE} STORAGE` |
Não |
O sistema analisa esta cláusula para compatibilidade com a sintaxe Oracle, mas a ignora sem afetar o armazenamento. |
|
Observações
Você deve ser o proprietário da tabela ou ter a permissão
ALTERsobre ela.O comando
TRUNCATE SUBPARTITIONadquire um bloqueio exclusivo no nível da tabela (AccessExclusiveLock). Esse bloqueio impede todas as operações de Linguagem de Manipulação de Dados (DML) e a maioria das operações de Linguagem de Definição de Dados (DDL) na tabela. Execute esta instrução fora do horário de pico e reserve tempo suficiente para sua conclusão, evitando assim o bloqueio de outras operações críticas.Por ser uma operação DDL,
TRUNCATE SUBPARTITIONconfirma implicitamente a transação atual. Após a execução do comando, não é possível recuperar os dados excluídos comROLLBACK. Faça backup dos dados antes de realizar esta operação.Como operação de metadados que inclui exclusão de arquivos,
TRUNCATE SUBPARTITIONpode ser concluída em segundos, mesmo em tabelas com centenas de milhões de registros. A sobrecarga de I/O, CPU e memória é extremamente baixa.
Exemplos
Este exemplo demonstra como excluir dados da subpartição referente aos usuários da região da Ásia no ano de 2022. O cenário utiliza uma tabela de clientes com partição composta por ano de registro (RANGE) e região do usuário (LIST).
Preparar o ambiente
Realizar a verificação prévia
Executar o comando
Verificar o resultado
Perguntas frequentes
P1: Qual é a diferença entre TRUNCATE SUBPARTITION e DROP SUBPARTITION?
TRUNCATE SUBPARTITION exclui os dados de uma subpartição, mas mantém sua definição. Já DROP SUBPARTITION remove tanto a definição da subpartição quanto os dados nela contidos.
P2: É possível recuperar dados após a execução de TRUNCATE SUBPARTITION?
Não. TRUNCATE é uma operação DDL que exclui dados permanentemente. Por padrão, ela não é registrada no log de transações, tornando impossível a recuperação dos dados por métodos convencionais como rollback ou flashback.
P3: Qual é a diferença entre TRUNCATE SUBPARTITION e DELETE FROM ... SUBPARTITION?
TRUNCATE SUBPARTITION é uma operação DDL eficiente que exclui dados diretamente ao liberar blocos de dados, sem possibilidade de reversão. Por outro lado, DELETE é uma operação DML que remove dados linha por linha, registra logs, permite reversão e aciona gatilhos de exclusão.
P4: Por que recebo o erro "ORA-02149: relation ... does not exist"?
Esse erro ocorre quando o nome da subpartição não existe ou quando o uso de maiúsculas e minúsculas no nome especificado não corresponde ao nome real, pois os nomes diferenciam maiúsculas de minúsculas. Para confirmar o nome correto, realize a verificação prévia.
P5: Por que recebo o erro "ORA-01031: insufficient privileges"?
Esse erro indica que o usuário executor do comando não possui a permissão ALTER na tabela de destino. Entre em contato com o administrador do banco de dados para conceder a permissão necessária.
Instruções SQL relacionadas
ALTER TABLE DROP SUBPARTITION: Exclui a definição de uma subpartição e os dados que ela contém.
ALTER TABLE TRUNCATE PARTITION: Remove os dados de uma partição primária e de todas as suas subpartições.
ALTER TABLE ADD SUBPARTITION: Adiciona uma nova subpartição a uma partição primária existente.
ALTER TABLE SPLIT SUBPARTITION: Divide uma subpartição em duas novas subpartições.