oralce杀session

简介:

一、问题的提出
很多的时候我们迅速的杀掉Oralcle的一些session,理由大体如下:
 
1、 一些时候,由于我们的数据量很大,相应的事务大并且多,在做shutdown immediate的时候会花费好多的时间,而我们却想用shutdown immediate的方式,而又要把数据库迅速的shutdown下来。
 
2、 我们的应用可能使用了会话控制,即在应用的层面控制了一些用户的连接的数量。但有时可能网络发生的瞬断,从而就产生了一些死进程,他们的状态为Inactive的状态。当我们用alter system kill session ‘sid,serial#’进行清除时,这些session的状态又变成了killed,这些就由Pmon进程来慢慢进行清除了,而你恰恰又是个急脾气。
 
3、 系统忽然慢了现来,你发现是某个session在做怪,想迅速把它迅速结束掉。
 
a、 找到你要杀掉的那个session, 并记下paddr
 
select sid,username,paddr,status from v$session
where username='amis1' and status ='INACTIVE' 
 
b、 找到这个session所对应的spid
 
select * from v$process where addr=' '
 
 
 
 
Unix 下: kill Addr
 
select b.SPID,b.PID,a.STATUS,a.SERVER,a.MACHINE,a.OSUSER 
from v$session a,v$process b where a.username ='AMISZF' and a.PADDR=b.ADDR
 
kill pid
windowns 下: orakill sid spid
 
 
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就很快的了。
$ ps -ef|grep $ORACLE_SID|grep -v ora_|grep LOCAL=NO|awk '{print $2}'|xargs kill
 
 
 
何杀掉Windows上Oracle的Server线程?
 
有时会遇到Oracle的会话挂起并占用大量CPU的情况, 用kill session也没有用, 当然这时有可能在做一些会话级的ROLLBACK的操作, 如果遇到这种情况还是等等吧, 否则你可以强行杀掉Server进程(Windows是线程), 在Linux/Unix的进程是很容易杀的, 在Windows下则可以用Oracle提供的orakill命令, 使用语法如下: 
 
Usage: orakill sid thread
 
 where sid    = the Oracle instance to target
        thread = the thread id of the thread to kill
    
 The thread id should be retrieved from the spid column of a query such as:
 
        select spid, osuser, s.program from
        v$process p, v$session s where p.addr=s.paddr 
    这个说明已经很清楚了, 我很少接触Windows上的库, 所以没有遇到.

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xfzzf/archive/2007/07/27/1711137.aspx


本文转自茄子_2008博客园博客,原文链接:http://www.cnblogs.com/xd502djj/archive/2010/08/19/1803506.html,如需转载请自行联系原作者。



目录
相关文章
|
17天前
|
SQL 监控 Oracle
oracle阻塞会话与kill
oracle阻塞会话与kill
|
6月前
|
安全 关系型数据库 MySQL
mysql服务器hang死的原因
mysql服务器hang死的原因
|
12月前
|
Oracle 关系型数据库 Unix
Oracle查询锁表以及杀会话或系统进程来解除锁表操作
Oracle查询锁表以及杀会话或系统进程来解除锁表操作
233 0
|
SQL Oracle 关系型数据库
Oracle 数据库利用sql语句杀掉用户session进程,“ORA-01940: 无法删除当前连接的用户“问题解决办法
Oracle 数据库利用sql语句杀掉用户session进程,“ORA-01940: 无法删除当前连接的用户“问题解决办法
319 0
Oracle 数据库利用sql语句杀掉用户session进程,“ORA-01940: 无法删除当前连接的用户“问题解决办法
|
SQL Oracle 关系型数据库
实现批量Kill Oracle会话进程
有时业务DML高并发操作会导致表出现很多锁的情况,甚至需要登录服务器kill进程才能完全解锁,此时就需要能够批量Kill Oracle会话进程的脚本,来减轻操作的压力。
1333 0
|
SQL 数据库 Windows
SQL Server会话KILL不掉,一直处于KILLED /ROLLBACK状态情形浅析
原文:SQL Server会话KILL不掉,一直处于KILLED /ROLLBACK状态情形浅析 今天遇到一个很奇怪的情况,发现一个会话异常,这个会话只是在执行一个简单的存储过程,里面使用了链接服务器(Linked Server)查询另外一台服务器数据(存储过程里面没有任何显性事务、UPDATE、D...
1958 0
|
Oracle 关系型数据库 Linux