esta sentencia funciona sin la cláusula where
Eso podría deberse a que cuando concatenas las cadenas, se convierten implícitamente y tu condición donde falla en el tiempo de ejecución. Prueba el USING
cláusula con variables de vinculación.
stmt_ins:= 'INSERT INTO ' || n_tab2 || ' SELECT * FROM ' || n_tab || ' where ' || dt_criado || ' < :dt ' ;
EXECUTE IMMEDIATE stmt_ins USING SYSDATE;