오라클 락 정보 조회 및 kill session
dbms_datapump 패키지를 사용하면서 펌프 작업중 발생하는 에러를 출력하려다 lock 걸려있는 impdp 작업 조회, kill session 후 락테이블 삭제하는 작업을 진행함.
>>간단조회 select * from v$locked_object;
SELECT /*+ ordered */
LEVEL lvl,
NVL (s.blocking_session, s.sid)
lck_hold,
CASE WHEN s.blocking_session IS NOT NULL THEN s.sid END
lck_wait,
s.username,
s.osuser,
s.status,
l.TYPE TYPE,
-- fn_sec_to_time (l.ctime) lock_tm,
DECODE (lmode,
0, 'NONE',
1, 'NULL',
2, 'row-S(SS)',
3, 'row-X(SX)',
4, 'share(S)',
5, 'S/Row-X(SSX)',
6, 'exclusive(X)')
HOLD,
o.name object,
l.id1,
l.id2,
DECODE (l.request,
0, 'NONE',
1, 'NULL',
2, 'row-S(SS)',
3, 'row-X(SX)',
4, 'share(S)',
5, 'S/Row-X(SSX)',
6, 'exclusive(X)') REQUEST,
s.event,
s.machine,
s.module,
s.program,
s.sql_id,
s.blocking_session,
l.ctime,
o.obj#,
t.name TYPE_NM,
t.id1_tag,
t.id2_tag,
s.sid,
s.serial#,
'ALTER SYSTEM KILL SESSION ''' || S.sid || ',' || S.serial# || ''';' CMD_KILL,
'ALTER SYSTEM DISCONNECT SESSION '''|| S.sid || ','|| S.serial#|| ''' IMMEDIATE;' CMD_DISCONNECT
FROM V$lock l,
V$session s,
sys.obj$ o,
V$lock_type t
WHERE 1 = 1
AND s.TYPE != 'BACKGROUND'
-- and s.username = 'EP_APP'
-- and s.sid = 4179
AND l.sid = s.sid
AND l.TYPE IN ('TM', 'TX', 'UL')
AND o.obj#(+) = DECODE (L.ID2, 0, L.ID1, -1)
AND t.TYPE = l.TYPE
CONNECT BY PRIOR s.sid = s.blocking_session
AND PRIOR l.id1 = l.id1
AND PRIOR l.id2 = l.id2
START WITH s.blocking_session IS NULL
ORDER SIBLINGS BY lock_tm DESC, lck_hold
--order by lck_hold, l.ctime desc, l.sid
;
'새싹 DBA > Scripts' 카테고리의 다른 글
[오라클] 휴지통 비우기 (0) | 2024.08.19 |
---|---|
[오라클] DBMS_DATAPUMP.GET_STATUS (0) | 2024.08.16 |
DATAPUMP LOG 파일 읽기 API (0) | 2024.08.16 |
서로 다른 DB 테이블, 컬럼 명 비교 (vlook up) (0) | 2024.08.05 |
[오라클] DDL 로그 트리거 (0) | 2024.07.30 |