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
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];
AND B.ID1 = C.OBJECT_ID
AND B.TYPE = 'TM'
AND C.OBJECT_NAME = [TABLE_NAME];
ALTER SYSTEM KILL SESSION '198, 4105'; -- SID 값과 SERIAL# 값을 입력