Como já foi dito em meus comentários, acho que
PARALLEL
não faz nenhum sentido (mas não tenho certeza disso) e executar cada partição uma por uma também é inútil quando você copia a tabela inteira. De qualquer forma, seu código deve funcionar quando você o escreve assim:
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;
Não conheço seus requisitos, mas talvez Trocando Partições e Subpartições pode ser uma opção para você.