一些ORACLE中的进程被杀掉后,状态被置为"killed",但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库。现在提供一种方法解决这种问题,那就是在ORACLE中杀不掉的,在OS一级再杀。
1.下面的语句用来查询哪些对象被锁:
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 '24,111';
(其中24,111分别是上面查询出的sid,serial#)
【注】以上两步,可以通过Oracle的管理控制台来执行。
3.如果利用上面的命令杀死一个进程后,进程状态被置为"killed",但是锁定的资源很长时间没有被释放,那么可以在os一级再杀死相应的进程(线程),首先执行下面的语句获得进程(线程)号:
select spid, osuser, s.program from v$session s,v$process p where s.paddr=p.addr and s.sid=24
(24是上面的sid)
4.在OS上杀死这个进程(线程):
1)在unix上,用root身份执行命令:
#kill -9 12345(即第3步查询出的spid)
2)在windows(unix也适用)用orakill杀死线程,orakill是oracle提供的一个可执行命令,语法为:
orakill sid thread
其中:
sid:表示要杀死的进程属于的实例名
thread:是要杀掉的线程号,即第3步查询出的spid。
例:c:>orakill orcl 12345
总结:oracle会话被锁是经常的。但有时alter system kill session 'sid,serial#';并不能彻底的杀死会话。只能通过杀死OS上对应的进程才行。
本文向大家介绍Oracle对于死锁的处理方法,包括了Oracle对于死锁的处理方法的使用技巧和注意事项,需要的朋友参考一下 Oracle数据库出现死锁的时候可以按照以下处理步骤加以解决: 第一步:尝试在sqlplus中通过sql命令进行删除,如果能够删除成功,则万事大吉!但通常情况下,出现死锁时,想通过命令行或者通过Oracle的管理工具删除有死锁的session,oracle只会将该sessio
主要内容:1.死锁无知,2.死锁预防,3.避免死锁,4.死锁检测和恢复1.死锁无知 死锁无知是所有机制中使用最广泛的方法。 许多操作系统主要为最终用户使用。 在这种方法中,操作系统假定永远不会发生死锁。 它只是无视死锁。 这种方法最适合用户使用系统仅用于浏览和所有其他常规内容的单个最终用户系统。 正确性和性能之间总是有一个折衷。 Windows和Linux等操作系统主要关注性能。 但是,如果死锁发生的次数是100次,那么系统的性能就会一直下降,如果它始终使用死锁处理
本文向大家介绍Oracle删除死锁进程的方法,包括了Oracle删除死锁进程的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Oracle删除死锁进程的方法。分享给大家供大家参考。具体如下: 步骤1:用以下SQL查看进程列表,判断出被锁定的表 查找被锁表 步骤2 删除进程,如之前的“删除号”查找出的结果为“286, 2184”,则运行以下SQL 删除后不会马上生效一般,要过一会。 希望
本文向大家介绍简单说明Oracle数据库中对死锁的查询及解决方法,包括了简单说明Oracle数据库中对死锁的查询及解决方法的使用技巧和注意事项,需要的朋友参考一下 死锁的原理 当对于数据库某个表的某一列做更新或删除等操作,执行完毕后该条语句不提 交,另一条对于这一列数据做更新操作的语句在执行的时候就会处于等待状态, 此时的现象是这条语句一直在执行,但一直没有执行成功,也没有报错。 死锁的定位
“死锁”页面显示在 Navicat Monitor 有相关信息的已选择实例上检测到的所有死锁。 所有受监控的实例都显示在左侧窗格中。选择一个实例来显示其死锁。 默认情况下,死锁列表每 5 秒自动刷新一次。如果你想更改自动刷新时间,请使用“刷新时间”下拉菜单。若要暂停自动刷新,请点击 。 死锁可以被筛选。只需在“搜索死锁”框中输入搜索字符串即可筛选列表。 若要更改每页显示的死锁数量,请点击“X /
问题内容: 有时,对于仅作为Select查询的存储过程,会出现以下错误: 我最初的理解是,选择查询不会锁定表,也不会导致死锁,即使它试图查询的表正在被另一个进程更新/锁定,但似乎选择查询会导致死锁,因为出色地。 如果我将隔离级别设置为查询未提交,那可以解决问题吗? 问题答案: 我的初步理解是,Select查询不会锁定表,也不会导致死锁 这种理解是错误的。SELECT查询在其分析的行上使用共享锁。共
本文向大家介绍详解MySQL(InnoDB)是如何处理死锁的,包括了详解MySQL(InnoDB)是如何处理死锁的的使用技巧和注意事项,需要的朋友参考一下 一、什么是死锁 官方定义如下:两个事务都持有对方需要的锁,并且在等待对方释放,并且双方都不会释放自己的锁。 这个就好比你有一个人质,对方有一个人质,你们俩去谈判说换人。你让对面放人,对面让你放人。 二、为什么会形成死锁 看到这里,也许你会有这样
本文向大家介绍Oracle数据表中的死锁情况解决方法,包括了Oracle数据表中的死锁情况解决方法的使用技巧和注意事项,需要的朋友参考一下 在进行数据库管理的过程中,经常会出现数据表被用户的一些不合理操作而导致表被锁定的情况,以下主要介绍如何查找哪些表被哪个用户所锁定,以及如何解除锁定: 1.查找被锁定的表: 如果想知道具体是哪个进程阻塞了哪个进程,可用以下语句查看: 或 2.确定锁定表用户的si