开发环境:win2000server+oracle9i+delphi开发人员报告:在程序中杀了job,但是被操作的表还是锁表状态, 其中有一张日志表还在不断插入记录,直到执行完所有插入操作(一个漫长的等待过程)才能解锁现场描述:oem中被杀job起的session状态为killed,其中有3张表被锁点击右键--》中断会话 提示: 标记要删去的会话
===================================================================================================处理方法一 :
1.select saddr,sid,serial#,paddr,username,status from v$session where username is not nullexample:saddr,sid,serial#,paddr,username,status from v$session where username = xnjw0419 ;saddr sid serial# paddr username status ——– ———- ———- ——– —————————— ——– 542e0e6c 11 314 542b70e8 eygle inactive 542e5044 18 662 542b6d38 sys active
2.alter system kill session sid, serial#;example:alter system kill session 11,314;(注:在sqlplus中执行 )
结果: 提示标记要删去的会话 无法释放会话,未成功解锁
====================================================================================================处理方法二 :
a、 找到你要杀掉的那个session, 并记下paddr
select sid, username, paddr, status from v$session where username = 用户名 ; example:select sid, username, paddr, status from v$session where username = xnjw0419 ; sid username paddr status———- —————————— ——– ——– 10 xnjw0419 2b5e2e2c killed
b、 找到这个session所对应的spid
select * from v$process where addr = 上面查寻的paddr; example:select addr,pid,spid,username,serial#,terminal from v$process where addr = 2b5e2e2c;addr pid spid username serial# terminal——– ———- ———— ————— ———- —————-2b5e2e2c 44 1204 system -99 jwc
c、 杀掉spid所标识的那个进程
d:\>orakill sid spid (注:cmd命令窗口中执行 只有oracle服务器端才有orakill命令)example: d:\>orakill oemrep 1204
提示:kill of thread id 1204 in instance oemrep successfully signalled.
结果:成功删除该session,表也解锁