如何彻底杀掉不良用户会话

简介:

在ORACLE数据库当中,有时候会使用ALTER SYSTEM KILL SESSION 'sid,serial#'杀掉一个会话进程,但是使用这个SQL语句杀掉会话后,数据库并不会立即释放掉相关的资源,有时候你会发现锁定的资源很长时间也不会释放,即使会话状态为“KILLED”,依然会阻塞其它会话。

 

在ORACLE数据库杀掉会话进程有三种方式:

1: ALTER SYSTEM KILL SESSION

关于KILL SESSION Clause ,如下官方文档描述所示,alter system kill session实际上不是真正的杀死会话,它只是将会话标记为终止。等待PMON进程来清除会话。

    select sid,serial# from v$session where username='DEMO';查询用户的 sid,serial# 

 

 

可以使用ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE 来快速回滚事物、释放会话的相关锁、立即返回当前会话的控制权。

 

Specify IMMEDIATE to instruct Oracle Database to roll back ongoing transactions, release all session locks, recover the entire session state, and return control to you immediately.

 

 

2: ALTER SYSTEM DISCONNECT SESSION

 

 

 

ALTER SYSTEM DISCONNECT SESSION 杀掉专用服务器(DEDICATED SERVER)或共享服务器的连接会话,它等价于从操作系统杀掉进程。它有两个选项POST_TRANSACTION和IMMEDIATE, 其中POST_TRANSACTION表示等待事务完成后断开会话,IMMEDIATE表示中断会话,立即回滚事务。

 

SQL> ALTER SYSTEM DISCONNECT SESSION 'sid,serial#' POST_TRANSACTION;

 

SQL> ALTER SYSTEM DISCONNECT SESSION 'sid,serial#' IMMEDIATE;

 

 

3: KILL -9 SPID (Linux) 或 orakill ORACLE_SID spid (Windows)

 

 

可以使用下面SQL语句找到对应的操作系统进程SPID,然后杀掉。当然杀掉操作系统进程是一件危险的事情,尤其不要误杀。所以在执行前,一定要谨慎确认。

 select SPID from v$process where addr in (SELECT PADDR FROM V$SESSION WHERE USERNAME='用户名字');      (找到用户的spid)

 

 kill -9 spid

 

 

在数据库如果要彻底杀掉一个会话,尤其是大事务会话,最好是使用ALTER SYSTEM DISCONNECT SESSION IMMEDIATE或使用下面步骤:

 

1:首先在操作系统级别Kill掉进程。

 

2:在数据库内部KILL SESSION

 

或者反过来亦可。这样可以快速终止进程,释放资源。

 

文章可以转载,必须以链接形式标明出处。
本文转自 张冲andy 博客园博客,原文链接: http://www.cnblogs.com/andy6/p/5778363.html   ,如需转载请自行联系原作者

相关文章
|
5月前
|
存储 编解码 前端开发
会话跟踪技术
会话跟踪技术
41 2
|
安全 C#
[病毒分析]远程木马创建傀儡进程分析(下)
[病毒分析]远程木马创建傀儡进程分析
198 0
 [病毒分析]远程木马创建傀儡进程分析(下)
|
安全 API
[病毒分析]远程木马创建傀儡进程分析(中)
[病毒分析]远程木马创建傀儡进程分析
298 0
[病毒分析]远程木马创建傀儡进程分析(中)
|
安全 API
[病毒分析]远程木马创建傀儡进程分析(上)
[病毒分析]远程木马创建傀儡进程分析
374 0
[病毒分析]远程木马创建傀儡进程分析(上)
LXJ
|
数据安全/隐私保护
服务器用户、密码变动检测脚本
服务器上如果有用户变动,或者密码变动会有邮件通知。
LXJ
142 0
洲际远程打击之锁定用户登录
 楔子 月光色 女子香 泪断剑 情多长 。 作为运维人员一定要保持自己的操守和底线 。 昨天做的测试服务器做好了,可是今天早晨一来到公司发现被改了。所以看到门户网站被改时,你一定要查找真凶,做福尔摩斯。
903 0
|
数据库
Confluence 6 数据库问题解除
有关数据库相关的问题,请参考 Database Troubleshooting 中的内容。 希望获得更多的帮助,请参考 Troubleshooting Problems and Requesting Technical Support 页面中的内容。
810 0