Quando precisei de algo parecido fiz isto...

Att




SET SERVEROUTPUT ON

  DECLARE

      contador  NUMBER  := 0;
      total  NUMBER  := 0;

      CURSOR del_record_cur IS
        SELECT rowid
        FROM   SIGA.RFE050
        WHERE  RFE_DATA BETWEEN '20110721' AND '20110725' ORDER BY 
RFE_FILIAL,RFE_RELSP0,RFE_NUMREP,RFE_DTHRG,RFE_IDORG 
;

    BEGIN
      FOR rec IN del_record_cur LOOP
        DELETE FROM SIGA.RFE050
          WHERE rowid = rec.rowid;

        total := total + 1;
        contador := contador + 1;

        IF (contador >= 10000) THEN
          COMMIT;
          DBMS_OUTPUT.PUT_LINE('Processando... Deletados até agora: ' || 
total || ' registros.');
          contador := 0;
        END IF;

      END LOOP;
      COMMIT;
      DBMS_OUTPUT.PUT_LINE('Deleted ' || total || ' records from 
SIGA.RFE050.');
    END;

-----Mensagem Original----- 
From: Milton Bastos Henriquis Jr.
Sent: Tuesday, October 02, 2012 3:43 PM
To: oracle_br@yahoogrupos.com.br
Subject: Re: [oracle_br] eliminando linhas com um intervalo de 1.000 linhas

Qual a versão do teu banco?

Nas versões mais recentes não usa-se mais rollback segments... e sim
tablespace de UNDO.

Eu gostaria de ver a opinião de outros DBA's a respeito!
Acho que não precisa de um commit a cada mil registros...




2012/10/2 Anderson Campelo <dba.ander...@gmail.com>

> **
>
>
> A tabela(única) em questão possui quase 32 mi de linhas e preciso deletar
> apenas as últimas 7mi.
> Esses 7mi de registros são de duas semanas para cá, de lá para cá a tabela
> não sofreu atualização.
>
> Sobre ser um delete simples ou um PL/SQL, pensei em criar um PL, pois como
> falei antes estava pensando em ir comitando os processos a cada 1.000
> linhas para não sobrecarregar os arquivos de rollback.
>
> Obrigado.
>
> Em 2 de outubro de 2012 15:14, Milton Bastos Henriquis Jr. <
> miltonbas...@gmail.com> escreveu:
>
>
> > Primeiro explique melhor o teu caso.
> >
> > Qual teu critério pra eliminar estas 7M de linhas?
> >
> > Vc consegue fazer isso com um simples DELETE?
> > É uma tabela inteira? É um delete com filtro?
> > Precisa de um PL/SQL?
> > É apenas em uma tabela? Ou várias tabelas diferentes?
> >
> > Enfim... dê mais detalhes do teu caso pra que a gente possa passar a
> melhor
> > solução!
> >
> >
> >
> >
> > 2012/10/2 Anderson Campelo <dba.ander...@gmail.com>
> >
> > > **
>
> > >
> > >
> > > Pessoal,
> > >
> > > Muito boa tarde.
> > > Preciso da ajuda de vocês para criar um script rápido de deleção de
> > linhas.
> > >
> > > Será necessário eliminar aproximadamente 7.000.000 de linhas.
> > > Vi algo a respeito na web de eliminar as linhas em um intervalo de
> > > 1.000linhas sempre comitando o processo após esse intervalo.
> > >
> > > Como eu posso fazer isso?
> > >
> > > Desde já agradeço.
> > >
> > > [As partes desta mensagem que não continham texto foram removidas]
> > >
> > >
> > >
> >
> >
> >
> > --
> > Att,
>
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
> > ------------------------------------
>
> >
> >
> > ----------------------------------------------------------
> > >Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de
> > inteira responsabilidade de seus remetentes.
> > Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/
> >
> > ----------------------------------------------------------
> > >Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package »
> > Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO
> ESPAÇO!
> > VISITE: http://www.oraclebr.com.br/
> > ----------------------------------------------------------
> > Links do Yahoo! Grupos
>
> >
> >
> >
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>



-- 
Att,


[As partes desta mensagem que não continham texto foram removidas]



------------------------------------

--------------------------------------------------------------------------------------------------------------------------
>Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira 
>responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/
--------------------------------------------------------------------------------------------------------------------------
>Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » 
>Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! 
>VISITE: http://www.oraclebr.com.br/
------------------------------------------------------------------------------------------------------------------------
 
Links do Yahoo! Grupos

  • Re: [oracle_br] eliminand... Francisco Assis - T.I. - Globoaves - Cascavel/PR

Responder a