解决ORACLE 数据库表锁死问题SQL,下面的是从同事那里考过来的,原出处未知。记录起来,希望有人用的上。
第一条SQL语句查询所有正在使用的表,以及表的信息
SELECT S.SID SESSION_ID,
S.USERNAME,
S.SERIAL#,
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 这条用来根据上面SQL查询到的SID 字段和SESSION_ID字段的值来杀掉正在运行的锁死的表。
alter system kill session '22,114';