1、发现死锁
select count(*) from v$locked_object;
如果有输出即表示有死锁
select session_id from v$locked_object ;
查询到死锁的sid(session_id与sid是相同的)
2、通过oracle查杀会话的方式解决死锁
SYS@test11g> select SID,SERIAL# from v$session where sid = 68 or sid = 256;
3、杀掉死锁会话
SYS@test11g> alter system kill session'68,1063';
##################################################################################
在实际生产中存在很多情况在数据库里查杀session的方式不能解决死锁问题导致死锁还在所以需要使用
在系统里查找spid查杀进程的方式处理死锁
#################################################################################
4、通过pid查找到系统所对应的进程号即spid
select a.sid,a.paddr,b.addr,b.spid from v$session a,v$process b where a.paddr=b.addr and sid = 232;
此处sid为上一步查找到的session_id
此时查找到了spid
5、退出oracle进入系统查找该进程
ps -ef|grep (spid)
此时spid为查到的spid 查看确认此进程
杀死 kill -9 spid
处理结束