【发布时间】:2018-09-19 11:33:04
【问题描述】:
如何找到导致 oracle 中其他会话死锁的确切当前 SQL 语句?
【问题讨论】:
-
一旦 Oracle 检测到死锁,当其中一个会话被终止时,这两个语句都将列在 Oracle 生成的跟踪文件中
如何找到导致 oracle 中其他会话死锁的确切当前 SQL 语句?
【问题讨论】:
在 v$session 中查找阻塞实例和阻塞会话。
select * from v$session
这应该让您知道阻塞会话的 SID 和 SERIAL#。
Edit -- 这是针对阻塞的会话,而不是死锁。 如果它是一个实际的死锁,它应该自动清除(最终)。 顺便说一句,根据 AskTom 的说法,“Oracle 中死锁的第一大原因是未索引的外键。”
select vs.blocking_session from v$session vs
where vs.sid in
(
select userenv('sid') as sid from dual
);
如果这不是 NULL,则使用 SID 从 v$session 中选择 * 其中 vs.SID = '从上方阻塞会话' ;
【讨论】: