어제밤에 개발자가 올래걸리는 작업이 있어서 돌리고 퇴근 했다

다음날 출근해서 와보니 잘못된 조건으로 잘못된 DML이 아직도 안끝낫다.. 개발자는 아무렇지 않게 X버튼을 눌러 프로그램을 껏다. 어떤 상황이 발생할까.?

그 테이블의 Rollback이 이뤄 지면서 작업 시간 만큼 Lock 현상으로 그 테이블의 서비스는 불가 하다..

아래 세팅을 미리 해놓으면 이때 복구 시간을 빠르게 할 수 있다.


_CLEANUP_ROLLBACK_ENTRIES 한번에 rollback
하는 count
(V$TRANSACTION.USED_UREC)
결정합니다.


#순서

1.
현재값은 아래 query 확인합니다.

select
a.ksppinm “Parameter”,

b.ksppstvl “Session Value”,
c.ksppstvl “Instance
Value”

from x$ksppi a, x$ksppcv b, x$ksppsv c
where a.indx = b.indx and
a.indx = c.indx

and a.ksppinm like ‘%_cleanup_rollback%’
/

2.
‘_cleanup_rollback_entries’
원하는 숫자로 하시고
fast_start_parallel_rollback=false
변경 DB restartup
하세요.

(경험상
_cleanup_rollback_entries =
몇만 까지 사용해봤습니다.)

<근거>
Note
414242.1 – Database Hangs Because SMON is taking 100% CPU doing transaction
recovery

Note 1060831.6 – Rollback Is Taking A Long Time After Session
Killed



#추가 참고 

1. _cleanup_rollback_entries’ 너무 크게하는 경우 rollback
부하로 다른 작업 영향 받을 있음.


2. RAC
이라도 한쪽 instance
에만 적용 가능함.

By haisins

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

답글 남기기

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