Todo suena a que tienes un bloqueo a nivel de registro. Es posible que otra sesión haya hecho un update sin decir ni commit ni rollback y el registro quedó en el estado bloqueado.
Código SQL:
Ver originalSELECT
owner||'.'||object_name Objeto ,
oracle_username||' ('||s.STATUS||')' usuario_bd ,
os_user_name usuario_so ,
machine maquina ,
l.process procesos_unix ,
s.sid||','||s.serial# procesos_oracle ,
r.NAME rs ,
TO_CHAR(s.logon_time,'yyyy-mm-dd hh24:mi:ss') hora_ultima_conexion
FROM v$locked_object l ,
dba_objects o ,
v$session s ,
v$transaction t ,
v$rollname r
WHERE l.object_id = o.object_id
AND s.SID=l.session_id
AND s.taddr=t.addr
AND t.xidusn=r.usn
ORDER BY
usuario_so, procesos_oracle, Objeto;
Con esa consulta puedes detectar los objetos bloqueados y cuales deberias matar desde un usaurio dba.
Una vez tienes detectado el proceso tanto de oracle como de sistema operativo basta con eliminar el bloqueo desde un usuario dba con la siguiente sentencia:
Reemplazas 45,852 por el resultado que te de la columna procesos_oracle de la anterior consluta,
Nos cuentas como te va.
Saludos