杀掉(kill)Oracle中会话或死锁

2014-11-24 18:29:28 · 作者: · 浏览: 0

-- 根据机器名称、SQL_HASH_VALUE过滤特殊的会话,并形成批量kill脚本


SELECT 'alter system kill session ''' || c.sid || '' || ',' || c.serial# ||''';'
FROM v$session c
WHERE c.MACHINE='hffwbz1' and c.SQL_HASH_VALUE='2639167965'


SELECT a.object_id, a.session_id, b.object_name, c.*
FROM v$locked_object a, dba_objects b, v$session c
WHERE a.object_id = b.object_id
AND a.SESSION_ID = c.sid(+)


--杀Seesion的SQL语句语法如下:


alter system kill session 'sid, serial#'


--如上面查出来的一条记录的sid是53, serial#为663,就执行以下的语句


alter system kill session '53,663'


--拼凑kill语句的方式如下,下面加了一个过滤条件和一个排序,杀除真正关心的表,并且着重注意超时时间过长的会话。


SELECT 'alter system kill session ''' || c.sid || '' || ',' || c.serial# ||''';',
a.object_id, a.session_id, b.object_name, c.*
FROM v$locked_object a, dba_objects b, v$session c
WHERE a.object_id = b.object_id
AND a.SESSION_ID = c.sid(+)
AND schemaname = 'Unmi'
ORDER BY logon_time