본문 바로가기
SQL

ORACLE_LOCK 개체 확인 및 KILL(해제)

by haheaven 2022. 8. 5.

 

 

 

데이터 무결성을 위해 LOCK과 TRANSCATION을 사용

(사용자간의 식별번호가 충돌하는 것을 예방)

 

LOCK이 걸리면 오류가 걸려 프로그램이 작동하지 않으므로,

LOCK이 걸린 개체를 확인하는 쿼리, KILL(해제)하는 쿼리를 기록하고자 한다. 

(*관리자 계정에서만 작업가능)

 

 

1. LOCK 테이블 확인 

SELECT *
  FROM V$LOCKED_OBJECT
 WHERE ORACLE_USERNAME = '사용자명'
 ;

 

 

2. LOCK 테이블 SID, SESSION 조회

   *sid = session_id /  serial# = serial_no

SELECT   VS.SID
	,VS.SERIAL#
  FROM  V$SESSION    VS
       ,V$LOCK       VL
       ,DBA_OBJECTS  DO
 WHERE VS.SID         =  VL.SID
   AND VL.ID1         =  DO.OBJECT_ID
   AND VL.TYPE        = 'TM'
   AND DO.OBJECT_NAME = '테이블명'
;

 

3. SID, SERIAL 로 세션 죽이기(KILL)

ALTER system KILL SESSION 'sid, serial#';

 

 

4. 세션 KILL

SELECT DISTINCT   X.SESSION_ID
		, A.SERIAL_NO#
                , D.OBJECT_NAME
                , A.MACHINE
                , A.PROGRAM
             	, A.LOGON_TIME
                ,'ALTER SYSTEM KILL SESSION'''||A.SID||', '||A.SERIAL#||''';'
  FROM      GV$LOCKED_OBJECT X
  	  , GV$SESSION A
          , DBA_OBJECTS D
 WHERE     X.SESSION_ID = A.SID
   AND     X.OBJECT_ID = D.OBJECT_ID
 ORDER BY  LOGON_TIME

'SQL' 카테고리의 다른 글

SQL_ DECODE, COALESCE, NULLIF, NVL, NVL2  (0) 2023.10.13
ORACLE_여러 행을 한 행으로 조회하기  (0) 2022.08.05
SQL_ CASE(조건) 와 NULL(변경)  (0) 2021.08.22
SQL_데이터타입 / DATE  (0) 2021.08.21
SQL_기초2  (0) 2021.08.20

댓글