在多人协同开发中,往数据库中添加数据时常常会遇到有人锁定了整张表,查查谁锁掉表的用下面的语句吧!

直接在PL/SQL中新建一个SQL窗口运行即可。

SELECT A.OWNER 方案名,
A.OBJECT_NAME 表名,
B.XIDUSN 回滚段号,
B.XIDSLOT 槽号,
B.XIDSQN 序列号,
B.SESSION_ID 锁表SESSION_ID,
B.ORACLE_USERNAME 锁表用户名,
decode(D.type,’XR’,’NULL’,’RS’,’SS(Row-S)’,’CF’,’SS(Row-S)’, ‘TM’, ‘TABLE LOCK’, ‘PW’, ‘TABLE LOCK’, ‘TO’, ‘TABLE LOCK’, ‘TS’, ‘TABLE LOCK’, ‘RT’, ‘ROW LOCK’, ‘TX’, ‘ROW LOCK’,’MR’,’S(Share)’,NULL) 锁定方式,
C.MACHINE 用户组,
C.TERMINAL 机器名,
B.OS_USER_NAME 系统用户名,
B.PROCESS 系统进程id,
DECODE(C.STATUS,’INACTIVE’,’不活动’,’ACTIVE’,’活动’) 活动情况 ,
C.SERVER,
C.SID,
C.SERIAL#,
C.PROGRAM 连接方式,
C.LOGON_TIME
FROM ALL_OBJECTS A,
V$LOCKED_OBJECT B,
SYS.GV_$SESSION C,
v$lock d
WHERE ( A.OBJECT_ID = B.OBJECT_ID )
AND (B.PROCESS = C.PROCESS )
and C.sid = d.sid
and B.LOCKED_MODE = D.LMODE
ORDER BY 1,2;