Реших проблема и публикувам обратно решението, в случай че някой срещне подобен проблем.
Ако не поставя DDL команди в скрипта, тогава връщането се изпълнява правилно.
И така, скриптът:
set autocommit off
whenever SQLERROR EXIT ROLLBACK
insert into a values (1);
insert into a values (2);
insert into a values ('x');
commit;
върши работа.
И ако се използва DDL, тогава като цяло Oracle не предоставя функционалност за връщане назад.