由于 Oracle 查询锁之间的依赖关系 查询数据比较全(例如:锁和被锁关系,锁的对象,等待事件,操作锁的客户端,会话跑的sql,等状态.)
若 在 每个SQL锁的对象较多、操作人较多、且最源头锁对象的sid 不断变化时;
想通过 Oracle 查询锁之间的依赖关系 再右眼查到最源头锁sid比较费事。
所以特写如下sql!
实现 Oracle 查找锁之间依赖关系的最源头SID (首先得到锁的SID),再通过SID找sql查问题..
*** 思路
1、证明有锁,需要满足v$session.BLOCKING_SESSION[阻塞会话的SID] IS NOT NULL and BLOCKING_SESSION_STATUS = ‘VALID‘条件;
2、阻塞会话的SID 不在 SID 中就是最源头的SID (首先得到锁的SID);
3、注意:v$session单实例,gv$session 多节点;
SQL: