Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Aktualisieren einer sehr großen Orakeltabelle

Um zu vermeiden, in das Rückgängig-Protokoll von Oracle zu schreiben, wenn Ihr update -Anweisung jede einzelne Zeile der Tabelle trifft, dann ist es wahrscheinlich besser, create table as select auszuführen Abfrage, die alle Rückgängig-Protokolle umgeht, was wahrscheinlich das Problem ist, auf das Sie stoßen, da es die Auswirkungen über 60 Millionen Zeilen protokolliert. Sie können dann die alte Tabelle löschen und die neue Tabelle in den Namen der alten Tabelle umbenennen.

Etwas wie:

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;

Lesen Sie als Referenz einige der Tipps hier:http://www.dba-oracle.com /t_efficient_update_sql_dml_tips.htm

Wenn Sie im Grunde eine neue Tabelle erstellen und nicht nur einige Zeilen einer Tabelle aktualisieren, ist dies wahrscheinlich die schnellere Methode.