在使用Oracle的过程中,会有使用了锁(for update)但又忘记释放锁的情况。这是就需要用到KILL语句了。(如果不知道KILL语句怎么用,可参考:
http://www.cnblogs.com/memory4young/p/oracle-kill-locked-session.html)
当KILL语句执行后,报这样的信息:ORA-00031 标记要删去的会话 。
该怎么办呢 ?
1、查找进程ID
执行如下语句,查出被锁的进程的ID:
-- 执行以下SQL,需要DBA的权限 ---- 查询条件 KILLED ,必须大写 SELECT P.SPID, S.SID, S.SERIAL#, S.USERNAME, S.PROGRAM FROM V$PROCESS P, V$SESSION S WHERE P.ADDR=S.PADDR AND S.STATUS='KILLED';
2、KILL 进程
2.1 Oracle 运行在 Unix 机器上
在终端执行以下脚本:
## $SPID 为 第1步的sql查出的SPID kill –9 $SPID
2.1 Oracle 运行在 Windows 机器上
在CMD命令窗口下,输入:
## $SPID 为 第1步的sql查出的SPID
orakill 数据库实例名 $SPID
注:orakill 是Oracle自带的一个服务