Jeg løste problemet, og jeg sender løsningen tilbage, hvis nogen støder på et sådant problem.
Hvis jeg ikke sætter DDL-kommandoer i scriptet, udføres tilbageføringen korrekt.
Så scriptet:
set autocommit off
whenever SQLERROR EXIT ROLLBACK
insert into a values (1);
insert into a values (2);
insert into a values ('x');
commit;
arbejder.
Og hvis DDL bruges, så tilbyder Oracle generelt ikke rollback-funktionalitet.