Użyj dbms_lock.allocate_unique wraz z dbms_lock.request. Uwagi dotyczące użytkowania mówi:
Pierwsza sesja wywołująca ALLOCATE_UNIQUE z nową nazwą blokady powoduje wygenerowanie unikalnego identyfikatora blokady i zapisanie go w tabeli dbms_lock_allocated. Kolejne wywołania (zwykle przez inne sesje) zwracają wygenerowany wcześniej identyfikator blokady.
Myślę, że to może być to, czego szukasz.