DB/oracle

[Oracle] DB Lock 해결

DeP 2019. 1. 20. 22:25

발생 원인


1. MyBatis를 사용하여, 엑셀 데이터를 웹 상에서 업로드 시 속도 이슈를 해결하기 위해 /*+ APPEND NOLOGGIN */ 힌트 사용.

2. 한 트랜잭션에서 /*+ APPEND */ 힌트 여러번 사용할 시 ORACLE ERROR 발생.

3. 이를 해결하기 위해 BEGIN COMMIT; END; 사용.

4. 웹 상에서 업로드 시 시간이 너무 오래 지체되어 사용자가 세션을 종료하면, 해당 SQL은 commit되지 못하고 세션이 종료됨.

=> DB LOCK 발생 !!!




해결 방법


SELECT A.SID, A.SERIAL
FROM V$SESSION A
  , V$LOCK B
  , DBA_OBJECT C 
WHERE A.SID = B.SID 
AND B.ID1 = C.OBJECT_ID 
AND B.TYPE = 'TM' 
AND C.OBJECT_NAME = [TABLE_NAME];
 
 
ALTER SYSTEM KILL SESSION '198, 4105'; -- SID 값과 SERIAL# 값을 입력