如何杀掉带锁的oracle进程

未来依然很美好

未来依然很美好

2016-02-19 15:40

人生本是一个不断学习的过程,在这个过程中,图老师就是你们的好帮手,下面分享的如何杀掉带锁的oracle进程懂设计的网友们快点来了解吧!

经常会遇到一个问题是:在ORACLE中,状态已被置为"killed"的进程长时间锁定系统资源,不释放,有一个比重启数据库更好的方法,就是在操作系统级强行杀掉那些进程。

  1.下面的语句用来查询哪些对象被锁:

  col object_name for a30

  col machine for a20

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  select object_name,machine,s.sid,s.serial#

  from v$locked_object l,dba_objects o ,v$session s

  where l.object_id = o.object_id and l.session_id=s.sid;

  2.下面的语句用来杀死一个进程:

  alter system kill session '42,21993'; (其中24,111分别是上面查询出的sid,serial#)

  可以用如下查询批量得到上面类似的语句:

  select 'alter system kill session '''   ||s.sid||','||s.serial#||'''; '

  from v$locked_object l,dba_objects o ,v$session s

  where l.object_id = o.object_id and l.session_id=s.sid;

  3.如果利用上面的命令杀死一个进程后,进程状态被置为 "killed", 但是锁定的资源很长时间没有被释放,那么可以在os一级再杀死相应的进程(线程),首先获得进程(线程)号:

  select spid, osuser, s.program

  from v$session s,v$process p

  where s.paddr=p.addr and s.sid=#sid; (#sid是上面的sid)

  4.在操作系统中杀掉相应的进程(线程):

  1)在Linux上,用root身份执行命令:

  kill -9 12345(12345是第3步查询出的spid)

  2)在windows 用orakill杀死线程,orakill是oracle提供的一个可执行命令,语法为:orakill sid thread

  其中:

  sid:表示要杀死的进程属于的实例名

  thread:是要杀掉的线程号,即第3步查询出的spid。

  例:c:orakill orcl 12345

  完全可以写一个组合查询的存储过程来自动执行上述四步操作,方便地杀光所有不自动释放资源的进程,但一般情况下不推荐这样做,毕竟在系统中用root用户kill进程本身就是带有一定风险的!

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)
展开更多 50%)
分享

猜你喜欢

如何杀掉带锁的oracle进程

编程语言 网络编程
如何杀掉带锁的oracle进程

查看当前进程,或死锁进程,并能自动杀掉死进程

SQLServer
查看当前进程,或死锁进程,并能自动杀掉死进程

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

如何杀死oracle死锁进程

电脑网络
如何杀死oracle死锁进程

教你杀掉进程里的木马程序

windows 操作系统
教你杀掉进程里的木马程序

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

手机卫士如何开启锁屏清理进程

手机软件 应用软件
手机卫士如何开启锁屏清理进程

Oracle 9i锁

编程语言 网络编程
Oracle 9i锁

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

快速重置Win8任务管理器的技巧两则

快速重置Win8任务管理器的技巧两则

jquery tools之tooltip

jquery tools之tooltip
下拉加载更多内容 ↓