首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle HowTo:如何快速杀死占用过多资源(CPU,内存)的数据库进程

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

作者头像
数据和云01
发布2018-09-05 11:34:14
1K0
发布2018-09-05 11:34:14
举报
文章被收录于专栏:数据库新发现数据库新发现

作者:eygle 出处:http://www.eygle.com/blog 日期:October 27, 2005 本文链接:http://www.eygle.com/archives/2005/10/oracle_howto_kill_session.html

« Why My server Down? | Blog首页 | Oracle HowTo:如何在Oracle10g中启动和关闭OEM »


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

此时该进程被迅速清除。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2005年11月10日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档