Tôi đã giải quyết vấn đề và tôi đăng lại giải pháp trong trường hợp có ai đó gặp phải sự cố như vậy.
Nếu tôi không đặt các lệnh DDL trong tập lệnh thì quá trình khôi phục được thực hiện chính xác.
Vì vậy, tập lệnh:
set autocommit off
whenever SQLERROR EXIT ROLLBACK
insert into a values (1);
insert into a values (2);
insert into a values ('x');
commit;
làm.
Và nếu DDL được sử dụng thì nói chung Oracle không cung cấp chức năng khôi phục.