1. 程式人生 > 其它 >DM鎖等待解決辦法

DM鎖等待解決辦法

一、鎖等待 方法1 1.1 查詢正在執行的事務 SELECT SESS_ID,SQL_TEXT,STATE FROM V$SESSIONS WHERE SESSID IN (select SESS_ID from v$trx where status='ACTIVE'); 1.2 通過SESS_ID關閉會話 delete(會話過多無法判斷請採用“方法二”) SP_CLOSE_SESSION(142344256); 如果是MPP環境,以下命令需要在MPP多個節點同時進行執行: ./disql 使用者名稱/密碼#{MPP_TYPE=local} --注意:MPP叢集需要local登入 SP_SET_SESSION_LOCAL_TYPE (1); ---允許MPP主備執行DDL操作 SP_CLOSE_SESSION(142344256); 關閉後,此會話會顯示網路通訊異常 再次查詢只能看見update語句會話   方法2: 2.1 檢視被堵塞的事務 (事務ID:TRX_ID) SELECT VTW.ID AS TRX_ID, VS.SESS_ID ,VS.SQL_TEXT ,VS.APPNAME ,VS.CLNT_IP FROM V$TRXWAIT VTW LEFT JOIN V$TRX VT ON (VTW.ID=VT.ID) LEFT JOIN V$SESSIONS VS ON (VT.SESS_ID=VS.SESS_ID);   2.2 查詢被阻塞的事務是由哪個事務造成的阻塞 (等待事務ID:WAIT_FOR_ID) SELECT WAIT_FOR_ID,WAIT_TIME FROM V$TRXWAIT t WHERE ID=146479;   2.3 通過等待事務ID定位到會話以及執行的語句 SELECT VT.ID AS TRX_ID,VS.SESS_ID,VS.SQL_TEXT ,VS.APPNAME ,VS.CLNT_IP FROM V$TRX VT LEFT JOIN V$SESSIONS VS ON (VT.SESS_ID=VS.SESS_ID) WHERE VT.ID = 146457;   2.4 SP_CLOSE_SESSION關閉等待事務(SESS_ID) 無現象結果 再次查詢 無堵塞會話