오라클 테이블 락이 걸렸을때 궁금증. 0 1 1,014

by 김쿠쿠 [2017.11.21 15:15:29]


SELECT DISTINCT X.SESSION_ID, A.SERIAL#,
D.OBJECT_NAME, A.MACHINE, A.TERMINAL,
A.PROGRAM, B.ADDRESS, B.PIECE, B.SQL_TEXT
FROM V$LOCKED_OBJECT X, V$SESSION A, V$SQLTEXT B, DBA_OBJECTS D
WHERE X.SESSION_ID = A.SID AND X.OBJECT_ID = D.OBJECT_ID 
AND A.SQL_ADDRESS = B.ADDRESS ORDER BY B.ADDRESS, B.PIECE;
 

이런 쿼리를 사용해서 어떤 테이블에 락이 걸렸고, 어디서 접근한건지, 어떤 쿼리 때문에 락이 걸렸는지 파악하고 있는데요,

혹시 락이 걸린 트랜잭션 순으로 볼 수 있을까요 ??

 

by AF™ [2017.11.21 17:38:26]
SELECT A.OBJECT_NAME, A.SUBOBJECT_NAME, B.PROCESS, S.SID, S.SERIAL#, B.ORACLE_USERNAME, B.LOCKED_MODE, 
       S.MACHINE, S.TERMINAL, 'ALTER SYSTEM  KILL SESSION '''||S.SID||','||S.SERIAL#||''''
  FROM DBA_OBJECTS A, V$LOCKED_OBJECT B, V$SESSION S
 WHERE A.OBJECT_ID = B.OBJECT_ID AND B.SESSION_ID = S.SID

 

제가 일하는 곳은 그냥 이렇게 해서 락 프로세스를 죽일 ALTER문까지 한 방에 처리합니다. ALTER문만 복사해서 실행하면

해당 락은 날라가죠.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입