오랫동안 수행했던 DML 세션을 Kill 취소 했을 경우 사용한 Undo 릴리즈 하는 남은 시간 확인 하는 방법

수행 시간이 긴 트랜잭션을 kill 했을 경우 SMON이 복구하는 과정에서

wait for a undo record 이벤트와  PX Deq: Txn Recovery Start 이벤트가 동시에 대량으로 발생합니다.

1 ) update 하던 세션이 너무 오래 걸려서 아래와 같이 세션 kill 을 수행했습니다.

이렇게 하면 SMON 은 여러개의 서버 프로세스를 이용해서 트랜잭션을 rollback 처리합니다.

상당히 많은 량의 wait for a undo record 이벤트와  PX Deq: Txn Recovery Start가 감지가 된 것을 볼 수 있습니다.

이것을 Fast Start Parallel Rollback 이라고 합니다.

초기화 파라메터 FAST_START_PARALLEL_ROLLBACK 의 값에 따라서 복구할 때 의 parallel degree 가 결정이 됩니다.

FALSE 일 경우는 Parallel Rollback을 수행하지 않는 것이며,

LOW (default) 일 경우는 CPU_COUNT * 2 까지 병렬로 롤백을 진행합니다.

HIGH 일 경우는 CPU_COUNT * 4 까지 병렬로 롤백을 수행합니다.

parallel rollback 이 항상 좋은 것만은 아닙니다.

변경이 많은 서비스의 경우에는 이로 인해서 undo segment 부족 현상으로 아래와 같은 에러 메시지로 장애상황이 될 수 도 있습니다.

Parallel rollback 처리중에 V$FAST_START_SERVERS 로 상태를 조회할 수 있습니다.

그리고, 언제쯤 끝날지도 V$FAST_START_TRANSACTIONS 뷰로 예측해볼 수 있습니다.

다음과 같이 예측해볼 수도 있습니다

다음과 같이 예측해볼 수도 있습니다.

완료가 되면 이렇게 조회가 됩니다.

 

By haisins

오라클 DBA 박용석 입니다. haisins@gmail.com 으로 문의 주세요.

One thought on “오랫동안 수행했던 DML 세션을 강제 취소 (세션 KILL) 했을 경우 …”
  1. Hiya, I am really glad I have found this information. Nowadays bloggers publish just about gossips and web and this is really irritating. A good blog with interesting content, that’s what I need. Thank you for keeping this website, I will be visiting it. Do you do newsletters? Can not find it.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다