Comme déjà indiqué dans mes commentaires, je pense PARALLEL
n'a aucun sens (mais je n'en suis pas sûr) et exécuter chaque partition une par une est également inutile lorsque vous copiez une table entière.
Quoi qu'il en soit, votre code devrait fonctionner lorsque vous l'écrivez comme ceci :
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;
Je ne connais pas vos besoins mais peut-être Échanger des partitions et des sous-partitions pourrait être une option pour vous.