session1 确认sid
SYS @ prod > select userenv('sid') from dual;

USERENV('SID')
--------------
144

session2 确认sid
SYS @ prod > select userenv('sid') from dual;

USERENV('SID')
--------------
145

session1 查询当前数据库有哪些连接
SYS @ prod > select p.spid,p.pid,p.username,ss.sid,ss.serial# from v$process p,v$session ss where p.addr=ss.paddr and ss.username is not null;

SPID PID USERNAME SID SERIAL#
------------ ---------- --------------- ---------- ----------
12244 18 oracle 144 279
12269 19 oracle 145 100

操作系统层面查看以上两个进程
[root@ora10g ~]# ps -ef |grep 12244
oracle 12244 12243 0 18:32 ? 00:00:00 oracleprod (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
root 12298 12272 0 18:34 pts/4 00:00:00 grep 12244
[root@ora10g ~]# ps -ef |grep 12269
oracle 12269 12268 0 18:32 ? 00:00:00 oracleprod (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
root 12300 12272 0 18:34 pts/4 00:00:00 grep 12269

登陆session1 kill session2
SYS @ prod > alter system kill session '145,100';

System altered.

再次查询2个会话的状态,可以发现 session2 仍然存在,但是 session status 变为 killed
SYS @ prod > select p.spid,p.pid,p.username,ss.sid,ss.serial#,ss.status from v$process p,v$session ss where p.addr(+)=ss.paddr and ss.username is not null;

SPID PID USERNAME SID SERIAL# STATUS
------------ ---------- --------------- ---------- ---------- --------
12244 18 oracle 144 279 ACTIVE
145 100 KILLED

操作系统层面查看进程状态
[root@ora10g ~]# ps -ef |grep 12244
oracle 12244 12243 0 18:32 ? 00:00:00 oracleprod (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
root 12372 12272 0 19:00 pts/4 00:00:00 grep 12244
[root@ora10g ~]# ps -ef |grep 12269
oracle 12269 12268 0 18:32 ? 00:00:00 oracleprod (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
root 12379 12272 0 19:01 pts/4 00:00:00 grep 12269

查询该进程的详细信息
SYS @ prod > select p.spid,p.pid,p.username,ss.sid,ss.serial# from v$process p,v$session ss where p.spid=12269;

SPID PID USERNAME SID SERIAL#
------------ ---------- --------------- ---------- ----------
12269 19 oracle 143 159
12269 19 oracle 144 279
12269 19 oracle 145 100
12269 19 oracle 155 1
12269 19 oracle 156 1
12269 19 oracle 160 1
12269 19 oracle 161 1
12269 19 oracle 162 1
12269 19 oracle 163 1
12269 19 oracle 164 1
12269 19 oracle 165 1
12269 19 oracle 166 1
12269 19 oracle 167 1
12269 19 oracle 168 1
12269 19 oracle 169 1
12269 19 oracle 170 1

kill session
SYS @ prod > alter system kill session '145,100';

System altered.

SYS @ prod > select p.spid,p.pid,p.username,ss.sid,ss.serial# from v$process p,v$session ss where p.spid=12269;

SPID PID USERNAME SID SERIAL#
------------ ---------- --------------- ---------- ----------
12269 19 oracle 143 174
12269 19 oracle 144 279
12269 19 oracle 155 1
12269 19 oracle 156 1
12269 19 oracle 160 1
12269 19 oracle 161 1
12269 19 oracle 162 1
12269 19 oracle 163 1
12269 19 oracle 164 1
12269 19 oracle 165 1
12269 19 oracle 166 1
12269 19 oracle 167 1
12269 19 oracle 168 1
12269 19 oracle 169 1
12269 19 oracle 170 1

操作系统层面杀掉 进程
[root@ora10g ~]# kill -9 12269

结论:先查询session 对应的 spid,然后从操作系统层面kill spid 才可以真正的杀掉进程

以下为 eygle的帖子,做参考
http://www.eygle.com/faq/Kill_Session.htm

kill session真的能杀掉进程吗的更多相关文章

  1. 找出 alter system kill session ‘sid,serial#’ kill 掉的数据库会话对应进程

    当我们使用alter system kill session ‘sid,serial#’ 在数据库中kill掉某个会话的时候,如果你观察仔细会发现v$session.paddr发生了改变,从而是的不能 ...

  2. oracle kill session

    kill session 是DBA经常碰到的事情之一.如果kill 掉了不该kill 的session,则具有破坏性,因此尽可能的避免这样的错误发生.同时也应当注意,如果kill 的session属于 ...

  3. Oracle中Kill session的研究(转 出自eagle)

    itpub link: http://www.itpub.net/235873.html 我们知道,在Oracle数据库中,可以通过kill session的方式来终止一个进程,其基本语法结构为: a ...

  4. ORACLE 中KILL session

    我们知道,在Oracle数据库中,可以通过kill session的方式来终止一个进程,其基本语法结构为: alter system kill session 'sid,serial#' ; 被kil ...

  5. oracle查看被锁的表和被锁的进程,杀掉进程

    -- 1. 查看被锁的表 SELECT p.spid, a.serial#, c.object_name, b.session_id, b.oracle_username,b.os_user_name ...

  6. Oracle彻底杀掉进程

    kill session 是DBA经常碰到的事情之一.如果kill 掉了不该kill 的session,则具有破坏性,因此尽可能的避免这样的错误发生.同时也应当注意,如果kill 的session属于 ...

  7. centos下shell脚本kill掉mysql锁表进程【笔记】

    前几天发现服务器上的mysql出现锁表了,show processlist后发现好多都是因为写进session才锁表的,看到这个想起了会不会是硬盘空间不够了,马上查看了服务器硬盘空间,发现都100%了 ...

  8. Kill Session

    有时候创建索引或修改表字段时,会提示资源正忙,可以查出表对应的进程并kill掉 select l.session_id,o.owner,o.object_name from v$locked_obje ...

  9. orakill和ALTER SYSTEM KILL SESSION详解

    --orakill和ALTER SYSTEM KILL SESSION详解[转]-----------------------------------------2013/11/05 一个用户进程偶尔 ...

随机推荐

  1. bzoj3631

    其实这道题其实可以转化为这样一个问题 给定n-1对点,将这两点x,y间简单路径上的点(包括起点终点)权值+1 (最后再把除了起点外的点的权值-1,注意终点没糖吃) 求每个点的权值 首先想到的是先找LC ...

  2. 深入浅出Node.js (9) - 玩转进程

    9.1 服务模型的变迁 9.1.1 石器时代:同步 9.1.2 青铜时代:复制进程 9.1.3 白银时代:多线程 9.1.4 黄金时代:事件驱动 9.2 多进程架构 9.2.1 创建子进程 9.2.2 ...

  3. C#调用C++动态库(dll)

    在实际软件开发过程中,由于公司使用了多种语言开发,在C#中可能需要实现某个功能,而该功能可能用其他语言已经实现了,那么我们可以调用其他语言写好的模块吗?还有就是,由于C#开发好的项目,我们可以利用re ...

  4. C#中的四舍五入算法

    最近在产品开发过程中遇到一个问题,就是在对数值进行截取,例如说保留两位小数时,最终得到的结果跟预期的在某些情况下会产生差异,这个差异的表现就是最后一位与预期的不一致,也就是说在"四舍五入&q ...

  5. 关于 all-delete-orphan

    当关联双方存在父子关系,就可以在 set 处设定 cascade 为 all-delete-orphan 所谓父子关系,即指由父方控制子方的持久化圣明周期,子方对象必须和一个父方对象关联.如果删除父方 ...

  6. (转)java多线程的一篇好文

    云转型基石ThinkServer特性解析 2013-05-29 10:47 佚名 importnew 字号:T | T 本文只是一些针对初学者或者新手的问题,如果你已经具备良好的基础,那么你可以跳过本 ...

  7. [git] git 分支( branch ) 的基本使用

    分支( branches ) 是指在开发主线中分离出来,做进一步开发而不影响到原来主线. Git 存储的不是一系列的更改集( changeset ),而是一系列快照.当你执行一次 commit 时, ...

  8. Redis学习记录之Java中的初步使用

    1.关于Redis redis下载地址:<span style="font-family: Arial, Helvetica, sans-serif;">http:// ...

  9. js实现table中前端搜索(模糊查询)

    项目中用到js前端搜索功能,根据 姓名或姓名 进行 搜索,实现方法如下,遍历table所有行中的某列,符合条件则置tr为display:'',不满足条件置tr为display:none. 代码如下: ...

  10. 解决apache服务器本地可以访问,同局域网内他人不能访问的问题(转)

    问题提出:发现这个问题时,我同学让我做好的网页小案例给他看看,我是用wamp搭建的本地服务器,本地访问地址例如为: http://localhost/Dedecms/index.php 对于其他人要访 ...