DDL Statements (wie alter table ) sind in oracle immer automatisch mit einem impliziten commit(!) verbunden.
Also Vorsicht bitte an der Stelle.
Und nested transactions ziehen hier nicht? Aua.
Doch, teilweise.
Lassen sich aber bei Locks außerhalb der autonomen Transkation selten für etwas sinnvolles nutzen.
Zum Thema: du kannst dir ein Update sparen.
Du kannst in einem Schritt die temp. Spalte besetzen und dein Feld auf null setzen. Bei 500k sollte es aber egal sein. Das sollte nicht lange dauern.
Code:
alter table t add "temp column" clob;
update t set "temp column" = y, y = null;
alter table t modify y long;
alter table t modify y clob;
update t set y = "temp column";
alter table t drop column "temp column";