网站公告列表

  没有公告

加入收藏
设为首页
在线投稿

您现在的位置: IT知识网 >> IT知识 >> 维修维护 >> 其它外设维护维修 >> 文章正文

 

  快速杀死占用过多资源(CPU,内存)的数据库进程           

快速杀死占用过多资源(CPU,内存)的数据库进程
作者:佚名 文章来源:不详 点击数: 更新时间:2006-12-6 1:16:47
    快速杀死占用过多资源(CPU,内存)的数据库进程
    快速杀死占用过多资源(CPU,内存)的数据库进程    
    很多时候由于异常或程序错误会导致个别进程占用大量系统资源,需要结束这些进程,通常可以使用以下命令Kill进程:
    alter system kill session ’sid,serial#’;
    
    
    
    但是此命令释放资源极为缓慢,具体可以参考:Oracle中Kill session的研究.
    为了更快速的释放资源,通常我们使用如下步骤来Kill进程:
    1.首先在操作系统级kill进程
    2.在数据库内部kill session
    这样通常可以快速中止进程,释放资源。
    
    今天就遇到这样一个案例,其他朋友在数据库里kill session,可是长时间仍无效果:
    [oracle@danaly ~]$ sqlplus "/ as sysdba"
    
    SQL*Plus: Release 10.2.0.1.0 - Production on Thu Oct 27 11:09:50 2005
    
    Copyright (c) 1982, 2005, Oracle. All rights reserved.
    
    
    Connected to:
    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
    With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options
    
    SQL> select sid,username,status from v$session;
    
     SID USERNAME STATUS
    ---------- ------------------------------ --------
    ....
     154 SCOTT KILLED
    ...
    
    30 rows selected.
    
    
    
    那按照我前面提到的步骤,首先查询得到该session对应的OS进程号:
    SQL> select ’kill -9 ’||spid from v$process where addr = (select paddr from v$session where sid=&sid);
    Enter value for sid: 154
    old 1: select ’kill -9 ’||spid from v$process where addr = (select paddr from v$session where sid=&sid)
    new 1: select ’kill -9 ’||spid from v$process where addr = (select paddr from v$session where sid=154)
    
    ’KILL-9’||SPID
    --------------------
    kill -9 22702
    
    SQL> !
    
    
    
    在操作系统级kill该进程:
    [oracle@danaly ~]$ ps -ef|grep 22702
    oracle 22702 1 0 Oct25 ? 00:00:02 oracledanaly (LOCAL=NO)
    oracle 12082 12063 0 11:12 pts/1 00:00:00 grep 22702
    [oracle@danaly ~]$ kill -9 22702
    [oracle@danaly ~]$ ps -ef|grep 22702
    oracle 12088 12063 0 11:12 pts/1 00:00:00 grep 22702
    [oracle@danaly ~]$ exit
    exit
    
    SQL> select sid,username,status from v$session;
    
     SID USERNAME STATUS
    ---------- ------------------------------ --------
    ...
     154 SCOTT KILLED
    ...
    
    30 rows selected.
    
    SQL> select sid,serial#,username from v$session where sid=154;
    
     SID SERIAL# USERNAME
    ---------- ---------- ------------------------------
     154 56090 SCOTT
    
    
    
    再次在数据库中kill该session,并指定immediate选项:
    SQL> alter system kill session ’154,56090’ immediate;
    
    System altered.
    
    SQL> select sid,serial#,username from v$session where sid=154;
    
    no rows selected
    
    
    
    
    此时该进程被迅速清除。
    
    
  

文章录入:wuyongjian    责任编辑:wuyongjian 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最 新 热 门
    相 关 文 章
    RIP路由协议快速入门
    新手上路:RIP路由协议快
    RIP路由协议快速入门
    用xmodem重新快速灌IOS
    Cisco快速转发
    基本路由器的检验命令(
    基本路由器的检验命令(
    自适应快速以太网交换机
    用于Cisco 10000 Intern
    路由基本配置命令收录(快
     
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    Copyright© ITZS.NET All Rights Reserved
    QQ:272895858   ICP备案编号:吉ICP备07000044号
    IT知识网 站长:博浪