El problema que está describiendo se llama Write Skew.
En principio, el aislamiento de transacciones SERIALIZEABLE se encarga de esto, pero no en Oracle DB . Oracle solo proporciona aislamiento de instantáneas, incluso cuando solicita SERIALIZABLE.
En Oracle, prácticamente la única solución confiable es usar algún tipo de bloqueo. Esto no necesariamente tiene que ser un bloqueo en una fila de la tabla, también puede usar bloqueos de aviso a través de DBMS_LOCK para eso.