TRUNCATE PARTITION

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
cleberz
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 107
Registrado em: Ter, 15 Nov 2011 8:42 am

Senhores, estou com um problema. Eu excuto o comando abaixo para truncar a partição mas ele não trunca.
Não acontece erro, mas também não trunca. alguém pode me ajudar?

ALTER TABLE TB1 TRUNCATE PARTITION PMIL;
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Ola Cleberz,

A documentação da Oracle (http://docs.oracle.com/cd/E11882_01/ser ... m#i1008226) sugere algumas sintaxes de comandos para se truncar uma partição:

A) Truncar e reconstruir indices (a que você tentou):

Selecionar tudo

ALTER TABLE B1 TRUNCATE PARTITION PMIL;
ALTER INDEX <indices-globais_B1>  REBUILD;
B) Limpar e depois truncar:

Selecionar tudo

DELETE FROM B1 PARTITION (PMIL);
ALTER TABLE B1 TRUNCATE PARTITION PMIL;
C) Truncar e atualizar o índice ao mesmo tempo:

Selecionar tudo

ALTER TABLE B1 TRUNCATE PARTITION PMIL UPDATE INDEXES;
Você poderia tentar fazer um teste com o procedimento "B", para ver se você consegue limpar esta tabela.

Um ponto: verifique se esta tabela particionada apresenta SUB-PARTICOES. Neste caso, talvez o procedimento tenha que ser outro.

Abraços,

Sergio Coutinho
cleberz
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 107
Registrado em: Ter, 15 Nov 2011 8:42 am

Cara está esquisito demais isso. Eu executei o comando ontem e ontem os dados estavam lá. hoje os dados foram apagados para aquela partição.

Hoje eu trunquei outra partição e tb não deu erro, executa com sucesso mas os dados continuam lá. Vou ter que esperar para amanha para saber se os dados foram apagados? isso ta errado, claro!

Fiz da forma que você mencionou acima e tb não deu certo, os dados continuam lá, e olha que eu executei o comando com usuário sys.
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Huuum,

Estranho mesmo .. você efetou estes comandos e o SELECT na mesma sessão SQL?

Sabe informar a versão do banco de dados? Se for uma versão antiga, sabe se a tablespace onde ela se situa é gerenciada localmente ou por dicionário dados?

E só por desencargo, você poderia executar a "opção B" adicionando um COMMIT entre a opção DELETE e ALTER TABLE? Sei que isso não explica o seu problema .. mas só queria ter certeza que os dados vão sumir.

Abraços,

Sergio Coutinho
cleberz
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 107
Registrado em: Ter, 15 Nov 2011 8:42 am

o banco é 11g
já tinha colocado commit.

não sei como resolver isso.
cleberz
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 107
Registrado em: Ter, 15 Nov 2011 8:42 am

Esse comando não funciona aqui.
criei outra tabela particionada, carreguei a tabela e depois executei o comando abaixo novamente:

Selecionar tudo

ALTER TABLE TB1 TRUNCATE PARTITION PMIL;

Nada acontece, os dados da partição contiuam lá.

Tem alguma coisa que tem que ser habilitado no banco para esse comando funcionar?
cleberz
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 107
Registrado em: Ter, 15 Nov 2011 8:42 am

essa tabela tem subpartição, tem algo a ver?
cleberz
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 107
Registrado em: Ter, 15 Nov 2011 8:42 am

Resolvi o problema colocando UPDATE INDEXES no final do comando.
Não sei realmente se o problema era a falta desse comando, mas funcionou e resolveu o meu problema.

Obrigado pela atenção galera!
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 14 visitantes