Oracle HowTo:如何快速杀死占用过多资源(CPU,内存)的数据库进程
上一篇 /
下一篇 2009-01-12 22:56:34
/ 个人分类:Oracle
- 文件版本: V1.0
- 开发商: 本站原创
- 文件来源: 本地
- 界面语言: 简体中文
- 授权方式: 免费
- 运行平台: Win9X/Win2000/WinXP
很多时候由于异常或程序错误会导致个别进程占用大量系统资源,需要结束这些进程,通常可以使用以下命令Kill进程:
51Testing软件测试网3D2B4Y#a)ND(FY"k'{Yalter system kill session 'sid,serial#'; |
51Testing软件测试网} s$RcEI"Y2zfsV但是此命令释放资源极为缓慢,具体可以参考:
Oracle中Kill session的研究.
KM]T)m L0为了更快速的释放资源,通常我们使用如下步骤来Kill进程:
e~-~"r*OU3KR
y01.首先在
操作系统级kill进程
51Testing软件测试网5N`A)x%e%H2.在
数据库内部kill session
51Testing软件测试网3e(jTj9T;d这样通常可以快速中止进程,释放资源。
G7S%\4f-^0[8{JlSgNM0今天就遇到这样一个案例,
其他朋友在数据库里kill session,可是长时间仍无效果:
ryM
V/f~0[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. |
51Testing软件测试网8gf$}C#[ tF那按照我前面提到的步骤,首先查询得到该session对应的OS进程号:
51Testing软件测试网2z
A6z7w!qeIOE,ISQL> 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> ! |
51Testing软件测试网e
a.z$o2S2On&D在操作系统级kill该进程:
J E+\7u_V&A0[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 |
51Testing软件测试网2x"IIJ,_再次在数据库中kill该session,并指定immediate选项:
!|
_ GRn v0SQL> alter system kill session '154,56090' immediate;
System altered.
SQL> select sid,serial#,username from v$session where sid=154;
no rows selected |
51Testing软件测试网H"o"f_g/Z0QPr(wN
相关阅读:
- ORACLE常用问题1000问全集(三) (lgwmlx, 2009-1-07)
- ORACLE常用问题1000问全集(四) (lgwmlx, 2009-1-07)
- ORACLE常用问题1000问全集(五) (lgwmlx, 2009-1-07)
- ORACLE常用问题1000问全集(六) (lgwmlx, 2009-1-07)
- ORACLE常用问题1000问全集(七) (lgwmlx, 2009-1-07)
- ORACLE常用问题1000问全集(八) (lgwmlx, 2009-1-07)
- ORACLE常用问题1000问全集(九) (lgwmlx, 2009-1-07)
- ORACLE常用问题1000问全集(十) (lgwmlx, 2009-1-07)
- 推荐1个数据库的学习资料给大家 (唱歌不走调, 2009-1-08)
- 磁盘排序,影响Oracle数据库性能的罪魁祸首 (fishy, 2009-1-09)
收藏
举报
TAG:
Oracle