一个用户进程偶尔会挂起或占用过多资源而拒绝其它会话。如果DBA依然能够访问数据库,她通常可以发出以下查询:

select s.username, s.osuser,

s.sid, s.serial#, p.spidfrom

v$session s,v$process p

where s.paddr = p.addrand

s.username is not null;

select 'alter system kill session

',''''||trim(t2.sid)||','||trim(t2.serial#)||''';'

from v$locked_object t1,v$session t2 where t1.session_id=t2.sid

order by t2.logon_time;

这个查询将返回数据库用户名、操作系统用户名、会话 ID,序列号和系统进程 ID(SPID)。然后,DBA

用户就可以发出以下命令(前面的查询返回的使用 SID 和SERIAL# 信息):ALTER SYSTEM KILL SESSION

'sid,serial#';

ALTER SYSTEM KILL SESSION '9,203';使用这条语句有两个问题。

第一:分配给这个进程的任何锁或资源在会话完全超时之前不会被释放。

第二:查询和 kill 命令需要能够访问数据库。如果一个进行失去控制,那么数据库访问可能会出现问题。

在一个 UNIX 数据库中,下一步是 ps 命令输出的 UNIX 提示中定位进程(同样是查找 OSUSER 和 SPID 等

ID)然后使用 kill -9 spid 结束失控的后台进程。然而,在 Windows 中,只有一个进程

ORACLE.EXE,而且用户连接是在 Windows 线程中处理的,而不在进程中处理的。如果使用 Windows 任务管理器结束

Oracle 线程,就有可能影响所有用户和后台线程,并导致数据库崩溃。

出于这些原因,Oracle 在Oracle Home/bin 目录下提供了一个 orakill.exe

命令,这个命令的参数与ALTER SYSTEM KILL SESSION

相同,但是不要求数据库连接。要定位一个特定的线程,需要寻找一个能够显示属于一个进程的所有线程的程序。Windows

任务管理器只能显示线程数和进程。你需要从微软的资源工具包中寻找一个用于 Windows 2000 和 NT

的工具程序,比如免费的QuickSlice,或者Qslice.exe(该工具是基于 Windows

的),或者PStat(Pstat.exe 是一个命令行工具)。简单地在 orakill 命令后输入线程 ID(以十进制表示)和 SID

即可:

orakill

orakill ORCL 2760

"Kill of

thread id 2760 in instance ORCL successfully signalled[sic]."

应该只有在不能访问数据库来执行ALTER SYSTEM KILL SESSION

的情况才使用orakill。如果意外结束了一个必要的后台进程,比如

PMON,那么很可能会导致数据库崩溃。新手永远不要这样做。

Orakill的使用方法如下:Dos提示符下:>orakill sid

thread说明: sid

Oracle的Sid号threadOracle的线程id号

在Sql*plus工具里面可以查询到Oracle的线程号sql:>Select p.spid THREADID, s.osuser,

s.programFrom

v$process p, v$session sWhere p.addr = s.paddr

结果如下:

THREADIDOSUSERPROGRAM

--------- -----------------------

-----------------------------

169SYSTEMORACLE.EXE

215SYSTEMORACLE.EXE

280SYSTEMORACLE.EXE

267SYSTEMORACLE.EXE

287SYSTEMORACLE.EXE

288SYSTEMORACLE.EXE

271SYSTEMORACLE.EXE282SYSTEMORACLE.EXE239PROD_NTdjonesSVRMGRL.EXE

281SSMITH-PCssmithSQLPLUSW.EXE

12 rows selected.

需要注意的是,如果你Kill掉的是Oracle的核心后台线程(DBWR, LGWR, SMON or

PMON),将导致Oracle实例关闭。检查Oracle的核心后台线程的方法如下:sql:>Select

vb.name NOME, vp.programe PROCESSNAME, vp.spid THREADID, vs,sid

SID

From v$session vs, v$process vp, v$bgprocess vb

Where vb.addr <> ‘00’ and

vb.paddr = vp.addr and

vp.addr = vs.paddr

查询结果如下:

NOMEPROCESSNAMETHREADIDSID

----- ----------------------------------- --------- ------

PMONORACLE.EXE1691

DBW0ORACLE.EXE2152

LGWRORACLE.EXE2803

CKPTORACLE.EXE2674

SMONORACLE.EXE2875

RECOORACLE.EXE2886

SNP0ORACLE.EXE2717

SNP1ORACLE.EXE2828

8 rows selected.

window xp + oracle 9.2.0.1

================

orakill的用法

================SQL> SELECT spid, osuser,

s.program,sidFROM

v$process p, v$session sWHERE

p.addr=s.paddr;

SPIDOSUSERPROGRAMSID

------------------------ -------------------- ---------------

----------

6928SYSTEMORACLE.EXE1

5272SYSTEMORACLE.EXE2

7008SYSTEMORACLE.EXE3

6588SYSTEMORACLE.EXE4

6780SYSTEMORACLE.EXE5

6128SYSTEMORACLE.EXE6

6740SYSTEMORACLE.EXE7

6684SYSTEMORACLE.EXE8

7092SYSTEMORACLE.EXE9

6272SYSTEMORACLE.EXE10

4760lifeng.fangsqlplus.exe12

SPIDOSUSERPROGRAMSID

------------------------ -------------------- ---------------

----------

6484lifeng.fangsqlplus.exe11

4284

语法:orakill 实例名 spid(在win上是线程号)

SQL> host orakill charset 6484;

Kill of thread id 6484 in instance charset successfully

signalled.

spid是os进程ID

pid是Oracle process ID

根据盖国强的猜测

当在Oracle中kill session以后, Oracle只是简单的把相关session的paddr

指向同一个虚拟地址.此时v$process和v$session失去关联,进程就此中断.然后Oracle就等待PMON去清除这些Session.所

以通常等待一个被标记为Killed的Session退出需要花费很长的时间.如果此时被Kill的process,重新尝试执行任务,那么马上会收到进

程中断的提示,process退出,此时Oracle会立即启动PMON来清除该session.这被作为一次异常中断处理.

具体的实验例子读者可以参考

http://www.eygle.com/faq/Kill_Session.htm

当然如果该用户已经没有使用,例如在决定删除该用户的时候,PMON很可能不回自动的去清理这些session则需要手工触发PMON执行

首先确认PMON进程是whoSQL> select pid,spid

from v$process p,v$bgprocess b

where b.paddr=p.addr

and name='PMON';

PID SPID

---------- ------------

2 3608

SQL> oradebug wakeup 2已处理的语句

oracle alter system kill,ALTER SYSTEM KILL SESSION详解相关推荐

  1. php mysql修改命令_PHP编程:mysql alter table命令修改表结构实例详解

    <PHP编程:mysql alter table命令修改表结构实例详解>要点: 本文介绍了PHP编程:mysql alter table命令修改表结构实例详解,希望对您有用.如果有疑问,可 ...

  2. (116)System Verilog类合成(类包含关系)详解

    (116)System Verilog类合成(类包含关系)详解 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog类合成(类包含关系)详解 ...

  3. Oracle Golden Gate 11.2.0.3安装详解

    Oracle Golden Gate 11.2.0.3安装详解 环境 环境变量 安装OGG软件 开始OGG配置 配置源端数据库 源端OGG配置 配置目标端数据库 目标端OGG配置 开启同步 环境 ce ...

  4. oracle如何对数据库进行备份,对Oracle数据库进行备份的两种方法详解

    首页 > 演讲稿 > 自我介绍演讲稿 > 对Oracle数据库进行备份的两种方法详解 对Oracle数据库进行备份的两种方法详解 时间:2019-05-05   来源:自我介绍演讲稿 ...

  5. Oracle数据泵备份与恢复 命令 expdp/impdp 用法详解

    Oracle数据泵备份与恢复 命令 expdp/impdp 用法详解 关于expdp和impdp     使用EXPDP和IMPDP时应该注意的事项: EXP和IMP是客户端工具程序,它们既可以在客户 ...

  6. JavaWeb 入门篇 (5) Cookie 和 Session 详解

    Cookie 和 Session 详解 一.会话的概念 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 有状态会话:一个同学来过 ...

  7. oracle中的exists 和 not exists 用法详解

    from:http://blog.sina.com.cn/s/blog_601d1ce30100cyrb.html oracle中的exists 和 not exists 用法详解 (2009-05- ...

  8. java 登录session_JavaWeb Session详解

    记得把这几点描述好咯:代码实现过程 + 项目文件结构截图 + ## Session的由来 上一篇博文介绍了Cookie的相关知识,其中介绍了必须采用一种机制来唯一标识一个用户,同时记录该用户的状态. ...

  9. cookie 和 session 详解

    cookie 和 session 详解 文章目录 cookie 和 session 详解 一.Cookie机制 1.Cookie引入 2.什么是Cookie 3.Cookie的不可跨域名性 4. Un ...

  10. cookie与session详解、url地址重写

    cookie与session详解.url地址重写:https://www.cnblogs.com/l199616j/p/11195667.html

最新文章

  1. python三十七:xml模块
  2. hadoop data join
  3. Qt网络编程——使用OpenCV与TCP搭建图像处理服务器
  4. c语言 字符串 正序再倒序_新特性解读 | MySQL 8.0 索引特性3 -倒序索引
  5. Taro+react开发(21)--注意参数格式
  6. Matlab与C/C++混合编程调用OpenCV
  7. php使用接口实现工厂设计模式
  8. 策略模式/Strategy
  9. windows2003路由和远程访问 试图连接到数据存储时出错
  10. 2017省夏令营Day7
  11. 蓝桥杯2018年第九届C/C++省赛B组第七题-螺旋折线
  12. Linux 怎么shell脚本定时备份mysql数据库
  13. 启动 Tomcat 遇到 Neither the JAVA_HOME nor the JRE_HOME environment variable is defined 问题,已解决
  14. 创意CSS写字本选择器
  15. 期货开户趋势的本质是惯性
  16. 工厂模式 五种写法总结
  17. 讯飞智能录音笔SR502:支持OCR识别功能的职场礼物
  18. python第十四课 面向对象(三)
  19. cos相似度算法 余弦距离计算
  20. Python程序来计算球体的体积和面积

热门文章

  1. 如何将两段音乐合并成一段?
  2. 怎么让计算机唱歌视频教程,如何制作快手唱歌视频
  3. android模拟器登录用户,如何在模拟器上登录小米账号的游戏
  4. 使用IDM下载软件下载百度云网盘里的资源,以Chrome浏览器为例
  5. 未雨绸缪,数据保护之NBU介质备份
  6. Cesium中的Heading/Pitch/Roll
  7. python数据结构之递归
  8. java的ui自动化测试框架_UI自动化测试框架
  9. 2022手机商城源码h5运营版本
  10. go程序设计语言-前言