Ik kampte onlangs met een soortgelijk probleem. Het bleek dat de database indexen op refererende sleutels miste. Dat zorgde ervoor dat Oracle veel meer records vergrendelde dan nodig was, wat snel leidde tot een impasse tijdens hoge gelijktijdigheid.
Hier is een uitstekend artikel met veel goede details, suggesties en details over het oplossen van een impasse:http://www.oratechinfo.co.uk/deadlocks.html#unindex_fk