Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

atualizando uma tabela oracle muito grande


Para evitar gravar no log de desfazer do Oracle se sua update declaração atinge todas as linhas da tabela, então é melhor você executar uma create table as select query que ignorará todos os logs de desfazer, que provavelmente é o problema que você está enfrentando, pois está registrando o impacto em 60 milhões de linhas. Você pode então descartar a tabela antiga e renomear a nova tabela para o nome da tabela antiga.

Algo como:
create table new_people as
select l.newid,
       p.col2,
       p.col3,
       p.col4,
       p.col5
  from people p
  join id_conversion l
    on p.id = l.id;

drop table people;

-- rebuild any constraints and indexes
-- from old people table to new people table

alter table new_people rename to people;

Para referência, leia algumas das dicas aqui:http://www.dba-oracle.com /t_eficiente_update_sql_dml_tips.htm

Se você estiver basicamente criando uma nova tabela e não apenas atualizando algumas das linhas de uma tabela, provavelmente será o método mais rápido.