Hola smef, o bien puedes monitorear las sesiones de los usuarios y verificar en que paso se encuentran cuando sucede el bloqueo y validar si no existe algún punto que requiera algún bloque de código en donde efectuan el dml que requiera un commit, por ejemplo. Lo más conveniente es que el recurso se bloquee solo el tiempo necesario. Puedes emplear por ejemplo el OEM, o el script siguiente directamente desde sqlplus para ver el sql actual de los usuarios:
Código:
select s.username curr_user, s.machine, sql_text
from v$sqlarea v, dba_users d, v$session s
where d.user_id = v.parsing_user_id
and s.sql_address=v.address
and s.sql_hash_value=v.hash_value
and s.inst_id = v.inst_id
and S.username LIKE UPPER('%&Usuario%')
order by decode(executions,0,0,(rows_processed/executions)) desc
/
Es un punto de partida, espero que sea útil
.
Saludos.