Problemet du beskriver heter Write Skew.
I princip tar SERIELIZEABLE transaktionsisolering hand om detta, men inte i Oracle DB . Oracle tillhandahåller bara ögonblicksbildsisolering, även när du ber om SERIALIZABLE.
I Oracle är i stort sett den enda pålitliga lösningen att använda någon form av låsning. Detta behöver inte nödvändigtvis vara ett lås på en tabellrad, du kan även använda rådgivande lås via DBMS_LOCK för det.