您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

如何杀死oracle死锁进程

2024/7/25 18:57:48发布28次查看
方法一:oracle的死锁非常令人头疼,总结了一些点滴经验作为学习笔记 1.查哪个过程被锁 查v$db_object_cache视图: select*fromv$db_object_cachewhereowner='过程的所属用户'andlocks!='0'; 2. 查是哪一个sid,通过sid可知道是哪个session. 查v$access视图:
方法一:oracle的死锁非常令人头疼,总结了一些点滴经验作为学习笔记
1.查哪个过程被锁
查v$db_object_cache视图:
select * from v$db_object_cache where owner='过程的所属用户' and locks!='0';
2. 查是哪一个sid,通过sid可知道是哪个session.
查v$access视图:
select * from v$access where owner='过程的所属用户' and name='刚才查到的过程名';
3. 查出sid和serial#
查v$session视图:
select sid,serial#,paddr from v$session where sid='刚才查到的sid'
查v$process视图:
select spid from v$process where addr='刚才查到的paddr';
4. 杀进程
(1).先杀oracle进程:
alter system kill session '查出的sid,查出的serial#';
(2).再杀操作系统进程:
kill -9 刚才查出的spid

orakill 刚才查出的sid 刚才查出的spid
方法二:
经常在oracle的使用过程中碰到这个问题,所以也总结了一点解决方法:)
1)查找死锁的进程:
sqlplus /as sysdba
select s.username,l.object_id,l.session_id,s.serial#,l.oracle_username,l.os_user_name,l.pro
cess from v$locked_object l,v$session s where l.session_id=s.sid; 
2)kill掉这个死锁的进程:
alter system kill session ‘sid,serial#’;  (其中sid=l.session_id)
3)如果还不能解决,
select pro.spid from v$session ses,v$process pro where ses.sid=xx and ses.paddr=pro.addr;  
 其中sid用死锁的sid替换。
exit
ps -ef|grep spid
其中spid是这个进程的进程号,kill掉这个oracle进程。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product