如何快速的杀掉Oracle的Session

<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 728x15, 创建于 08-4-23MSDN */ google_ad_slot = "3624277373"; google_ad_width = 728; google_ad_height = 15; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 160x600, 创建于 08-4-23MSDN */ google_ad_slot = "4367022601"; google_ad_width = 160; google_ad_height = 600; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

一、问题的提出

很多的时候我们迅速的杀掉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就很快的了。

<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 728x15, 创建于 08-4-23MSDN */ google_ad_slot = "3624277373"; google_ad_width = 728; google_ad_height = 15; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 160x600, 创建于 08-4-23MSDN */ google_ad_slot = "4367022601"; google_ad_width = 160; google_ad_height = 600; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
阅读更多
个人分类: 数据库
想对作者说点什么? 我来说一句

快速杀死oraclesession

2011年05月09日 2KB 下载

oracle 如何杀掉session

zhuche110 zhuche110

2010-12-20 11:11:00

阅读数:658

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭