Le problème que vous décrivez s'appelle Write Skew.
En principe, l'isolation des transactions SERIALIZEABLE s'en charge, mais pas dans la base de données Oracle . Oracle ne fournit qu'une isolation d'instantané, même lorsque vous demandez SERIALIZABLE.
Dans Oracle, la seule solution fiable consiste à utiliser une sorte de verrouillage. Cela ne doit pas nécessairement être un verrou sur une ligne de table, vous pouvez également utiliser des verrous consultatifs via DBMS_LOCK pour cela.