01. Database

[DBeaver] 디비버-오라클 데드락(deadlock) 해제법

devamy 2024. 6. 27. 10:44

'ERROR: deadlock detected ...'라는 로그가 뜨면서
1시간 동안 로그인도 안 되고, 입력한 내용이 저장이 안되는 상황이 발생했다.
 
디비버를 통하여 오라클 DB를 사용하고 있었기 때문에
아래와 같은 방법으로(락 걸린 세션을 조회하고 kill 하는 방법) 교착상태를 해결하였다.
 
만약 이 방법도 통하지 않는다면,
최상위 권한을 가진 DBA에 직접 문의하여 해결해야 한다고 한다.
 

-- 1. 세션을 조회한다.
SELECT SID, SERIAL#, USERNAME, PROGRAM FROM V$SESSION

-- 2. 락 된 세션을 조회한다.
SELECT
V$SESSION.SID,
V$SESSION.SERIAL#,
V$SESSION.USERNAME,
DBA_OBJECTS.OBJECT_NAME,
V$SESSION.SADDR,
V$SESSION.OSUSER,
V$SESSION.PROGRAM
FROM V$LOCKED_OBJECT
LEFT JOIN DBA_OBJECTS ON V$LOCKED_OBJECT.OBJECT_ID = DBA_OBJECTS.OBJECT_ID
LEFT JOIN V$SESSION ON V$LOCKED_OBJECT.SESSION_ID = V$SESSION.SID
ORDER BY 
V$SESSION.SID,
DBA_OBJECTS.OBJECT_NAME

-- 3. 세션을 죽인다.
ALTER SYSTEM KILL SESSION 'SID, SERIAL#'