Zoals al vermeld in mijn opmerkingen denk ik PARALLEL
slaat nergens op (maar daar ben ik niet zeker van) en elke partitie één voor één uitvoeren is ook nutteloos als je de hele tabel kopieert.
Hoe dan ook, je code zou moeten werken als je het als volgt schrijft:
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;
Ik weet niet wat uw vereisten zijn, maar misschien Partities en subpartities uitwisselen zou een optie voor je kunnen zijn.