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 की निगरानी कैसे करें
'1. IT Story > DB' 카테고리의 다른 글
DB 동시성제어 Locking (0) | 2020.12.24 |
---|---|
Amazon AWS Aurora DB 구축 Q&A 정리(2020) (0) | 2020.12.24 |
Oracle MySQL 운영관리 Q&A 정리(2020) (0) | 2020.12.24 |
Oracle 11G RAC Engine,OCR,VOTE Backup/Recovery(백업/복구) (0) | 2020.12.24 |
Oracle Database Appliance(X5-2) Disk Online replacement (0) | 2015.12.30 |
Adding MySQL Cluster Data Nodes Online (0) | 2015.12.24 |
MySQL Monitor Tool Install (0) | 2015.12.24 |
Oracle 서비스지원(SR) 신청 방법 (0) | 2015.10.07 |