Gebruik dbms_lock.allocate_unique samen met dbms_lock.request. De gebruiksopmerkingen zegt:
De eerste sessie die ALLOCATE_UNIQUE aanroept met een nieuwe vergrendelingsnaam, zorgt ervoor dat een unieke vergrendelings-ID wordt gegenereerd en opgeslagen in de tabel dbms_lock_allocated. Daaropvolgende oproepen (meestal door andere sessies) retourneren de eerder gegenereerde vergrendelings-ID.
Ik denk dat dit is wat je zoekt.