oracle 什么时候才回收v$session 中status='KILLED'的进程

oracle 什么时候才回收v$session status='KILLED'的进程,有些进程被杀掉之后一直没有被回收

session需要释放它所使用的资源,包括锁,回滚段 等资源;如果session已经运行了很长时间,kill session 可能是一个非常消耗时间的过程


察看session目前使用的回滚段块的数目信息
SELECT USED_UBLK FROM V$TRANSACTIOn a ,v$session b where a.addr=b.taddr;

你可以看看要回滚的数量
1.
判断是否在回滚
select * from
V$TRANSACTIOn where bitand(flag,power(2,7))>0
flag
字段值可以标识事务类型
select to_char( 7811, '0000000X' ), to_char( 7683, '0000000X') from dual;

TO_CHAR(7 TO_CHAR(7
--------- ---------
00001E83 00001E03
^ ^
0 indicates "normal user transaction"
8 indicates "rollback,most likely - means no more changes and you cannot commit"

2.
回滚量:UBABLK字段
3.
查看回滚时间
col td format a40
col es format 999,999
col totalwork format 999,999
col units format a10
SELECT decode(target_desc,NULL,decode(target,NULL,opname, concat(opname, concat (' - ',target))),decode(target,NULL,concat(opname, concat (' : ',target_desc)),concat(opname, concat (' : ',concat(target_desc,concat (' - ',target)))))) td,
sofar,totalwork,units, start_time,TO_CHAR(elapsed_seconds,'99999990.00'), decode(sofar, 0, 0, round(elapsed_seconds*(totalwork-sofar)/sofar)) 剩下的时间

FROM v$session_longops

WHERE sid = &v_sid

AND serial# =&v_serial#

and sofar< totalWork
D SOFAR TOTALWORK UNITS START_TIME TO_CHAR(ELAPSED_SECONDS,'99999
剩下的时间
------------------------------------ ----- --------- -------- ----------- ------------------------------ ----------
Table Scan - SINO.ACC_POENTRYD 16099 16099 Blocks 2005-4-15 1 8.00 0
查看剩下的时间
4.
你使用了alter session kill一个死进程,可能当时只是把session标识了killed,而v$process还存在,你可以用下面方法解决
UNIX
平台
SQL> SELECT spid
FROM v$process
WHERE NOT EXISTS ( SELECT 1
FROM v$session
WHERE paddr = addr);

% kill
WINDOWS

select p.spid "OS Thread", b.name "Name-User", s.osuser,
s.program
from v$process p, v$session s, v$bgprocess b
where p.addr = s.paddr
and p.addr = b.paddr
UNION ALL
select p.spid "OS Thread", s.username "Name-User",
s.osuser, s.program
from v$process p, v$session s
where p.addr = s.paddr
and s.username is not null;
使用orakill
SQL> SELECT spid, osuser, s.program,sid
FROM v$process p, v$session s
WHERE p.addr=s.paddr;
SPID OSUSER PROGRAM SID
------------------------ -------------------- --------------- ----------
6484 lifeng.fang sqlplus.exe 11
SQL> host orakill charset 6484;

Kill of thread id 6484 in instance charset successfully signalled.
5.
你可以在sqlnet.oradcd

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/33600/viewspace-266393/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/33600/viewspace-266393/

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值