Luiz, é exatamente isto que estou tentando... :) Deixa eu explicar um pouco melhor o que se passou, isto em 8 servidores com as mesmas caracteristicas mas geograficamente distribuidos:
- Criei tabelas particionadas pra essas tabelas, de 10 a 40 Gb cada, vou chamar as particionadas de "new" e as antigas de "old" - Fiz um script que copia dados das tabelas "old" para as tabelas "new" - Por falta de espaço, na verdade por não querer colocar os índices em um disco diferente, dropei os índices das "old" e criei nas "new". Criei índices particionados, sem problemas. Mas depois de um tempo, descobri que em um único servidor, nem todos os dados tinham sido copiados. O script parou no meio do caminho, não sei por que. Bom, os dados existem nas tabelas "old" - Minha primeira tentativa foi copiar por período, começando dos dados mais novos. Impossível sem índice. - Tentei criar índices. Na maioria das tabelas, demorou um pouco, mas consegui cria-los. Sobraram duas tabelas, estas duas as maiores, que dão erro de "Snapshot too old" quando tento criar os índices. Minha próxima tentativa foi o que descrevi no primeiro e-mail, um insert (ou merge) dos dados do "select * from old where rownum<50000", delete, e novo insert... Começa rápido, mas a partir do 10o. dia fica muito lento, por causa da lacuna que se cria no inicio da tabela ao apagar os dados. Respondendo as perguntas do Marcio: - já tentei criar os índices e não consegui - uma consulta por range de data também retorna "snapshot too old" depois de mais de 2 horas - Oracle 9.2.0.4 Acho que só anotando os valores da tabela no papel e digitando de novo mesmo... hehe -----Mensagem original----- De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Luiz Gonzaga (Gmail) Enviada em: quinta-feira, 27 de outubro de 2005 18:32 Para: oracle_br@yahoogrupos.com.br Assunto: Re: RES: [oracle_br] Re: mover dados de uma tabela grande sem indice para outra particionada Ivan, Uma sugestão seria redefinir essa tabela numa particionada. O que voce acha ? Veja a matéria no site www.oracle-base.com. Ivan Ricardo Schuster escreveu: > Marcio, agradeço sua intenção de ajudar, mas isso que voce está > sugerindo eu > já tentei e não funciona. > > Claro que dá pra fazer uma consulta utilizando um range de data, mas é > inviável. Coloquei pra rodar um select de 1 dia quando recebi teu e-mail, > mas até agora não tive resultado. Um select desse significa "procure > nos 42 > GB por todas as linhas que tenham dados do dia tal e retorne" > E isso vai acontecer para todos os dias dos últimos 3 meses. > 3(meses)X30(dias)X42GB, talvez exagerando um pouco... :) > > Quanto ao insert, conheço sim o "not exists" mas sei que o gargalo não > está > no meu merge, e sim na busca dos dados da tabela não particionada. > E pra não dizer que não verifiquei, tanto o insert quanto o merge, nos > planos de execução têm custo parecido, cerca de 500 mil > > -----Mensagem original----- > De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em > nome de opsmportes > Enviada em: quinta-feira, 27 de outubro de 2005 15:00 > Para: oracle_br@yahoogrupos.com.br > Assunto: RES: [oracle_br] Re: mover dados de uma tabela grande sem indice > para outra particionada > > Não entendi! > > 1) voce pode fazer not exists - funciona > 2) claro que voce pode definir range. Não importa que voce não tenha > índice. > > insert /*+ append */ into nova_table > select * from antiga_table > where data_hora between <data_hora_ini> and <data_hora_fim> > and not exists ( select null from nova_table where > nova_tabela.algum_idUnico = antiga_table.algum_idUnico ) > > Se voce preferir, mande a estrutura das tabelas para lista e o > requerimento que a lista pode ajudar a montar a sentença. > > Quanto aos índices, não sei qual a versão do Oracle nem sua máquina, > mas voce poderia criar os índices necessários rapidamente usando > nologging/parallel e depois "dropá-los". > > > --- Em oracle_br@yahoogrupos.com.br, "Ivan Ricardo Schuster" > <[EMAIL PROTECTED]> escreveu > > Marcio, não dá, por dois motivos: > > > > 1) posso já ter os dados na tabela nova (não serve um insert) > > 2) a tabela antiga não tem índice nenhum, nem de data_hora na > tabela antiga. > > (por isso não dá pra definir range) > > > > > > Abraço > > Ivan > > > > > > -----Mensagem original----- > > De: oracle_br@yahoogrupos.com.br > [mailto:[EMAIL PROTECTED] Em > > nome de opsmportes > > Enviada em: quinta-feira, 27 de outubro de 2005 14:07 > > Para: oracle_br@yahoogrupos.com.br > > Assunto: [oracle_br] Re: mover dados de uma tabela grande sem > indice para > > outra particionada > > > > Ivan, > > > > Por que não um simples: > > > > insert /*+ append */ into tab_particionada > > select * from tab_gigante where ...; > > > > Tenha certeza que sua cláusula WHERE tenha o range da data_hora. > > > > abraços, > > -- > > Marcio Portes > > > > > > > > --- Em oracle_br@yahoogrupos.com.br, "Ivan Ricardo Schuster" > > <[EMAIL PROTECTED]> escreveu > > > Pessoal, > > > > > > Tenho uma tabela de 42 Gb de dados, não particionada, sem índices > e > > estou > > > tentando mover os dados para uma tabela particionada, com o campo > > data_hora > > > deslocado em 15 minutos e somente se este dado não existir na > > tabela nova. > > > > > > Uma consulta por range de data_hora é muito lenta, por isso, > > resolvi fazer > > > da seguinte forma: > > > > > > Um merge, utilizando "select * from tabela where rownum<50000" > > > Seguido de um commit e um "delete form tabela where rownum<50000" > > > > > > > > > A performance disto no inicio foi muito boa, mas a medida que eu > vou > > > apagando os dados iniciais da tabela, forma-se uma lacuna grande > no > > inicio > > > da mesma, tornando um simples select * from tabela where rownum<5 > > muito > > > demorado. > > > > > > Vejo aí uma única solução, que seria mover esta tabela para outra > > > tablespace, para com isso desfragmenta-la. Acredito que isto > também > > seja > > > bastante demorado. Alguém tem outra sugestão? > > > > > > Obrigado > > > Ivan > > > > > > > > > > ORACLE_BR APOIA 2ºENPO-BR > > > _____________________________________________________________________ > > O 2º Encontro Nacional de Profissionais Oracle será realizado no dia > > 05/11/2005 no auditório da FIAP em São Paulo. Serão apresentadas > Palestras e > > Cases dirigidos exclusivamente por profissionais especialistas e > renomados > > no mercado. Confira a programação no site do evento! > http://www.enpo-br.org/ > > > _____________________________________________________________________ > > Area de download oracle_br - > http://www.4shared.com/dir/101727/a4dcc423 > > Links do Yahoo! Grupos > > > > > ORACLE_BR APOIA 2ºENPO-BR > _____________________________________________________________________ > O 2º Encontro Nacional de Profissionais Oracle será realizado no dia > 05/11/2005 no auditório da FIAP em São Paulo. Serão apresentadas > Palestras e > Cases dirigidos exclusivamente por profissionais especialistas e renomados > no mercado. Confira a programação no site do evento! > http://www.enpo-br.org/ > _____________________________________________________________________ > Area de download oracle_br - http://www.4shared.com/dir/101727/a4dcc423 > Links do Yahoo! Grupos > > > > > > > > > > > ORACLE_BR APOIA 2ºENPO-BR > _____________________________________________________________________ > O 2º Encontro Nacional de Profissionais Oracle será realizado no dia > 05/11/2005 no auditório da FIAP em São Paulo. Serão apresentadas > Palestras e Cases dirigidos exclusivamente por profissionais > especialistas e renomados no mercado. Confira a programação no site do > evento! http://www.enpo-br.org/ > _____________________________________________________________________ > Area de download oracle_br - http://www.4shared.com/dir/101727/a4dcc423 > > > *Yahoo! Grupos, um serviço oferecido por:* > > > ------------------------------------------------------------------------ > *Links do Yahoo! Grupos* > > * Para visitar o site do seu grupo na web, acesse: > http://br.groups.yahoo.com/group/oracle_br/ > > * Para sair deste grupo, envie um e-mail para: > [EMAIL PROTECTED] > <mailto:[EMAIL PROTECTED]> > > * O uso que você faz do Yahoo! Grupos está sujeito aos Termos do > Serviço do Yahoo! <http://br.yahoo.com/info/utos.html>. > > ORACLE_BR APOIA 2ºENPO-BR _____________________________________________________________________ O 2º Encontro Nacional de Profissionais Oracle será realizado no dia 05/11/2005 no auditório da FIAP em São Paulo. Serão apresentadas Palestras e Cases dirigidos exclusivamente por profissionais especialistas e renomados no mercado. Confira a programação no site do evento! http://www.enpo-br.org/ _____________________________________________________________________ Area de download oracle_br - http://www.4shared.com/dir/101727/a4dcc423 Links do Yahoo! Grupos ORACLE_BR APOIA 2ºENPO-BR _____________________________________________________________________ O 2º Encontro Nacional de Profissionais Oracle será realizado no dia 05/11/2005 no auditório da FIAP em São Paulo. Serão apresentadas Palestras e Cases dirigidos exclusivamente por profissionais especialistas e renomados no mercado. Confira a programação no site do evento! http://www.enpo-br.org/ _____________________________________________________________________ Area de download oracle_br - http://www.4shared.com/dir/101727/a4dcc423 Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html