1. 대량 데이터 변경 세션에 대하여 KILL 수행 상황 (Oracle)

 - 오라클 DB에서 Insert/Update/Delete 작업을 대량으로 수행하던 도중에 세션을 정리해야하는 상황에서 commit을 할수 없어 session kill을 수행했을 때 해당 오브젝트에 대하여 Rollback이 발생되면서 wait이 걸려 세션이 증가하는 상황이 발생할때가 존재 한다. 이때 해당 세션의 Rollback 상태를 모니터링 해야할때가 존재한다.

- 큰 트랜잭션을 kill 했을 경우 복구하는 과정에서 wait for a undo record 이벤트와 PX Deq: Txn Recovery Start 이벤트가 동시에 대량으로 발생 (FAST_START_PARALLEL_ROLLBACK 파라미터가 TRUE일 경우)

- PARALLEL_ROLLBACK이 과도할 경우에 UNDO SEGMENT 부족현상이 발생될 수 있음

- 조회: select state, count(*) from V$FAST_START_SERVERS group by state;

 

1) INSERT/UPDATE/DELETE 하던 세션이 너무 오래걸려서 SESSION KILL 수행

alter system kill session 'sid,seiral#' immediate;

2) SESSION KILL 수행후, 트렌젝션 모니터링시에 ROLLBACK이 오래걸려서 아래와 같이 SPID로 KILL -9 수행

select     'kill -9 ' || spid
from      v$process
where addr in (select paddr from v$session where status='KILLED' and type != 'BACKGROUND')


2. ROLLBACK 모니터링 방법

 

1) V$SESSION 으로 wait for a undo record 이벤트 모니터링 가능

2) V$FAST_START_TRANSACTIONS 뷰로 예측 (.GV$FAST_START_TRANSACTIONS)

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
---------- ---------------- ---------- ---------- ---------- -------------------
      1109 RECOVERING          2269489      31317    2238172 2016/06/21 00:06:03


[완료]
       USN STATE                 Total       Done       ToDo Finish at
---------- ---------------- ---------- ---------- ---------- -------------------
      1109 RECOVERED             32874      32874          0 2016/06/21 00:24:21

3) x$ktuxe 뷰로 세션단위 진행사항 예측

SELECT
         ktuxeusn
       , to_char(sysdate,'YYYY/MM/DD HH24:MI:SS') "Time"
       , ktuxesiz, ktuxesta
FROM     x$ktuxe
WHERE    ktuxecfl = 'DEAD';
  KTUXEUSN Time                  KTUXESIZ KTUXESTA
---------- ------------------- ---------- --------------
 
      1109 2016/06/20 23:07:22    1800231 ACTIVE
 

# How to monitor ROLLBACK after performing bulk data change session KILL

# Cómo monitorear ROLLBACK después de realizar KILL de sesión de cambio de datos masivos

# 大量のデータを変更セッションKILL実行後、ROLLBACK監視方法

# 执行批量数据更改会话KILL后如何监视ROLLBACK

# थोक डेटा परिवर्तन सत्र KILL करने के बाद ROLLBACK की निगरानी कैसे करें

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,