문서유형ㅣ기술정보
분야ㅣ모니터링/점검
적용제품버전ㅣTibero 7.2.4
문서번호 | TMOTI050
개요
데이터 블록 내부에서 트랜잭션 처리와 관련된 정보가 어떻게 기록되고, 처리되는지 덤프 기능을 이용하여 데이터 블록 내부의 정보를 확인해 볼 수 있습니다.
본 문서는 다음과 같은 테스트 환경에서 진행하였습니다.
$ tbboot -v
Tibero 7 (DB 7.2.4) Build 303667
Linux bistro-build-centos_8.4 5.15.0-134-generic #145~20.04.1-Ubuntu SMP Mon Feb 17 13:27:16 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux version (little-endian)
Patch files (FS02PS_700093a FS02PS_700103a FS02PS_344166f FS02PS_700110a FS02PS_342949f)
Compiled with "cc -no-pie -ggdb -fstack-protector-all -fno-strict-aliasing -fno-omit-frame-pointer -pipe -O3 -D_OPT_COMPILED -U_FORTIFY_SOURCE -D_USE_VIP -Wall -W -Werror-implicit-function-declaration -Wno-unused-parameter -Wpointer-arith -Wdeclaration-after-statement -DHAVE_CONFIG_H -D_WORDSIZE=64 -D_OS_LINUX -D_LINUX_X86_64 -D_X86 -DUSE_ASSERT -DTSAM -DTSAM_NO_ESDS_SEQUENCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_USE_FSYNC -D_CHECK_LICENSE -D_STBLOG -D_TAC -DFD_SETSIZE=8192 -D_CM_OBSERVER -D_USE_FALLOCATE -D_GNU_SOURCE -D_GNU_SOURCE -D_GNU_SOURCE -D_GNU_SOURCE -DHAVE_EPOLL"
Compiled at Oct 13 2025 01:59:51 build seq 303667 init rev {2023-11-24}
방법
트랜잭션에 따른 데이터 블록 내의 ITL 변화 확인 시나리오
데이터 생성
-- 테이블 생성 및 데이터 삽입
CREATE TABLE TIBERO.T (C1 NUMBER, C2 VARCHAR(2000));
INSERT INTO TIBERO.T VALUES(111,'A');
INSERT INTO TIBERO.T VALUES(222,'B');
INSERT INTO TIBERO.T VALUES(333,'C');
INSERT INTO TIBERO.T VALUES(444,'D');
INSERT INTO TIBERO.T VALUES(555,'E');
INSERT INTO TIBERO.T VALUES(666,'F');
-- 데이터 조회
SELECT C1, SUBSTR(C2, 1, 1) C2 FROM TIBERO.T ;
C1 C2
---------- ----
111 A
222 B
333 C
444 D
555 E
666 F
-- 파일 및 블록의 번호를 조회
SELECT C1
, ROWID
, DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID) AS BLKNO
, DBMS_ROWID.ROWID_TO_RELATIVE_FNO(ROWID) AS FNO2
FROM TIBERO.T ;
C1 ROWID BLKNO FNO2
---------- -------------------- ---------- ----------
111 AAABE2AACAAAAAOAAA 14 2
222 AAABE2AACAAAAAOAAB 14 2
333 AAABE2AACAAAAAOAAC 14 2
444 AAABE2AACAAAAAOAAD 14 2
555 AAABE2AACAAAAAOAAE 14 2
666 AAABE2AACAAAAAOAAF 14 2
블록 덤프 실행
위에서 조회된 블록을 대상으로 수행합니다.
-- 블록 덤프 수행
ALTER SYSTEM DUMP DATAFILE 2 BLOCK 14 ;
-- 다른 세션에서 덤프 확인
[tibero@tibero tracedump]$ ls -l
-rw-r--r-- 1 tibero dba 2095 Nov 27 09:06 tb_dump_1575_145_3128.trc
블록 덤프 확인
생성된 덤프 파일을 열어서 확인합니다.
**Dump start at 2025-11-27 09:16:51
DUMP of BLOCK file #2 block #14
**Dump start at 2025-11-27 09:16:51
data block Dump[dba=02_00000014(8388622),tsn=0000.000157fa,type=13,seqno =1, flag=16]
--------------------------------------------------------------
sgmt_id=4406 cleanout_tsn=0000.0001580e btxcnt=2
l1dba=02_00000007(8388615), offset_in_l1=7
btx xid undo fl tsn/credit
00 0004.46.0018 01_00003265.00001.00015 A 0000.000157fa
01 0000.00.0000 00_00000000.00000.00000 I 0000.00000000
--------------------------------------------------------------
Data block dump:
dlhdr_size=20 freespace=8030 freepos=8134 symtab_offset=0 rowcnt=6
Row piece dump:
rp 0 8179: [9] flag=--H-FL-- itlidx=0 colcnt=2
col 0: [4]
0000: 03 C2 81 8B ....
col 1: [2]
0000: 01 41 .A
rp 1 8170: [9] flag=--H-FL-- itlidx=0 colcnt=2
col 0: [4]
0000: 03 C2 82 96 ....
col 1: [2]
0000: 01 42 .B
rp 2 8161: [9] flag=--H-FL-- itlidx=0 colcnt=2
col 0: [4]
0000: 03 C2 83 A1 ....
col 1: [2]
0000: 01 43 .C
rp 3 8152: [9] flag=--H-FL-- itlidx=0 colcnt=2
col 0: [4]
0000: 03 C2 84 AC ....
col 1: [2]
0000: 01 44 .D
rp 4 8143: [9] flag=--H-FL-- itlidx=0 colcnt=2
col 0: [4]
0000: 03 C2 85 B7 ....
col 1: [2]
0000: 01 45 .E
rp 5 8134: [9] flag=--H-FL-- itlidx=0 colcnt=2
col 0: [4]
0000: 03 C2 86 C2 ....
col 1: [2]
0000: 01 46 .F
End of data block dump
itl(Interested Transaction LIst) 0 의 경우 fl(flag)값이 ‘A’로 등록되어 있습니다.
이는 현재 아직 커밋되지 않은 트랜잭션 active 상태를 의미합니다.
현재 1개의 블록(14)에 대해 6개의 rp(row piece)가 존재합니다.
itl 0에서 xid 값이 0004.46.0018인데, v$transaction 뷰의 3가지 컬럼(USN, SLOT, WRAP) 값을 의미합니다.
- USN=4 : 4번 언두세그먼트에서 롤백을 위한 정보를 저장
- SLOT=46 : 4번 언두세그먼트에서 헤더 블록 내에 있는 46번째 트랜잭션 슬롯에 트랜잭션과 관련된 정보를 저장
- WRAP=18 : 해당 트랜잭션 슬롯이 18번 재사용 되었음을 의미(재사용 될 때마다 1씩 증가)
itl 0에서 uea 값은 언두 블록 내의 주소를 나타냅니다. 해당 언두 블록에 가면, 데이터 블록에 대한 언두 데이터를 저장하고 있습니다.
즉, 본 덤프의 결과 commit 이전 상태이므로 6건의 row 모두 itl 정보의 fl값이 'A', 즉 Acitve 상태로써 트랜잭션이 진행 중임을 알 수 있습니다.