ORACLE查询所有被锁表及解锁语句
最近正逢系统的二期开发,在一次plsql操作中,plsql意外关闭,正在执行的语句未执行完造成锁表,现将查询被锁表及解锁语句分享给大家:
- 查询所有被锁表
SELECT L.SESSION_ID SID,
S.SERIAL#,
L.LOCKED_MODE,
L.ORACLE_USERNAME,
L.OS_USER_NAME,
S.MACHINE,
S.TERMINAL,
O.OBJECT_NAME,
S.LOGON_TIME
FROM V$LOCKED_OBJECT L, ALL_OBJECTS O, V$SESSION S
WHERE L.OBJECT_ID = O.OBJECT_ID
AND L.SESSION_ID = S.SID
ORDER BY SID, S.SERIAL#;
2. 执行解锁语句
!!!语句中的两个参数分别为上图中的1和2
ALTER system KILL session '571,20539';
- 执行之后再查询就可以正常操作了
造成死锁的原因就是多个线程或进程对同一个资源的争抢或相互依赖。系统为了不让错误继续执行下去,于是就锁住数据,避免造成更大的损失。所以大家在操作的时候一定要记得提交,避免发生死锁的情况。