oracle日常使用的时候常常会因为多人同时操作一个表,导致发生表被死锁的现象,这个时候就需要找出导致表死锁的进程,并把该进程kill掉,以释放锁来使表恢复正常,下面是一种较常用的方法
1) 查锁
SELECT /*+ rule */ s.username,
decode(l.type,'TM','TABLE LOCK',
'TX','ROW LOCK',
NULL) LOCK_LEVEL,
o.owner,o.object_name,o.object_type,
s.sid,s.serial#,s.terminal,s.machine,s.program,s.osuser
FROM v$session s,v$lock l,dba_objects o
WHERE l.sid = s.sid
AND l.id1 = o.object_id(+)
AND s.username is NOT NULL
2)查后台进程
select spid
from v$process
where addr = (select paddr from v$session where sid = &oracle_sid); --oracle_sid为上面查锁步骤中查询到的SID
3)杀进程
登入到后台kill -9 spid
一般通过这个步骤就可以解决死锁的问题了,也有一些另外的情况,则需要其他的方法了解决了