Como ya dije en mis comentarios, creo que PARALLEL
no tiene ningún sentido (pero no estoy seguro de eso) y ejecutar cada partición una por una también es inútil cuando copia la tabla completa.
De todos modos, tu código debería funcionar cuando lo escribes así:
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;
No conozco sus requisitos, pero tal vez Intercambio de particiones y subparticiones podría ser una opción para ti.