返回顶部
首页 > 资讯 > 精选 >oracle什么时候才回收v$session中status='KILLED'的进程
  • 280
分享到

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

2023-06-06 02:06:39 280人浏览 独家记忆
摘要

本篇文章为大家展示了oracle什么时候才回收v$session中status='KILLED'的进程,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。oracle 什么时候才回收v$s

本篇文章为大家展示了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.ora加dcd

上述内容就是oracle什么时候才回收v$session中status='KILLED'的进程,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网精选频道。

--结束END--

本文标题: oracle什么时候才回收v$session中status='KILLED'的进程

本文链接: https://lsjlt.com/news/245892.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • oracle什么时候才回收v$session中status='KILLED'的进程
    本篇文章为大家展示了oracle什么时候才回收v$session中status='KILLED'的进程,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。oracle 什么时候才回收v$s...
    99+
    2023-06-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作