인성장

[Oracle] Lock Table & Session 조치 방법 본문

Oracle/Admin

[Oracle] Lock Table & Session 조치 방법

인성장 2024. 5. 2. 13:29
Lock Table & Session 해결 절차

 

 

1. 오래 수행되는 SQL 조회 (E_Time : SQL문이 수행중인 시간)

select sid,serial#,username,program, event,(sysdate-sql_exec_start)*86400 E_Time,sql_id from v$session where status='ACTIVE' and username is not null order by 6 desc;

 

2. Lock Table 조회

set line 200
set pages 300
col object_name for a15
col owner for a10
col object_type for a10
SELECT  DO.OBJECT_NAME
      , DO.OWNER
      , DO.OBJECT_TYPE
      , VO.XIDUSN
      , VO.SESSION_ID
      , VO.LOCKED_MODE
   FROM V$LOCKED_OBJECT VO
      , DBA_OBJECTS DO
  WHERE VO.OBJECT_ID = DO.OBJECT_ID;

 

3. Lock Table 유발한 Session의 sid, serial# 값 조회

SELECT A.SID, A.SERIAL#
  FROM V$SESSION A
     , V$LOCK B
     , DBA_OBJECTS C
 WHERE A.SID         = B.SID
   AND B.ID1         = C.OBJECT_ID
   AND B.TYPE        = 'TM'
   AND C.OBJECT_NAME = '테이블이름';

 

4. 문제 Session Kill

ALTER system kill session 'sid, serial#';
--예시 : ALTER system kill session '14589, 27128';

 

* Session Kill 시, 해당 세션이 수행중이던 트랜잭션은 Rollback 처리됩니다.