오랜 시간 수행되던 DML 세션을 KILL 했을때 UNDO에서 rollback 처리를 진행하는데
이때 남은 시간을 알아보는 방법입니다.
오랜시간 될던 DML을 KILL 했을경우 복구하는 과정에서
Wait for a undo record 이벤트와 PX Deq: Txn Recovery start 이벤트가 동시에 발생 한다.
TEST@db01 (P000) n/a 0620.20:12 000.000 db file sequential read
TEST@db01 (P059) n/a 0620.20:12 000.000 wait for a undo record
TEST@db01 (P035) n/a 0620.20:12 000.000 row cache lock
TEST@db01 (P007) n/a 0620.20:12 000.000 wait for a undo record
TEST@db01 (P036) n/a 0620.20:12 000.000 wait for a undo record
TEST@db01 (P000) n/a 0620.20:24 000.000 wait for a undo record
TEST@db01 (P036) n/a 0620.20:24 000.000 PX Deq: Txn Recovery Start
TEST@db01 (P029) select 0620.20:24 000.000 PX Deq: Txn Recovery Start
TEST@db01 (P056) n/a 0620.20:24 000.000 PX Deq: Txn Recovery Start
이것을 Fast Start Parallel Rollback 이라고 한다.
초기화 파라미터 FAST_START_PARALLEL_ROLLBACK 의 값에 따라서 복구할 때 의 parallel degree 가 결정되는데
FALSE 일 경우는 Parallel Rollback을 수행 X
LOW (default) 일 경우는 CPU_COUNT * 2 까지 병렬로 롤백을 진행합니다.
HIGH 일 경우는 CPU_COUNT * 4 까지 병렬로 롤백을 수행합니다.
Parallel rollback 이 항상 좋은것으 아니다.
변경이 많은 서비스에서는 이로 인해 언두 부족 현상이 발생 하기도 한다
select state, count(*) from V$FAST_START_SERVERS group by state;
STATE COUNT(*)
----------- ----------
RECOVERING 45
언제쯤 끝날지도 V$FAST_START_TRANSACTIONS 뷰로 예측해볼 수 있습니다.
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY/MM/DD HH24:MI:SS';
SELECT usn, state, undoblockstotal "Total", undoblocksdone "Done",
undoblockstotal-undoblocksdone "ToDo",
DECODE(cputime,0,'unknown',SYSDATE+(((undoblockstotal-undoblocksdone) / (undoblocksdone / cputime)) / 86400)) "Finish at"
FROM v$fast_start_transactions;
USN STATE Total Done ToDo Finish at
---------- ---------------- ---------- ---------- ---------- -------------------
1222 RECOVERING 2269489 31317 2238172 2022/08/08 00:06:03
완료되면 아래처럼 보인다.
USN STATE Total Done ToDo Finish at
---------- ---------------- ---------- ---------- ---------- -------------------
1222 RECOVERED 32874 32874 0 2022/08/08 00:06:03
'IT' 카테고리의 다른 글
[DB] Oracle idle Event 모니터링 시 (0) | 2023.03.03 |
---|---|
[DB] 테이블 통계 Restore/SQL FLUSH/PLAN 확인 (0) | 2022.11.25 |
[IT] 컴퓨터 보안이란? (0) | 2021.07.05 |
[IT] SAP 이란? (0) | 2021.07.02 |
[IT] 유닉스 (0) | 2021.06.28 |