oracle死锁总数怎么查 oracle查看死锁表
查询oracle 数据库里有哪些表锁死
用如下语句查询锁死的表:
成都创新互联公司是一家朝气蓬勃的网站建设公司。公司专注于为企业提供信息化建设解决方案。从事网站开发,网站制作,网站设计,网站模板,微信公众号开发,软件开发,小程序开发,十载建站对三维植被网等多个行业,拥有丰富的网站维护经验。
select p.spid,
a.serial#,
c.object_name,
b.session_id,
b.oracle_username,
b.os_user_name
from v$process p, v$session a, v$locked_object b, all_objects c
where p.addr = a.paddr
and a.process = b.process
and c.object_id = b.object_id;
其中object_name就是被锁的表名,如图:
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的死锁?
如果真的出现过行死锁的话 会有ora-00060错误出现在alert.log中,所以很容易查
咨询一个问题:oracle产生了死锁,很多表被锁住了,如何查找引起死锁的源头进程?
标准的答案!下面3个语句是我经常使用来解决oracle锁问题的--注意你的用户有没有权限问题
1.查看被锁的表
SELECTp.spid,a.serial#,c.object_name,b.session_id,b.oracle_username,
b.os_user_name
FROMv$processp,v$sessiona,v$locked_objectb,all_objectsc
WHEREp.addr=a.paddrANDa.process=b.process
ANDc.object_id=b.object_id
2.查看是哪个进程锁的
SELECTsid,serial#,username,osuserFROMv$sessionwhereosuser='tangpj'
3.杀掉这个进程altersystemkillsession'sid,serial#';
如何查询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死锁问题一直困扰着我们,下面就教您一个oracle死锁的检查方法,如果您之前遇到过oracle死锁方面的问题,不妨一看。 一、数据库死锁的现象 程序在执行的过程中,点击确定或保存按钮,程序没有响应,也没有出现报错。 二、oracle死锁的原理 当对于数据库某个表的某一列做更新或删除等操作,执行完毕后该条语句不提交,另一条对于这一列数据做更新操作的语句在执行的时候就会处于等待状态,此时的现象是这条语句一直在执行,但一直没有执行成功,也没有报错。 三、oracle死锁的定位方法 通过检查数据库表,能够检查出是哪一条语句被死锁,产生死锁的机器是哪一台。 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用户执行以下语句,可以查看到被死锁的语句。 以下是代码片段:
分享名称:oracle死锁总数怎么查 oracle查看死锁表
文章链接:http://ybzwz.com/article/hpiegp.html