`
izuoyan
  • 浏览: 9295945 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

阅读更多
作者: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

此时该进程被迅速清除。
分享到:
评论

相关推荐

    如何解决Oracle杀死死锁进程

    Oracle 杀死死锁进程是数据库管理员经常遇到的问题,本文将介绍解决 Oracle 杀死死锁进程的方法。 在 Oracle 中,死锁是指两个或多个会话在等待对方释放资源,从而导致互相阻塞的情况。死锁可能会导致数据库性能...

    CPU占用高

    标题“CPU占用高”指的是计算机或服务器的中央处理器在运行过程中消耗资源过多,导致系统响应变慢或无法正常处理任务的现象。这种情况可能是由于多种因素引起的,包括但不限于恶意软件、资源密集型应用程序、系统...

    减少Oracle内存占用

    ### 减少Oracle内存占用 在Windows XP环境下运行Oracle 10g时,可能会遇到数据库占用内存过高的问题。这不仅会影响系统的稳定性,还可能导致其他应用程序因可用内存不足而受到影响。本文将详细介绍如何通过合理设置...

    一个Oracle server process进程会消耗多少内存

    ### Oracle Server Process 进程内存消耗分析 ...总之,理解Oracle Server Process 进程的内存消耗机制对于提高数据库性能、合理规划资源分配具有重要意义。希望本文能够为相关领域的技术人员提供有价值的参考和帮助。

    快速杀死oracle的session

    ### 快速杀死Oracle的Session方法详解 在Oracle数据库管理中,有时会遇到需要迅速终止某个或某些Session的情况。这通常发生在系统响应缓慢、需要紧急关闭特定进程时,或者是在执行`shutdown immediate`命令但发现...

    oracle timesten内存数据库介绍

    标题:“Oracle Timesten内存数据库介绍” 描述:“内存数据库应用介绍,不错的东西,请大家赶紧下载呀” 标签:“数据库 内存 Oracle” 知识点详述: ### 一、内存数据库概述 内存数据库是一种主要或完全依赖...

    Oracle 19c 服务器架构详解:内存结构、进程结构及数据库组成

    内容概要:本文详细介绍了 Oracle 19c 服务器的体系结构,涵盖了 Oracle 服务器的构成、内存结构、进程结构和数据库组成四个主要部分。具体内容包括 Oracle 实例和数据库的构成、系统全局区 SGA 和程序全局区 PGA 的...

    Oracle 9i database:advanced instance tuning

    - **作业队列**:控制并行查询的数量,避免过度占用 CPU 资源。 - **资源管理器计划**:为不同的工作负载分配特定的 CPU 时间份额。 ### 备份与恢复策略的最佳实践 备份与恢复是确保数据安全的重要手段。Oracle 9i...

    Oracle进程导致CPU 100%的具体解决方法

    本文介绍了Oracle进程导致CPU 100%的具体解决方法。

    内存数据库与Oracle数据库的数据同步设计与实现.pdf

    内存数据库与Oracle数据库的数据同步设计与实现.pdf

    Oracle数据库精讲之数据库管理_ Oracle数据库管理视频

    第三讲:Oracle实例中后台进程管理 第四讲:Oracle数据数据文件管理 第五讲:Oracle数据库在线日志文件管理 第六讲:Oracle数据库归档日志文件管理 第七讲:Oracle数据库控制文件管理 第八讲:Oracle数据库参数文件...

    How to diagnose the high CPU utilization of ORACLE.EXE in Windows environment

    当用户抱怨数据库响应缓慢时,通常会发现ORACLE.EXE进程在任务管理器中占用几乎100%的CPU资源。然而,根据你的了解,数据库活动是正常的,没有新的作业在运行。在这种情况下,深入分析导致高CPU使用的Oracle进程或...

    oracle杀进程

    Oracle 杀进程是数据库管理员在日常工作中经常遇到的问题,特别是在数据库性能不佳或会话被锁死的情况下。因此,了解如何杀掉 Oracle 会话非常重要。本文将从 Oracle 数据库系统和操作系统两个方面介绍如何杀掉会话...

    查看oracle数据库的连接数以及用户、数据库锁定进程

    ### 查看Oracle数据库的连接数以及用户、数据库锁定进程 #### 一、查询Oracle的连接数 1. **查询总的连接数** 使用以下SQL命令可以查询Oracle数据库中的总连接数: ```sql SELECT COUNT(*) FROM v$session; `...

    ORACLE数据库 ORACLE数据库

    Oracle数据库是全球最广泛使用的商业关系型数据库管理系统之一,由美国甲骨文公司(Oracle Corporation)开发和维护。Oracle数据库以其高效、稳定和强大的功能在金融、电信、医疗、政府等多个领域得到广泛应用。本篇...

    oracle数据库内存组件与oracle进程.doc

    Oracle数据库是一个复杂的分布式系统,由多个组件协同工作以提供高效的数据...了解Oracle的内存组件和进程有助于优化数据库性能,通过调整内存大小、连接类型和进程数量,可以更有效地管理资源,提升数据库响应速度。

    Oracle的内存结构和进程结构

    Oracle数据库的内存结构和进程结构是其高效运行的关键组成部分。Oracle实例是用户访问数据库的核心途径,它由系统全局区(SGA)和一系列后台进程组成。在操作系统层面,实例通过ORACLE_SID标识,而在Oracle数据库...

    ORACLE CPU 耗尽内存

    当Oracle数据库的CPU耗尽内存时,这通常意味着数据库的进程或操作正在过度占用系统资源,导致系统响应速度减慢,甚至可能引发系统崩溃。这种情况可能是由于多种因素引起的,包括但不限于: 1. **SQL查询优化不当**...

    Oracle数据库巡检报告

    ### Oracle数据库巡检报告知识点详解 #### 一、操作系统参数检查 ##### 1.1 检查数据库CPU、I/O、内存性能 - **CPU性能检查**:通过监控工具或命令行工具(如`top`、`vmstat`、`iostat`等),检查服务器的CPU使用...

Global site tag (gtag.js) - Google Analytics