干掉标记为KILLED的session

同事kill掉一个进程 521,查询状态:

select * from v$session where sid=521;

状态是:KILLED,但是SESSION还是没有释放锁住的资源,

查询 v$process ,得不到 SPID系统进程号,原因是 kill掉 session的SID和SERIAL#后,v$session的PADDR发生了变化,只能通过下列sql查询新的在v$process中而不在v$session中的进程:

select p.addr from v$process p where pid <>1

minus

select s.paddr from v$session s

结果是 v$process 的 addr地址,确认是否含有系统oracle的进程:

sekect spid,username,terminal,program,background from v$process

where addr in ('刚才查询出来的结果')

 

核对结果,在操作系统级执行: kill -9 XXXX, 再次查询:

select * from v$session where status='KILLED';
如果还是没有解决,就用最后一招,
alter system set events = ''immediate trace name flush_cache''(9i);
alter system flush buffer_cache(10g)
最后的这个方法会释放DB CACHE里的所有缓存,数据库会在开始的一段时间比较慢,运行一段时间后就会正常。

转载于:https://www.cnblogs.com/zndavid/archive/2009/08/19/1549727.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值