个人随笔-20230406
oracle数据库锁表相关
查询被锁住的表,锁表的sql语句,以及释放锁住的表相关的操作
原因
1.当使用的insert , delete , update 语句操作的数据表后,忘记提交或者回滚事务,会造成锁表的现场
查询被锁住的表
// 查询被锁住表的sql语句
SELECT
a.OBJECT_NAME ,
b.SESSION_ID ,
c.SERIAL# ,
c.PROGRAM ,
c.USERNAME ,
c.COMMAND ,
c.MACHINE ,
c.LOCKWAIT
FROM
ALL_OBJECTS a,V$LOCKED_OBJECT b,V$SESSION c
WHERE a.OBJECT_ID = b.OBJECT_ID
AND c.SID = b.SESSION_ID
查询表被锁住的原因
// 查询表被锁住原因的sql语句
SELECT
l.SESSION_ID sid,
s.SERIAL# ,
l.locked_mode,
l.oracle_username,
s.USER#,
l.os_user_name,
s.machine,
s.terminal,
a.sql_text,
a.action
FROM
v$sqlarea a,V$LOCKED_OBJECT l,V$SESSION s
WHERE
s.SID = l.SESSION_ID
AND s.prev_sql_addr = a.ADDRESS
ORDER BY s.sid,s.SERIAL# DESC
解释放锁住的表
// 解释放锁住的表
ALTER SYSTEM KILL SESSION 'SID,SERIAL#';