Hello. { #Somebody }
Oracle DB에서 Table Lock 조회 하는 쿼리
DB Table이 Lock 발생 했을 시 어떠한 쿼리때문인지 확인 할 수 있는 SQL 입니다.
-- Lock 조회 쿼리
SELECT S.STATUS "STATUS"
, S.USER_NAME "USER"
, O.OWNER || '.' || O.OBJECT_NAME "OBJECT"
, FLOOR((SYSDATE - VT.START_TIME)*24) || ':' ||
LPAD(FLOOR(MOD((SYSDATE - VT.START_TIME)*1440, 60)), 2, 0) || ':'
LPAD(FLOOR(MOD((SYSDATE - VT.START_TIME)*86400, 60)), 2, 0) AS "LOCK_TIME"
, DECODE(LMODE, 0, '[0]', 1, '[1]ROW-S(RS)', 2, '[2]ROW-X(RX)', 3, '[3]SHARED(S)',
4, '[4]S/ROW-S(SRX)', 5, '[5]EXCLUSIVE(X)', 6, '[6]PIN', TO_CHAR(LMODE)) "LOCK MODE"
, NVL(S.SQL_ID, S.PREV_SQL_ID) || '/' || NVL2(S.SQL_ID, S.SQL_CHILD_NUMBER, S.PREV_CHILD_NUMBER) "SQL_ID"
, SQ.SQL_TEXT
FROM VT_WLOCK L,
VT_SESSION S,
DBA_OBJECTS O,
VT_TRANSACTION VT,
V$SQL SQ
WHERE L.TYPE = 'WLOCK_DML'
AND L.SESS_ID = S.VTR_TID
AND L.ID1 = O.OBJECT_ID (+)
AND L.SESS_ID = VT.SESS_ID
AND SQ.SQL_ID = NVL(S.SQL_ID, S.PREV_SQL_ID)
AND SQ.CHILD_NUMBER = NVL2(S.SQL_ID, S.SQL_CHILD_NUMBER, S.PREV_CHILD_NUMBER)
ORDER BY "LOCK_TIME" DESC
Oracle 혹은 Tibero DB에서 사용가능합니다.
To become a good developer, you need to study SQL
Bye. { #Somebody }
'Programming > sql' 카테고리의 다른 글
[sql] Maria DB 컬럼명 변경 방법 (여러 쿼리문 추출) (2) | 2023.12.08 |
---|---|
[sql] DB Object 스크립트 추출하는 방법 (0) | 2023.09.15 |
[sql] MySQL & Maria DB 테이블 컬럼 정보 변경 (0) | 2023.09.15 |