select l.session_id sid,
s.serial#,
l.locked_mode,
l.oracle_username,
s.user#,
l.os_user_name,
s.machine,
s.terminal,
a.sql_text,
a.action,
‘ALTER SYSTEM KILL SESSION ”’ || s.sid || ‘, ’ || s.serial# || ”’;’ Command
from v
sqlareaa,v
session s, v$locked_object l
where l.session_id = s.sid
and s.prev_sql_addr = a.address
order by sid, s.serial#;
alter system kill session ‘sid,serial#’;
报
ORA-00031: session marked for kill 处理Oracle中杀不掉的锁
2.报如上错误 :select a.spid,b.sid,b.serial#,b.username from v
processa,v
session b where a.addr=b.paddr and b.status=’KILLED’ 查询spid 线程id;
3.如果利用上面的命令杀死一个进程后,进程状态被置为”killed”,但是锁定的资源很长时间没有被释放,那么可以在os一级再杀死相应的进程(线程),首先执行下面的语句获得进程(线程)号:
select spid, osuser, s.program from v
sessions,v
process p where s.paddr=p.addr and s.sid=12 (12就是上面的sid)
4. 例:c:>orakill orcl 327
说明:这里要注意的是kill OS进程是在服务端操作,而不是你程序所在客户机。 orcl 是实例名称 ,327 为spid 线程号