I executed following PL/SQL in multiple sessions:

```
DECLARE
   x     NUMBER;
   y     NUMBER;
BEGIN
   x := 500;
   y := 0;
   WHILE (x > y)
   LOOP
       SET TRANSACTION 

       Select max(SERIAL_NO) INTO y from MY_TABLE;

       y := y + 1;

       insert into MY_TABLE S (S.SERIAL_NO, S.Request_id)
       values ((
                (select max(SERIAL_NO) from MY_TABLE) + 1
               )
              ,'B');

       Commit;

   END LOOP;
END;
/

```

I still got duplicate entries in the table, how could this have happened?