找出 alter system kill session ‘sid,serial#’ kill 掉的数据库会话对应进程
当我们使用alter system kill session ‘sid,serial#’ 在数据库中kill掉某个会话的时候,如果你观察仔细会发现v$session.paddr发生了改变,从而是的不能直接通过关联v$process.add找出spid,然后进行其他操作.本文提供三种方法找该种情况下spid的方法.
数据库版本
SQL> select * from v$version; BANNER ----------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production PL/SQL Release 11.2.0.3.0 - Production CORE 11.2.0.3.0 Production TNS for Linux: Version 11.2.0.3.0 - Production NLSRTL Version 11.2.0.3.0 - Production |
会话1
SQL> select sid, SERIAL#,paddr from v$session where 2 sid=( select sid from v$mystat where rownum=1); SID SERIAL# PADDR ---------- ---------- -------- 133 53 35FE16F4 |
会话2
SQL> select sid, SERIAL#,paddr from v$session where 2 sid=( select sid from v$mystat where rownum=1); SID SERIAL# PADDR ---------- ---------- -------- 143 21 35FE2D3C |
会话3
SQL> alter system kill session '133,53' ; System altered. SQL> alter system kill session '143,21' ; System altered. SQL> select sid, SERIAL#,paddr,status from v$session where sid in (133,143); SID SERIAL# PADDR STATUS ---------- ---------- -------- ---------------- 133 53 3547A3F4 KILLED 143 21 3547A3F4 KILLED |
证明alter system kill session后,v$session中的paddr发生了改变,这个时候如果需要找出原来的spid,不能使用v$session.paddr和v$process.addr关联获得
找出kill掉的spid方法1
SQL> select spid, program from v$process 2 where program!= 'PSEUDO' 3 and addr not in ( select paddr from v$session) 4 and addr not in ( select paddr from v$bgprocess) 5 and addr not in ( select paddr from v$shared_server); SPID PROGRAM ------------------------------------------------ ------------------------------ 14260 oracle@xifenfei (L001) 14256 oracle@xifenfei (L000) 15300 oracle@xifenfei (TNS V1-V3) 14179 oracle@xifenfei (D000) 15318 oracle@xifenfei (TNS V1-V3) 14252 oracle@xifenfei (N000) SQL> !ps -ef|grep 15300|grep -v grep oracle 15300 14052 0 03:22 ? 00:00:00 oracleora11g (DESCRIPTION=( LOCAL =YES)(ADDRESS=(PROTOCOL=beq))) SQL> !ps -ef|grep 15318|grep -v grep oracle 15318 15315 0 03:22 ? 00:00:00 oracleora11g (DESCRIPTION=( LOCAL =YES)(ADDRESS=(PROTOCOL=beq))) |
找出kill 掉的spid 方法2
SQL> SELECT s.username,s.status, 2 x.ADDR,x.KSLLAPSC,x.KSLLAPSN,x.KSLLASPO,x.KSLLID1R,x.KSLLRTYP, 3 decode(bitand (x.ksuprflg,2),0, null ,1) 4 FROM x$ksupr x,v$session s 5 WHERE s.paddr(+)=x.addr 6 and bitand(ksspaflg,1)!=0; USERNAME STATUS ADDR KSLLAPSC KSLLAPSN KSLLASPO KSLLID1R KSLL DE ---------- ---------------- -------- ---------- ---------- ------------------------ ---------- ---- -- ACTIVE 35FD5990 6 26 14121 0 1 ACTIVE 35FD6FD8 1 69 14055 0 1 ACTIVE 35FD8620 1 69 14055 0 1 ACTIVE 35FD9C68 1 69 14055 0 1 ACTIVE 35FDB2B0 8 27 15300 0 1 ACTIVE 35FDC8F8 12 36 15300 0 1 ACTIVE 35FDDF40 1 69 14055 0 1 ACTIVE 35FDF588 1 69 14055 0 1 ACTIVE 35FE3860 7 26 14236 0 1 ACTIVE 35FE4EA8 1 69 14224 0 1 ACTIVE 35FE64F0 63 2 14311 377 EV 1 ACTIVE 35FEA7C8 3 26 14155 258 EV 1 ACTIVE 35FE9180 59 2 14248 378 EV 1 ACTIVE 35FE9CA4 12 2 14603 0 1 ACTIVE 35FD64B4 1 69 14055 0 1 ACTIVE 35FD7AFC 2 27 14055 0 1 ACTIVE 35FD9144 2 27 15300 0 1 ACTIVE 35FDA78C 3 26 14171 0 1 ACTIVE 35FDBDD4 17 2 15255 0 1 ACTIVE 35FDD41C 22 26 14155 0 1 ACTIVE 35FDEA64 52 26 14155 0 1 ACTIVE 35FE4384 1 69 14224 0 1 ACTIVE 35FE59CC 1 69 14224 0 1 ACTIVE 35FEB2EC 2 2 14248 0 1 ACTIVE 35FEC934 11 26 14121 0 1 SYS ACTIVE 35FEF5C4 4 16 14117 0 35FE0BD0 1 69 14055 0 35FE865C 1 69 14117 0 35FE7B38 1 69 14117 0 35FE16F4 1 26 14155 0 35FD4E6C 0 0 0 35FE00AC 2 279 14117 0 35FE2D3C 0 0 0 35FE7014 2 335 14117 0 --挑选username和status为null的会话 SQL> select spid,program from v$process where addr in ( 2 '35FE0BD0' , 3 '35FE865C' , 4 '35FE7B38' , 5 '35FE16F4' , 6 '35FD4E6C' , 7 '35FE00AC' , 8 '35FE2D3C' , 9 '35FE7014' 10 ); SPID PROGRAM ------------------------------------------------ ------------------------------ PSEUDO 14179 oracle@xifenfei (D000) 14183 oracle@xifenfei (S000) 15300 oracle@xifenfei (TNS V1-V3) 15318 oracle@xifenfei (TNS V1-V3) 14252 oracle@xifenfei (N000) 14256 oracle@xifenfei (L000) 14260 oracle@xifenfei (L001) 8 rows selected. --同样可以发现spid 15300和15318的进程已经在数据库中被kill掉 |
找出kill掉的spid方法3(11g特有)
SQL> select spid,program from v$process where addr in 2 ( select creator_addr from v$session where sid in (133,143)); SPID PROGRAM ------------------------------------------------ ------------------------------ 15300 oracle@xifenfei (TNS V1-V3) 15318 oracle@xifenfei (TNS V1-V3) |
找出kill掉的spid方法4(11g特有)
SQL> select * from V$DETACHED_SESSION; INDX PG_NAME SID SERIAL# PID ---------- ------------------------------------------------------------ ---------- ---------- ---------- 0 DEFAULT 143 21 21 1 DEFAULT 133 53 19 SQL> select spid,program from v$process where pid in (21,19); SPID PROGRAM ------------------------------------------------ ------------------------------ 15300 oracle@xifenfei (TNS V1-V3) 15318 oracle@xifenfei (TNS V1-V3) |
找出 alter system kill session ‘sid,serial#’ kill 掉的数据库会话对应进程的更多相关文章
- 如何查找僵尸进程并Kill之,杀不掉的要查看父进程并杀之
转自:如何查找僵尸进程并Kill之,杀不掉的要查看父进程并杀之 用ps和grep命令寻找僵尸进程#ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'命令注解:-A ...
- oracle can't kill session
oracle 在杀会话时,会出现杀不掉的情况. 原因是在回滚大事物 解决方法: alter system disconnect session 'sid, serial#' immediate; ...
- orakill和ALTER SYSTEM KILL SESSION详解
--orakill和ALTER SYSTEM KILL SESSION详解[转]-----------------------------------------2013/11/05 一个用户进程偶尔 ...
- 会话执行存储过程,等待被阻塞,Kill session场景模拟
本次场景来源: 通知某个会话:执行execute addupp(1,'five');类似的存储过程,会话等待:(会话等待两种情况:一种确实执行,但是未完成:另一种就是执行的操作无法获取资源,等待资源释 ...
- oracle kill session
kill session 是DBA经常碰到的事情之一.如果kill 掉了不该kill 的session,则具有破坏性,因此尽可能的避免这样的错误发生.同时也应当注意,如果kill 的session属于 ...
- Oracle中Kill session的研究(转 出自eagle)
itpub link: http://www.itpub.net/235873.html 我们知道,在Oracle数据库中,可以通过kill session的方式来终止一个进程,其基本语法结构为: a ...
- ORACLE 中KILL session
我们知道,在Oracle数据库中,可以通过kill session的方式来终止一个进程,其基本语法结构为: alter system kill session 'sid,serial#' ; 被kil ...
- 授权其他数据库用户kill session
授权其他数据库用户kill session kill session权限 CREATE OR REPLACE PROCEDURE P_KILL_SESSION(P_USER IN VARCHAR2, ...
- ALTER SYSTEM ARCHIVELOG CURRENT挂起案例
最近两天,一台ORACLE数据库的作业执行delete_ob_get_epps.sh脚本清理过期备份时,执行下面SQL语句就会被阻塞,在监控工具DPA里面部分截图如下(图片分开截断) sql 'alt ...
随机推荐
- P1726 上白泽慧音(0分)
题目描述 在幻想乡,上白泽慧音是以知识渊博闻名的老师.春雪异变导致人间之里的很多道路都被大雪堵塞,使有的学生不能顺利地到达慧音所在的村庄.因此慧音决定换一个能够聚集最多人数的村庄作为新的教学地点.人间 ...
- What is the difference between arguments and parameters?
What is the difference between arguments and parameters? Parameters are defined by the names that ap ...
- [转]opencv学习资料
转自:http://blog.csdn.net/poem_qianmo/article/details/20537737 1:Mat imread(const string& filename ...
- 【摘录】JAVA内存管理-自动选择垃圾收集器算法
在J2SE 5.0,垃圾收集的默认值:垃圾收集器.堆大小以及JVM的类型(客户端还是服务器)都会根据应用运行的硬件平台和操作系统自动选择.相比之前设置命令行参数的方式,自动选择很好的匹配了不同类型的应 ...
- 七天C#小结
从基础的理论知识,到最后一天,能够理解并且自己编写出一些经典的事例,自己期初觉得不会这么快,几乎是零基础的自己从什么都不会,到七天后能够独立思考并且编写出100多行的代码,自己还是有些欣慰的,从点到面 ...
- unity 模型 材质 贴图 关系;着色器属性
模型包含 材质(Material),包括 [核心]着色器(Shader) 贴图和其他参数,贴图也算是一种参数 其他,如网格渲染器(Mesh Renderer).动画.坐标 一个材质可以看做为一个Sha ...
- python简单的购物系统
#coding = utf-8 #2016-11-19#我的工资是存在文件中的,执行后会判断是否存过工资,如果存过无需输入,直接购物,没存过需要输入工资#wages.txt是存工资的文件 import ...
- Python-ORM实战
Date: 2019-06-03 Author: Sun 什么是ORM? ORM(object relational mapping), 就是对象关系映射,简单来说我们类似python这种面向对象 ...
- Python-超好用的Django源码解析
http://djangobook.py3k.cn/2.0/
- TCP/IP 三次握手和HTTP过程
0 引言 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接.TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上. 1 T ...