어제밤에 개발자가 올래걸리는 작업이 있어서 돌리고 퇴근 했다
다음날 출근해서 와보니 잘못된 조건으로 잘못된 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
에만 적용 가능함.