Ich möchte eine Spalte Daten in eine andere Spalte in einer großen Tabelle mit 10 Millionen Datensätze kopieren. Ich verwende sys refcursor, um Daten von einer Spalte in eine andere zu kopieren. Das Kopieren der Daten dauert mehr als 30 Minuten. Ich benutze ORACLE 11gR2.Datenbankaktualisierung auf großer Tabelle Orakel, das große Zeit in Anspruch nimmt
Gibt es noch andere Alternativen, um das Gleiche zu tun? Im Folgenden finden Sie die Skripte
CREATE OR REPLACE PROCEDURE tblCursor(org_mig OUT SYS_REFCURSOR)
IS
BEGIN
OPEN org_mig FOR
select id from tbl;
END;
/
DECLARE
org_mig SYS_REFCURSOR;
t_id organization.id%TYPE;
loop_var number(10);
commit_interval number(10);
BEGIN
loop_var :=1;
commit_interval:=10000;
tblCursor(org_mig);
LOOP
FETCH org_mig INTO t_id;
EXIT WHEN org_mig%NOTFOUND;
update tbl set col1=col2 where id=t_id;
IF mod(loop_var,commit_interval)=0 THEN
Commit;
End if;
loop_var :=loop_var+1;
END LOOP;
Commit;
CLOSE org_mig;
END;
/
Gibt es einen Index für ID? Ich bin mir nicht sicher, was Sie tun, aber es nimmt sich Zeit, weil Sie jede Zeile in der Datenbank aktualisieren, ich denke, wenn Sie Massen einfügen würde schneller sein – Moudiz