查看oracle锁的表名

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查看oracle锁的表名相关的知识,希望对你有一定的参考价值。

SELECT * FROM tbl_10 FOR UPDATE;

select t2.username,t2.sid,t2.serial#,t2.logon_time
from v$locked_object t1,v$session t2
where t1.session_id=t2.sid order by t2.logon_time;
如果有长期出现的一列,可能是没有释放的锁。

请问是否有方法可以查到某个锁是具体锁到哪个表的呢?谢谢!
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
请问这个为什么会有两个同一个session_id的结果;
1 14728 11961 TBL_PNR_10 290 STAR bill?liu
2 14732 50904 TBL_PNR_10 290 STAR bill?liu
难道一个for update会产生两个锁?

下面3个语句是我经常使用来解决oracle锁问题的 -- 注意你的用户有没有权限问题
1. 查看被锁的表
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

2. 查看是哪个进程锁的
SELECT sid, serial#, username, osuser FROM v$session where osuser = 'tangpj'

3. 杀掉这个进程 alter system kill session 'sid,serial#';
参考技术A 查看哪个表被锁
select b.owner,b.object_name,a.session_id,a.locked_mode
from v$locked_object a,dba_objects b
where b.object_id = a.object_id
查看是哪个session引起的
select b.username,b.sid,b.serial#,logon_time
from v$locked_object a,v$session b
where a.session_id = b.sid order by b.logon_time
参考技术B SELECT S.SID SESSION_ID, S.USERNAME, DECODE(LMODE, 0 , ' None ' , 1 , ' Null ' , 2 , ' Row-S (SS) ' , 3 , ' Row-X (SX) ' , 4 , ' Share ' , 5 , ' S/Row-X (SSX) ' , 6 , ' Exclusive ' , TO_CHAR(LMODE)) MODE_HELD, DECODE(REQUEST, 0 , ' None ' , 1 , ' Null ' , 2 , ' Row-S (SS) ' , 3 , ' Row-X (SX) ' , 4 , ' Share ' , 5 , ' S/Row-X (SSX) ' , 6 , ' Exclusive ' , TO_CHAR(REQUEST)) MODE_REQUESTED, O.OWNER || ' . ' || O. OBJECT_NAME || ' ( ' || O.OBJECT_TYPE || ' ) ' , S.TYPE LOCK_TYPE, L.ID1 LOCK_ID1, L.ID2 LOCK_ID2
FROM V$LOCK L, SYS.DBA_OBJECTS O, V$SESSION S
WHERE L.SID = S.SID AND L.ID1 = O. OBJECT_ID

执行上记SQL语句,可以查寻到数据库中的锁的情报.

SESSION_ID, USERNAME, MODE_HELD, MODE_REQUESTED, OBJECT_NAME, LOCK_TYPE, LOCK_ID

分别是 拥有锁的SESSION_ID,拥有锁的USERNAME,锁的执行模式MODE_HELD,锁的请求MODE_REQUESTED,锁所在的数据库对象名
,锁的类型,锁的ID

以上是关于查看oracle锁的表名的主要内容,如果未能解决你的问题,请参考以下文章

170308oracle查看被锁的表和解锁

Oracle查看被锁的表及解除锁

oracle查看被锁的表及解除锁

Oracle查看锁表和解锁

MySQL锁表和解锁操作

Oracle查询被锁的表及解锁方法