首页 / ORACLE / oracle死锁问题排查
oracle死锁问题排查
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了oracle死锁问题排查,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1775字,纯文字阅读大概需要3分钟。
内容图文
![oracle死锁问题排查](/upload/InfoBanner/zyjiaocheng/1149/555bcf46640e44139c8be0d94d96700f.jpg)
这个是我之前在项目组里面,有一个功能模块写了一个很复杂的sql存储过程,每次做业务都调用存储过来处理逻辑。
当多人同时做业务调用这个存储过程的时候,页面没法响应一直卡死在哪里,后面请教过专业的dba排查过问题,是存储过程里面的某部分insert,update操作导致死锁了。
现在讲排查死锁的步骤总结如下:
1、查行锁:
column event format a30
column sess format a20
set linesize 150
break on id1 skip 1
select decode(request,0,‘Holder:‘,‘ Waiter:‘) || s.inst_id || ‘:‘ || s.sid||‘,‘|| s.serial# sess,
id1, id2, lmode, request, l.type, ctime, s.sql_id, s.event,s.last_call_et
from gv$lock l, gv$session s
where (id1, id2, l.type) in
(select id1, id2, type from gv$lock where request>0)
and l.sid=s.sid
and l.inst_id=s.inst_id
order by id1, ctime desc, request;
2、通过查行锁定位出来存储过程里面是哪些sql导致的死锁:
导致锁表的sqlId:
select sql_text from gv$sql where sql_id=‘9g5813my4anbt‘; 这个是查具体sql语句
一下为死锁相关的表,通过dba权限去查看:
SELECT * FROM v$lock;
SELECT * FROM v$sqlarea;
SELECT * FROM v$session;
SELECT * FROM v$process ;
SELECT * FROM v$locked_object;
SELECT * FROM all_objects;
SELECT * FROM v$session_wait;
--查看被锁的表
select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id;
--查看那个用户那个进程照成死锁
select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time;
--查看连接的进程
SELECT sid, serial#, username, osuser FROM v$session;
--3.查出锁定表的sid, serial#,os_user_name, machine_name, terminal,锁的type,mode
SELECT s.sid, s.serial#, s.username, s.schemaname, s.osuser, s.process, s.machine,
s.terminal, s.logon_time, l.type
FROM v$session s, v$lock l
WHERE s.sid = l.sid
AND s.username IS NOT NULL
ORDER BY sid;
这个语句将查找到数据库中所有的DML语句产生的锁,还可以发现,
任何DML语句其实产生了两个锁,一个是表锁,一个是行锁。
--杀掉进程 sid,serial#
4、最后的解决办法就是要去优化存储过程,或者从业务方面就行优化才得到解决,我们当时对几张几千万数据的大表做了表分区处理,按年份把不同年份的数据落到
不同的数据文件里面,希望通过我真实遇到的问题以及解决的技术方案对大家有所帮助!
原文:https://www.cnblogs.com/cx-20190810/p/11331230.html
内容总结
以上是互联网集市为您收集整理的oracle死锁问题排查全部内容,希望文章能够帮你解决oracle死锁问题排查所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。