Jak już wspomniałem w moich komentarzach, myślę, że PARALLEL
nie ma sensu (ale nie jestem tego pewien), a uruchamianie każdej partycji pojedynczo jest również bezużyteczne, gdy kopiujesz całą tabelę.
W każdym razie Twój kod powinien działać, gdy piszesz go w ten sposób:
FOR i in products_tab.first .. products_tab.last LOOP
EXECUTE IMMEDIATE 'ALTER SESSION FORCE PARALLEL DML PARALLEL 24';
EXECUTE IMMEDIATE 'INSERT /*+ APPEND PARALLEL(24) */ INTO tbla2
("ID", datetime, ...)
SELECT *
FROM tbl1 PARTITION ('||products_tab(i).partition_name||)';
COMMIT;
END LOOP;
Nie znam twoich wymagań, ale może Wymiana partycji i podpartycji może być dla Ciebie opcją.