오라클 롤백 ROLLBACK 모니터링

대량 DML 작업을 하고 난 후 Rollback을 하면 시간이 상당히 소요된다. 데이터가 많을 때는 몇 시간씩 걸리기도 한다.

Rollback이 진행되고 있는 상황을 모니터링 해보자.

v$transaction 동적 뷰를 조회하면 Rollback 대상이 얼마나 남았는지 알 수 있다. 정확한 소요시간은 알수 없지만 대략 예측해볼 수는 있다.

SELECT B.SID, B.SERIAL#, B.SQL_ID
     , A.USED_UBLK  -- UNDO 블록
     , A.USED_UREC  -- UNDO 레코드
FROM   V$TRANSACTION A, V$SESSION B
WHERE  A.SES_ADDR = B.SADDR;

오라클은 DML을 실행할 때 롤백을 위해 UNDO 영역을 사용한다.

그래서, 트랜잭션에서 현재 어느 정도 UNDO 영역을 사용 중인지 확인하면 Rollback 작업이 얼마나 걸릴지 예측할 수 있다.

위 쿼리를 반복 실행하면서 used_ublk, used_urec 값이 줄어드는 추이를 반복하면 된다.

위로 스크롤