如何检测被锁住的过程
答案:2 悬赏:20 手机版
解决时间 2021-01-23 00:19
- 提问者网友:寂寞梧桐
- 2021-01-22 09:14
如何检测被锁住的过程
最佳答案
- 五星知识达人网友:山河有幸埋战骨
- 2021-01-22 09:49
1.查看是哪一个存储过程被锁住
查V$DB_OBJECT_CACHE视图
select * from V$DB_OBJECT_CACHE where owner='过程的所属用户' AND LOCKS!='0'
2.查看是哪一个sid,通过sid可以知道是哪一个session
查v$access视图
select * from v$access where owner='过程的所属用户' and name='刚才查到的过程名'
3.查出sid和serial#
查v$session视图
select sid,serial#,paddr from v$session where sid='刚才查到的sid';
查v$process视图
select spid from v$process where addr='刚才查到的paddr';
4.杀进程
查V$DB_OBJECT_CACHE视图
select * from V$DB_OBJECT_CACHE where owner='过程的所属用户' AND LOCKS!='0'
2.查看是哪一个sid,通过sid可以知道是哪一个session
查v$access视图
select * from v$access where owner='过程的所属用户' and name='刚才查到的过程名'
3.查出sid和serial#
查v$session视图
select sid,serial#,paddr from v$session where sid='刚才查到的sid';
查v$process视图
select spid from v$process where addr='刚才查到的paddr';
4.杀进程
全部回答
- 1楼网友:时间的尘埃
- 2021-01-22 10:55
你是要找到被锁住的存储过程,还是要看存储过程是那部分执行慢,导致过程被锁住时间长。
如果是前者,那么oracle有个视图
v$locked_object和dba_dml_locks,这个能看出被锁的object都有哪些是哪个session锁的。
然后可以通过这个session_id找到相应的语句,找到语句后,就能知道是哪部分语句执行的时间较长了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯