·您的位置: 首页 » 资源教程 » 编程开发 » 数据库 » 如何快速杀死占用过多资源(CPU,内存)的数据库进程

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

类别: 数据库教程  评论数:0 总得分:0
很多时候由于异常或程序错误会导致个别进程占用大量系统资源,需要结束这些进程,通常可以使用以下命令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

此时该进程被迅速清除。
-= 资 源 教 程 =-
文 章 搜 索
关键词:
类型:
范围:
纯粹空间 softpure.com
Copyright © 2006-2008 暖阳制作 版权所有
QQ: 15242663 (拒绝闲聊)  Email: faisun@sina.com
 纯粹空间 - 韩国酷站|酷站欣赏|教程大全|资源下载|免费博客|美女壁纸|设计素材|技术论坛   Valid XHTML 1.0 Transitional
百度搜索 谷歌搜索 Alexa搜索 | 粤ICP备19116064号-1