- --查看被锁的对象(表、视图等)
select b.username,b.sid,b.serial#,b.sql_id,b.status,logon_time from v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time; - 状态inactive 表示当前不活跃的会话,active表示当前被阻塞的会话。杀掉inactive的会话即可释放锁。
- --查看sql语句
set long 100000--设置long字段长度
select sql_text,sql_id from v$sqlarea where sql_id='f1jv6yfhbk8jg'; - alter system kill session ' sid, serial#' immediate;
一键执行
SELECT 'alter system kill session ''' || ta.sid || ',' || ta.serial# ||
''';',
'alter system disconnect session ''' || ta.sid || ',' || ta.serial# ||
''' immediate;',
'host orakill ' || tc.instance_name || ' ' || tb.spid,
'kill -9 ' || tb.spid,
tb.spid,
ta.osuser,
tb.program,
ta.terminal,
ta.program
FROM v$session ta, v$process tb, v$instance tc
WHERE tb.addr = ta.paddr
AND ta.sid = &yoursid;
rac环境下 少量行锁查看
select sess.sid,sess.inst_id,
sess.serial#,
lo.oracle_username,
lo.os_user_name,
ao.object_name,
lo.locked_mode
from v$locked_object lo, dba_objects ao, gv$session sess
where ao.object_id = lo.object_id
and lo.session_id = sess.sid and ( sess.wait_class <> 'Idle'
or sess.blocking_session is not null);
alter system kill session '738,1429';
杀另外的节点:
alter system kill session 'sid,serial#,@1';(@1指是哪个实例)
select 'alter system kill session '''||sid||','||serial#||',@'||inst_id||','' immediate;' from gv$session where sql_id='';