检查锁定的表与停止进程

方案一:
1、SELECT /*+ rule*/ 
a.sid, b.owner, object_name, object_type 
FROM v$lock a, all_objects b 
WHERE TYPE = 'TM' 
and a.id1 = b.object_id;
查询到的表就是被锁定的表
2、select spid, osuser, s.program 
from v$session s,v$process p
where s.paddr=p.addr and s.sid=XXX
查询出死锁进程在操作系统中的任务ID
XXX 即1、中查询到的a.sid。
alter system kill session 'a.sid,v$session';

删除进程 

 

方案二:
SELECT
    sid,
    serial#
FROM
    v$session
WHERE
    sid in (SELECT
                a.sid
            FROM
                v$lock a,
                all_objects b
            WHERE
                TYPE = 'TM' AND
                a.id1 = b.object_id
            )
查询锁定的表号 sid,serial#;
alter system kill session 'sid,serial#';
根据查出的表号,停止进程任务