1. 程式人生 > 其它 >ORA-02049:oracle超時分散式事務處理等待鎖

ORA-02049:oracle超時分散式事務處理等待鎖

查詢死鎖資訊

SELECT username,
       lockwait,
       status,
       machine,
       program
  FROM v$session
 WHERE sid IN (SELECT session_id FROM v$locked_object);

查詢被鎖的SQL語句

SELECT sql_text
  FROM v$sql
 WHERE hash_value IN (SELECT sql_hash_value
                        FROM v$session
                       WHERE sid IN (SELECT session_id FROM v$locked_object));

查詢被死鎖的程序

SELECT s.username,
       l.OBJECT_ID,
       l.SESSION_ID,
       s.SERIAL#,
       l.ORACLE_USERNAME,
       l.OS_USER_NAME,
       l.PROCESS
  FROM V$LOCKED_OBJECT l, V$SESSION S
 WHERE l.SESSION_ID = S.SID;

--或者

SELECT 
 S.USERNAME,
 DECODE(L.TYPE, 'TM', 'TABLE LOCK', 'TX', 'ROW LOCK', NULL) LOCK_LEVEL,
 O.OWNER,
 O.OBJECT_NAME,
 O.OBJECT_TYPE,
 S.SID,
 S.SERIAL#,
 S.TERMINAL,
 S.MACHINE,
 S.PROGRAM,
 S.OSUSER
  FROM V$SESSION S, V$LOCK L, DBA_OBJECTS O
 WHERE L.SID = S.SID
   AND L.ID1 = O.OBJECT_ID(+)
   AND S.USERNAME IS NOT NULL;

根據實際情況決定是否kill

alter system kill session 'sid,serial#';