如何快速的杀掉Oracle的Session

原创 2003年11月16日 10:41:00

一、问题的提出

很多的时候我们迅速的杀掉Oralcle的一些session,理由大体如下:

1、  一些时候,由于我们的数据量很大,相应的事务大并且多,在做shutdown immediate的时候会花费好多的时间,而我们却想用shutdown immediate的方式,而又要把数据库迅速的shutdown下来。

2、  我们的应用可能使用了会话控制,即在应用的层面控制了一些用户的连接的数量。但有时可能网络发生的瞬断,从而就产生了一些死进程,他们的状态为Inactive的状态。当我们用alter system kill session ‘sid,serial#’进行清除时,这些session的状态又变成了killed,这些就由Pmon进程来慢慢进行清除了,而你恰恰又是个急脾气。

3、  系统忽然慢了现来,你发现是某个session在做怪,想迅速把它迅速结束掉。

 

二、处理方法

其实处理方法很简单,是被一些人称为“谋杀”的一种方法。因为一个session会对应着操作系统中相应的一个进程(process),我们不使用Alter system kill session这种方式了,取而代之则是kill的方式,当session的后台进程被杀掉了,便会促使懒散的Pmon进程迅速进行清理工作。

1、  以一个session做以示例,

a、  找到你要杀掉的那个session, 并记下paddr

 <?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

b、  找到这个session所对应的spid

 

c、  杀掉spid所标识的那个进程

如果你的Oracle是在Unix平台上的,可以用kill

    $kill 13824

♀如果你的Oracle是在windown平台上的,有一些的不同,因为windown是以thead来代替process的,需要用到sid和spid两个值,所用的命令也由kill替换为Orakill,格式为:orakill sid spid

       C:/>orakill 941 13824

d、  再查一下v$session,看会话在不在了。

2、  如何谋杀掉所有的Oracle的用户的进程呢?

a、  windows的环境,执行如下图中的SQL,并把结果存成.bat的文件,比如kill.bat, 执行一下kill.bat就可以了。

 

b、  Unix的环境相对来说就简单多了,执行如下的命令就可以了

$ ps -ef|grep $ORACLE_SID|grep -v ora_|grep LOCAL=NO|awk '{print $2}'|xargs kill

 然后你再shutdown immediate就很快的了。

如何快速的杀掉Oracle的Session

1.如何查看session级的等待事件? 当我们对数据库的性能进行调整时,一个最重要的参考指标就是系统等待事 件。 $system_event,v$session_event,v$session_wa...
  • hellojoy
  • hellojoy
  • 2015年08月19日 11:16
  • 376

Oracle 杀死session的方法

有时数据库有些session产生死锁托慢整个数据库,需要找出那个进程然后kill掉.在sybase中, 结合sp_who 和 kill sid就可以了.在oracle中也有类似的方法:首先是找出要杀死...
  • nvd11
  • nvd11
  • 2013年04月02日 00:56
  • 942

如何快速的杀掉Oracle的Session

--1.如何查看session级的等待事件? /*==========================================================================...
  • Eason_oracle
  • Eason_oracle
  • 2016年12月08日 11:16
  • 181

oracle 僵尸session的处理方法

很晚了现场打来电话,说操作两个模块的单据卡住了。架构是weblogic + oracle(发布在IBM AIX上,RAC)。还反馈,就在刚才在跳板机器上的pl/sql developer上执行了刷新两...
  • guogang83
  • guogang83
  • 2015年09月14日 11:56
  • 916

如何杀掉被锁的Session.sql

本文转自:http://jzgl-javaeye.iteye.com/blog/829274,未作修改。 --1.如何查看session级的等待事件?  /*===============...
  • daxiang12092205
  • daxiang12092205
  • 2016年07月13日 19:03
  • 632

如何杀掉oracle中的会话session

有时,Oracle中造成一些表被死锁或者会话异常退出,如执行了更新记录操作后,既没有commit也没有rollback,网络就断开了,也会造表或记录被锁住,待到超时后才会被解开,那样都会造成应用操作被...
  • u011497364
  • u011497364
  • 2014年03月20日 21:04
  • 349

oracle的后台进程杀掉会有什么影响

以下练习出自于DBA思想的天空: 数据库版本为: 10.2.0.1.0在启动数据库之后,出现的进程为 oracle 20037 1 0 06:46 ? ...
  • kellyseeme
  • kellyseeme
  • 2013年05月14日 22:23
  • 2382

ORACLE数据库杀掉会话进程的三种方式及案例分析

在ORACLE数据库当中,有时候会使用ALTER SYSTEM KILL SESSION 'sid,serial#'杀掉一个会话进程,但是使用这个SQL语句杀掉会话后,数据库并不会立即释放掉相关的资源...
  • wcy_1011
  • wcy_1011
  • 2016年09月29日 15:12
  • 3070

如何查看oracle当前的session连接数

怎样查看oracle当前的连接数呢?只要用下面的SQL语句 #查看当前不为空的连接 select * from v$session where username is not null; ...
  • huluedeai
  • huluedeai
  • 2015年04月02日 19:59
  • 1809

Oracle的关于session的销毁资源回收问题的解决方案

在Oracle中kill一个session采用如下语句:alter system kill session 'sid,serial#' ; 通过以下实验我们发现kill session并没有真正...
  • u010719917
  • u010719917
  • 2016年12月02日 15:03
  • 1070
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何快速的杀掉Oracle的Session
举报原因:
原因补充:

(最多只允许输入30个字)