Problém jsem vyřešil a řešení posílám zpět pro případ, že by někdo narazil na takový problém.
Pokud do skriptu nevložím příkazy DDL, vrácení se provede správně.
Takže skript:
set autocommit off
whenever SQLERROR EXIT ROLLBACK
insert into a values (1);
insert into a values (2);
insert into a values ('x');
commit;
funguje.
A pokud se používá DDL, pak Oracle obecně neposkytuje funkci vrácení zpět.