Ik heb het probleem opgelost en ik post de oplossing terug voor het geval iemand een dergelijk probleem tegenkomt.
Als ik geen DDL-commando's in het script plaats, wordt het terugdraaien correct uitgevoerd.
Dus het script:
set autocommit off
whenever SQLERROR EXIT ROLLBACK
insert into a values (1);
insert into a values (2);
insert into a values ('x');
commit;
werken.
En als DDL wordt gebruikt, biedt Oracle in het algemeen geen rollback-functionaliteit.