私のコメントですでに述べたように、私はPARALLEL
意味がありません(ただし、それについてはよくわかりません)。テーブル全体をコピーする場合は、各パーティションを1つずつ実行しても意味がありません。
とにかく、次のように書くと、コードは機能するはずです:
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;
要件はわかりませんが、パーティションとサブパーティションの交換 あなたのためのオプションかもしれません。