RES: [oracle_br] eliminando linhas com um intervalo de 1.000 linhas
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
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
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
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
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]