关于update语句产生的死锁问题,求助

 我来答
司马刀剑
高粉答主

2017-11-15 · 每个回答都超有意思的
知道顶级答主
回答量:4.6万
采纳率:93%
帮助的人:7519万
展开全部
数据库死锁现象
程序执行程点击确定或保存按钮程序没响应没现报错
二、死锁原理
于数据库某表某列做更新或删除等操作执行完毕该条语句提
交另条于列数据做更新操作语句执行候处于等待状态
现象条语句直执行直没执行功没报错
三、死锁定位
通检查数据库表能够检查哪条语句死锁产死锁机器哪台
1)用dba用户执行语句
select username,lockwait,status,machine,program from v$session where sid in
(select session_id from v$locked_object)
输结则说明死锁且能看死锁机器哪台字段说明:
Username:死锁语句所用数据库用户;
Lockwait:死锁状态内容表示死锁
Status: 状态active表示死锁
Machine: 死锁语句所机器
Program: 产死锁语句主要自哪应用程序
2)用dba用户执行语句查看死锁语句
select sql_text from v$sql where hash_value in
(select sql_hash_value from v$session where sid in
(select session_id from v$locked_object))
四、死锁解决
般情况要产死锁语句提交实际执行程用户
能知道产死锁语句哪句程序关闭并重新启
经Oracle使用程碰问题所总结点解决
1)查找死锁进程:
sqlplus "/as sysdba" (sys/change_on_install)
SELECT s.username,l.OBJECT_ID,l.SESSION_ID,s.SERIAL#,
l.ORACLE_USERNAME,l.OS_USER_NAME,l.PROCESS
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进程
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式