개요
DB종료를 위해 WAS 등을 먼저 종료했을 경우, 트랜잭션이 commit 되지 않은 상태일 때 rollback이 진행되며 이에 대한 소요시간을 확인하는 과정에 대해 안내합니다.
방법
rollback 진행 중일 때 정상 DB down 명령(normal, post_tx, immediate, switchover)이 주어지면
rollback이 완료될 때까지 대기합니다.
완료시간 확인
Case 1. Tibero5sp1 FS02 이후 버전
rollback 중인 트랜잭션은 V$TRANSACTION의 EXP_RB_TIME 컬럼을 통해 완료되는 시간을 알 수
있습니다. (단위 : 초)
•
이 항목은 짧은 트랜잭션에 대해서는 유의미한 값을 얻기 어렵고, 수분에서 몇 시간 이상의 긴 rollback에 대해서는 대략적인 소요시간을 확인할 수 있습니다.
단, DB내의 부하에 따라 예상시간은 변동 가능성이 있습니다.
SQL> select sess_id, start_time, used_blk, EXP_RB_TIME from v$transaction;
SESS_ID START_TIME USED_BLK EXP_RB_TIME
---------- -------------------------------- ---------- -----------
33 2016-04-22 19:35:32 142690 970
1 row selected.
SQL
복사
Case 2. Tibero5sp1 FS02 이전 버전
버전이 낮아 V$TRANSACTION 내 EXP_RB_TIME 항목이 없는 경우, USED_BLK 항목이 줄어드는 속도와 남은 양을 계산하여, 대략적인 완료시간을 유추할 수 있습니다.
•
V$TRANSACTION 내 USED_BLK 값: 해당 트랜잭션에 사용된 undo block 의 수
SQL> !date
Fri Apr 22 17:27:22 KST 2016
SQL> select sess_id, start_time, used_blk from v$transaction;
SESS_ID START_TIME USED_BLK
---------- -------------------------------- ----------
30 2016-04-22 17:07:18 7537
1 row selected.
SQL> !date
Fri Apr 22 17:29:14 KST 2016
SQL> select sess_id, start_time, used_blk from v$transaction;
SESS_ID START_TIME USED_BLK
---------- -------------------------------- ----------
30 2016-04-22 17:07:18 2448
1 row selected.
SQL
복사