动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   数据库 → 阅读文章

 如何快速的杀掉Oracle的Session

作者来源: 
阅读 2018 人次 , 2006-5-11 14:53: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

 

 

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就很快的了。
  
 本文Tagsoracle  session  
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:Oracle 的数据抽取到SQL Server 2000(在两台不同的PC上,不使用ODBC)
· 下一篇:Oracle笔记
· VFP中多条件数据查询程序的实现
· 深入SQL SERVER 2000的内存管理机制(三)
· ORACLE问题,每天10问(六)
· Top Ten onstat Commands
· 解读Oracle 9201的控制文件 (二)


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077