I'm not seeing this effect:
create table t1 as
select mod ( level, 10 ) c1
from dual
connect by level <= 100;
create table t2 ( c1 primary key ) as
select * from t1
where 1 = 0;
exec dbms_errlog.create_error_log('t2', 'errlog');
insert into t2 values ( 1 );
commit;
alter session enable parallel dml;
insert /*+ noappend parallel */into t2
select /*+ parallel */distinct c1 from t1
log errors into errlog ( 'insert failed' )
reject limit unlimited;
commit;
select count(*) from t2;
COUNT(*)
10
select count(*) from errlog;
COUNT(*)
1
truncate table t2;
insert into t2 values ( 1 );
commit;
insert /*+ noappend parallel */into t2
select distinct c1 from t1
log errors into errlog ( 'insert failed' )
reject limit unlimited;
commit;
select count(*) from t2;
COUNT(*)
10
select count(*) from errlog;
COUNT(*)
2
Could you post a complete example - including DDL for the source table and sample data?