Per evitare di scrivere nel registro di annullamento di Oracle se il tuo update
l'istruzione colpisce ogni singola riga della tabella, quindi è probabile che sia meglio eseguire un create table as select
query che ignorerà tutti i registri di annullamento, che è probabilmente il problema che stai riscontrando poiché registra l'impatto su 60 milioni di righe. È quindi possibile eliminare la vecchia tabella e rinominare la nuova tabella con il nome della vecchia tabella.
Qualcosa come:
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;
Per riferimento, leggi alcuni dei suggerimenti qui:http://www.dba-oracle.com /t_efficient_update_sql_dml_tips.htm
Se stai fondamentalmente creando una nuova tabella e non aggiornando solo alcune delle righe di una tabella, probabilmente si rivelerà il metodo più veloce.