개요
모종의 이유로 세션이 FORCE를 수행하지 않으면 종료되지 않는 경우에 대해 설명합니다.
FORCE 로 KILL 하기 전 SPINLOCK을 잡고 있는지 확인 후 수행합니다.
방법
프로세스와 해당 세션의 쓰레드ID를 맵핑하여 SPINLOCK_ACQ_CNT=0 및 SPIN_OWNER= -1 일 경우, session kill force로 강제로 세션을 종료할 수 있습니다.
주의
SPINLOCK이 걸려 있으면 DB가 다운될 가능성이 높으므로, 사전에 확인이 필요합니다.
select inst_id, sid, serial#, pid, OS_THR_ID from gv$session where sid in (763) and inst_id = 1;
INST_ID SID SERIAL# PID OS_THR_ID
1 763 127,820 23,655 24,048
SQL
복사
select PID,PTHREAD_ID,SPINLOCK_ACQ_CNT, SPIN_OWNER from VT_THRINFO2 where pid = 23655 and pthread_id = 24048;
PID PTHREAD_ID SPINLOCK_ACQ_CNT SPIN_OWNER
23,655 24,048 0 -1
SQL
복사
select PID,PTHREAD_ID,SPINLOCK_ACQ_CNT, SPIN_OWNER from VT_THRINFO2 where pid = 23655 and pthread_id = 24048;
PID PTHREAD_ID SPINLOCK_ACQ_CNT SPIN_OWNER
23,655 24,048 0 -1
SQL
복사
alter system kill session (763,127820) force;
SQL
복사