RES: [oracle_br] eliminando linhas com um intervalo de 1.000 linhas

2012-10-02 Por tôpico Márcio - Grupos Oracle
Além do que o Milton postou, analise se é melhor deletar as 7 milhões de
linhas, ou criar uma nova tabela e inserir as informações que não serão
deletadas, isso se a quantidade de linhas restantes forem menos que as que
precisa deletar.

O que fazer, depende das informações para análise.

-Mensagem original-
De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em
nome de Milton Bastos Henriquis Jr.
Enviada em: Tuesday, 2 de October de 2012 15:14
Para: oracle_br@yahoogrupos.com.br
Assunto: Re: [oracle_br] eliminando linhas com um intervalo de 1.000 linhas

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




Re: [oracle_br] eliminando linhas com um intervalo de 1.000 linhas

2012-10-02 Por tôpico Francisco Assis - T.I. - Globoaves - Cascavel/PR
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 = 1) 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



RES: [oracle_br] eliminando linhas com um intervalo de 1.000 linhas

2012-10-02 Por tôpico Márcio - Grupos Oracle
Eu precisei fazer um expurgo de uma tabela também, nela continha 3 milhões
de linhas e foi solicitado para deixar somente o último mês com informações.
Deu em torno de uns 300 - 400 mil linhas por mês, o que eu utilizei foi
deletar as informações com o mês fechado, um DELETE simples. 

No caso do Anderson, eu tentaria um DELETE simples de dois em dois dias,
fazendo um bloco PL colocando um comando após o outro, e o commit antes de
iniciar outro DELETE, até chegar os 14 dias que precisam ser deletados.

Márcio Ricardo.
-Mensagem original-
De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em
nome de Milton Bastos Henriquis Jr.
Enviada em: Tuesday, 2 de October de 2012 15:43
Para: oracle_br@yahoogrupos.com.br
Assunto: 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: RES: [oracle_br] eliminando linhas com um intervalo de 1.000 linhas

2012-10-02 Por tôpico Rafael Mendonca
Veja se você ainda consegue realizar o flashback. 



 De: Márcio - Grupos Oracle marcio_...@yahoo.com.br
Para: oracle_br@yahoogrupos.com.br 
Enviadas: Terça-feira, 2 de Outubro de 2012 16:01
Assunto: RES: [oracle_br] eliminando linhas com um intervalo de 1.000 linhas
 

  
Eu precisei fazer um expurgo de uma tabela também, nela continha 3 milhões
de linhas e foi solicitado para deixar somente o último mês com informações.
Deu em torno de uns 300 - 400 mil linhas por mês, o que eu utilizei foi
deletar as informações com o mês fechado, um DELETE simples. 

No caso do Anderson, eu tentaria um DELETE simples de dois em dois dias,
fazendo um bloco PL colocando um comando após o outro, e o commit antes de
iniciar outro DELETE, até chegar os 14 dias que precisam ser deletados.

Márcio Ricardo.
-Mensagem original-
De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em
nome de Milton Bastos Henriquis Jr.
Enviada em: Tuesday, 2 de October de 2012 15:43
Para: oracle_br@yahoogrupos.com.br
Assunto: 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


 

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



Re: [oracle_br] eliminando linhas com um intervalo de 1.000 linhas

2012-10-02 Por tôpico Anderson Campelo
Pessoal, obrigado pela ajuda.
Estou na versão 11g e os bancos estão montados via NFS no storage da
NetApp, sendo assim, pude criar um clone do produção e realizei um teste
com a opção do Márcio Ricardo, demorou bastante o processo levando em
consideração que esse não é o banco de produção e por isso a única sessão
ativa no banco era a minha.
Mas o processo deu certo, irei implementá-lo no horário mais propício para
não atrapalhar a produção.

Mais uma vez obrigado.


Em 2 de outubro de 2012 15:43, Milton Bastos Henriquis Jr. 
miltonbas...@gmail.com escreveu:

 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





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