Så här fungerar Oracle. Din första INSERT gjordes korrekt (dvs infogade "1" i en tabell).
Sedan körde du ett anonymt PL/SQL-block som infogar "3", sedan "2", och misslyckas när du försöker infoga "1" på grund av primärnyckelöverträdelse.
Om ett obehandlat undantag inträffar under exekvering av det PL/SQL-blocket (vilket är vad du säger att "Oracle-undantagshanteraren återställer hit"), rullar Oracle tillbaka till början av PL/SQL-blocket.
När du använder EXCEPTION-hanteraren och utfärdar ROLLBACK, då är det DU som bestämmer vad du ska göra om något händer, och det är att återställa alla ändringar till tidigare COMMIT som var en implicit genomförd COMMIT efter att ha kört CREATE TABLE-satsen, så efter INSERT "1 " rullas också tillbaka.