重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
oracle死锁时杀进程的方法:
成都创新互联是一家以网络技术公司,为中小企业提供网站维护、网站建设、成都网站制作、网站备案、服务器租用、空间域名、软件开发、成都小程序开发等企业互联网相关业务,是一家有着丰富的互联网运营推广经验的科技公司,有着多年的网站建站经验,致力于帮助中小企业在互联网让打出自已的品牌和口碑,让企业在互联网上打开一个面向全国乃至全球的业务窗口:建站欢迎联系:028-86922220
第一步:尝试在sqlplus中通过sql命令进行删除,如果能够删除成功,则万事大吉。但通常情况下,出现死锁时,想通过命令行或者通过oracle的管理工具删除有死锁的session,oracle只会将该session标记为killed,但无法清除掉,往往需要通过第二步在操作系统层级进行删除。
第二步:
1、select xidusn, object_id, session_id, locked_mode from v$locked_object; --查死锁的对象,获取其SESSION_ID。
2、select username,sid,serial# from v$session where sid=29; --根据上步获取到的sid查看其serial#号。
3、alter system kill session '29,57107'; --删除进程,如已经删除过,则会报ora-00031的错误;否则oracle会将该session标记为killed状态,等待一段时间看能否会自动消失,如长时间消失不掉,则需要做后续步骤。
一些ORACLE中的进程被杀掉后,状态被置为"killed",但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库。现在提供一种方法解决这种问题,那就是在ORACLE中杀不掉的,在OS一级再杀。
1、在系统服务中停止所有oracle的服务。
2、打开控制面板,程序卸载,卸载所有有关oracle的程序。
3、点击“开始,所有程序”找到oracle主程序下的Oracle Installation Products,点击“Universal Installer”。点击卸载,选择所有产品即可。卸载后查看“安装产品”,应该为空。
删除的操作步骤如下:
停用oracle服务,进入计算机中的管理,在服务中,找到oracle开头的一切服务,右点击选择停止。
在开始菜单中,找到Universal Installer,点击运行Oracle Universal Installer,卸载产品。
在所有产品清单的窗口中,打开全部展开,除了OraDb11g_home1外,勾选其他项目,删除。
按Windows键和R键,点击打开运行窗口,输入regedit,打开注册表,依次展开HKEY_LOCAL_MACHINE\SOFTWARE,找到oracle,删除。
接着依次展开HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services中,删除所有oracle开头的选项。
打开HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application,删除里面所有oracle开头的项,在HKEY_CLASSES_ROOT,删除以ora开头的选项。
最后重启电脑,再删除oracle目录,删除Oracle安装目录app等一切。
先用ps命令查看进程ID,在用kill -9 ID命令杀死进程。
求采纳
方法/步骤
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 '137,233'; (其中137,223分别是上面查询出的sid,serial#)
PS.以上两步,可通过Oracle的管理控制台来执行。
如果利用上面的方法杀死进程后,进程状态虽被置为"killed",但是锁定的资源很长时间没有被释放,那么可以在OS一级再杀死相应的进程(线程)
1.首先获得进程(线程)号:
select spid, osuser, s.program
from v$session s,v$process p
where s.paddr=p.addr and s.sid=137 (137是上面的sid)
2.在OS上杀死这个进程(线程):
1)在unix上,用root身份执行命令:
#kill -9 12345(即上面查询出的spid)
2)在windows(unix也适用)用orakill杀死线程,例:c:orakill orcl 12345
orakill是oracle提供的一个可执行命令,语法为:orakill sid thread
其中:
sid:表示要杀死的进程属于的实例名
thread:是要杀掉的线程号,即上面查询出的spid。