可能是另一个会话有未提交的工作(即更新或删除)
您可以找到这可能与哪个会话...
select s1.username || '@' || s1.machine || ' ( SID=' || s1.sid || ' ) is blocking '
|| s2.username || '@' || s2.machine || ' ( SID=' || s2.sid || ' ) ' AS blocking_status
from v$lock l1, v$session s1, v$lock l2, v$session s2
where s1.sid=l1.sid and s2.sid=l2.sid
and l1.BLOCK=1 and l2.request > 0
and l1.id1 = l2.id1
and l2.id2 = l2.id2
编辑:
很有可能你在某处有一些缺少 COMMIT 的代码。
检查 V$SESSION 中的违规会话 id,看看你是否能找出它可能是哪个代码。
为了帮助您找到胭脂代码(假设是这样),您可以使用...找到会话运行的最后一条 SQL 命令。
select *
from v_$sqltext, v_$session
where v_$session.prev_hash_value = v_$sqltext.hash_value
and [some filter on v_$session]