如何监控oracle死锁 Oracle查询死锁

如何查看oracle数据库死锁

1、?用SYS登陆TOAD

站在用户的角度思考问题,与客户深入沟通,找到长宁网站设计与长宁网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站设计制作、网站制作、企业官网、英文网站、手机端网站、网站推广、空间域名、虚拟空间、企业邮箱。业务覆盖长宁地区。

2、打开菜单Database-Monitor-SessionBrowser

3、查看所有会话,是否存在锁定资源的情况!

4、?如果有死锁,可以将此会话Kill掉!

oracle怎么查看表死锁住的原因

1.可能在Oracle中可以有计时器,在频繁操作数据库,update,insert,delete语句,在jobs中能查看到(如图)

2.可能在.net程序中使用到timer控件,频繁的操作数据库update,insert,delete语句(如图)

3.可能在.net程序中使用到Thead(线程)频繁的操作数据库update,insert,delete语句(这个条为个人观点,还未得到证实)

【注释】:此处更新数据量都比较大,比如说update的数据库条数可能在1000条以上,

导致其他操作在等待(update跟其他操作都是同一张表)

4.可能使用到事务处理(Tran),没有提交事务(CommintTran)或者没有回滚事务(Rollback)

【注释】:在SqlServer数据库里面有一个隐式事务,关闭时候,每次修改插入都需要手动提交,不然就会导致死锁

如何查询oracle的死锁?

下面查询可以查到死锁,但是注意其实查询到的不是真正的死锁,查询到的只是是死锁发生前的等待条件,真正的死锁在10G中会被系统所阻止掉

select t2.username||' '||t2.sid||' '||t2.serial#||' '||t2.logon_time||' '||t3.sql_text

from v$locked_object t1,v$session t2,v$sqltext t3

where t1.session_id=t2.sid

and t2.sql_address=t3.address

order by t2.logon_time ;

此外,从V$LOCK的BLOCK字段可以看到,BLOCK0表示有等待发生了,注意是行级等待,而在表级没有死锁或等待

select * from v$lock where block0 ;


网页标题:如何监控oracle死锁 Oracle查询死锁
网址分享:http://myzitong.com/article/hejsip.html