Tak działa Oracle. Twoja pierwsza INSERT została wykonana poprawnie (tj. wstawiono „1” do tabeli).
Następnie uruchomiłeś anonimowy blok PL/SQL, który wstawia „3”, a następnie „2”, a próba wstawienia „1” kończy się niepowodzeniem z powodu naruszenia klucza podstawowego.
Jeśli podczas wykonywania tego bloku PL/SQL wystąpi nieobsłużony wyjątek (co nazywasz „cofanie obsługi wyjątków Oracle do tego miejsca”), Oracle cofa się do początku bloku PL/SQL.
Kiedy używasz programu obsługi EXCEPTION i wydajesz ROLLBACK, to to TY decydujesz, co zrobić, jeśli coś się stanie, a to jest cofnięcie wszystkich zmian do poprzedniego COMMIT, który był niejawnie wykonanym COMMIT po wykonaniu instrukcji CREATE TABLE, więc po INSERT "1 ” jest również cofany.