본문 바로가기

IT관련

오라클 에러 정보 (ORA-31) - DBA가 세션을 Kill 했으나 좀 기다려야 할 때 발생하는

ORA-31 에러는 DBA가 alter system kill session 을 실행했기 때문에 찍힌 메시지 입니다.
DBA가 kill session 명령을 주었을때 어떤 세션은 금방 Kill 되지만, 어떤 세션은 하던 작업때문에 바로 Kill 할 수 없고 하던 작업을 정리하는 시간이 필요할 수 있습니다.
주로 조회SQL을 실행하던 세션의 경우는 바로 Kill 이 가능하지만, 대량의 Update 나 Delete 작업 같은 DML 작업을 하고 있는 세션이었다면 Kill 명령을 받는 순간 롤백 작업에 들어가야 하고, 이 롤백 작업시간은 지금까지 했던 DML 시간 만큼은 걸리기 때문에 바로 Kill이 안됩니다.

$ oerr ora 31
00031, 00000, "session marked for kill"
// *Cause:  The session specified in an ALTER SYSTEM KILL SESSION command
//          cannot be killed immediately (because it is rolling back or blocked
//          on a network operation), but it has been marked for kill.  This
//          means it will be killed as soon as possible after its current
//          uninterruptable operation is done.
// *Action: No action is required for the session to be killed, but further
//          executions of the ALTER SYSTEM KILL SESSION command on this session
//          may cause the session to be killed sooner.


Parallel Query를 하던 세션을 Kill 하는 경우에도 발생할 수 있고, 이 경우는 버그도 연관이 있다고 하네요. (Bug 13837378)

Alert Log 에 이게 찍혀 있다면 다 지난 일이니 무시하면 될 것 같습니다.~~