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  
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