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

 


Responder a