怎么检查数据库中哪个表死锁了?
答案:2 悬赏:80 手机版
解决时间 2021-02-07 05:42
- 提问者网友:且恨且铭记
- 2021-02-06 22:27
怎么检查数据库中哪个表死锁了?
最佳答案
- 五星知识达人网友:迟山
- 2021-02-06 23:05
一般采用超时法或事务等待图法:
(1)超时法
如果一个事务的等待时间超过规定时间,就认为发生了死锁。这个实现简单,但不足也很明显。
(2)事务等待图法
事务等待图是一个有向图G=(T, U),T为结点的集合,每个结点表示正在运行的事务;U为边的集合,每条边表示事务等待的情况。若事务T1等待事务T2,则T1,T2之间有一条有向边,从 T1 指向 T2。如果发现图中存在回路,则表示系统中出现了死锁。
发现死锁后,靠事务本身无法打破死锁,必须由DBMS干预。DBMS对死锁一般作下列处理:
● 在循环等待的事务中,选一个事务,将该事务撤销,释放其获得的锁及其它资源;
● 将释放的资源分配给等待该事务的其它事务。
(1)超时法
如果一个事务的等待时间超过规定时间,就认为发生了死锁。这个实现简单,但不足也很明显。
(2)事务等待图法
事务等待图是一个有向图G=(T, U),T为结点的集合,每个结点表示正在运行的事务;U为边的集合,每条边表示事务等待的情况。若事务T1等待事务T2,则T1,T2之间有一条有向边,从 T1 指向 T2。如果发现图中存在回路,则表示系统中出现了死锁。
发现死锁后,靠事务本身无法打破死锁,必须由DBMS干预。DBMS对死锁一般作下列处理:
● 在循环等待的事务中,选一个事务,将该事务撤销,释放其获得的锁及其它资源;
● 将释放的资源分配给等待该事务的其它事务。
全部回答
- 1楼网友:归鹤鸣
- 2021-02-06 23:29
你说的不是死锁,死锁的话oracle会自己处理,杀掉会话。你说的应该只是普通的锁,造成了阻塞,执行一个脚本$oracle_home/rdbms/admin/utllockt.sql,可以把锁结构列出来。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯