IT / / 2023. 3. 7. 10:35

[DB] Undo Rollback 남은 시간 확인 방법

728x90

언두 구조

 

오랜 시간 수행되던 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

 

 

 

728x90

'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
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유