diff --git a/数据库/oracle/oracle锁表问题.md b/数据库/oracle/oracle锁表问题.md index 29b0fa8..790fb2b 100644 --- a/数据库/oracle/oracle锁表问题.md +++ b/数据库/oracle/oracle锁表问题.md @@ -9,4 +9,41 @@ select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b ## 结束产生锁表的会话 ``` alter system kill session 'SID,SERIAL#'; +``` +## 查询导致锁表的sql +``` +SELECT + A.USERNAME, + A.MACHINE, + A.PROGRAM, + A.SID, + A.SERIAL#, + A.STATUS, + C.PIECE, + C.SQL_TEXT +FROM + V$SESSION A, + V$SQLTEXT C +WHERE + A.SID IN ( SELECT DISTINCT T2.SID FROM V$LOCKED_OBJECT T1, V$SESSION T2 WHERE T1.SESSION_ID = T2.SID ) + AND A.SQL_ADDRESS = C.ADDRESS ( + ) +ORDER BY + C.PIECE; +``` +## 查询导致锁表的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$session s, v$locked_object l +where l.session_id = s.sid +and s.prev_sql_addr = a.address +order by sid, s.serial#; ``` \ No newline at end of file