Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

롤백(rollback) 중인 쿼리

 

 

 

개요

...

변경 트랜잭션이 수행 중일 때 해당 세션을 강제로 끊거나 세션 타임 아웃 설정에 의해 트랜잭션이 중단된 경우 해당 트랜잭션은 롤백(ROLLBACK)이 진행됩니다.

다음은 롤백 중인 쿼리를 확인하는 방법입니다.

 

대상버전

ALTIBASE HDB  

 

버전

...

Altibase 5.1.5 이상 버전에서 가능합니다.

 

 

 

 

확인 방법

...

ALTIBASE HDB 5.1.5 이상 버전에서 모두 사용가능한 방법

...

롤백 전에 수행된 변경 트랜잭션이 logfile 1 ~ logilfe 10 까지 기록되었다면 롤백 시 undo 는 logfile 10 부터 진행되기 때문에 CURRENT_UNDO_NEXT_LSN 으로 시작하는 컬럼의 값이 줄어든다는 것으로 롤백이 수행 중임을 알 수 있습니다.

 iSQL> set linesize 1024;  

iSQL> set colsize 100;  

iSQL> set vertical on;

SELECT  
Panel
Code Block
languagesql
SELECT tx.ID TX_ID,
                       

       tx.SESSION_ID,
                       

       tx.STATUS,
                       decode

       DECODE(tx.
first
FIRST_
update
UPDATE_
time
TIME, 0, '0',
to
 TO_
char
CHAR(
to
TO_
date
DATE('1970010109', 'YYYYMMDDHH') + tx.
first
FIRST_
update
UPDATE_
time
TIME / (60*60*24), 'MM/DD HH:MI:SS'))
first
 FIRST_
update
UPDATE_
time,         

               st.total_time/1000000 total,         

              
TIME,
       st.TOTAL_TIME/1000000 TOTAL,
       tx.CURRENT_UNDO_NEXT_LSN_FILENO,
                      

       tx.CURRENT_UNDO_NEXT_LSN_OFFSET,
        

              substr(query, 1, 100) query

FROM v$TRANSACTION tx,     

            v$STATEMENT st

WHERE tx.id = st.tx_id  

       AND tx.session_id <> session_id();

TX_ID                                                        : 320257              

SESSION_ID                                             : 3          

STATUS                                                    : 4                   

FIRST_UPDATE_TIME                             : 01/22 16:09:55                              

TOTAL                                                       : 0                     

CURRENT_UNDO_NEXT_LSN_FILENO : 2          

CURRENT_UNDO_NEXT_LSN_OFFSET : 9698464    

QUERY                                                       : update disk_t1 set c1 = 'aaaaaaa' ;


       SUBSTR(QUERY, 1, 100) QUERY
  FROM V$TRANSACTION tx,
       V$STATEMENT st
 WHERE tx.ID = st.TX_ID
   AND tx.SESSION_ID <> SESSION_ID();

 

  • 해당 쿼리가 수행한 시각은 FIRST_UPDATE_TIME
  • 롤백 시작 시각은 FIRST_UPDATE_TIME + TOTAL

...