(새 문서: === 데이터 블럭의 구조 === https://misogain.wordpress.com/wp-content/uploads/2024/05/data_block_layer.png) |
편집 요약 없음 |
||
| (같은 사용자의 중간 판 3개는 보이지 않습니다) | |||
| 2번째 줄: | 2번째 줄: | ||
https://misogain.wordpress.com/wp-content/uploads/2024/05/data_block_layer.png | https://misogain.wordpress.com/wp-content/uploads/2024/05/data_block_layer.png | ||
===블럭의 구성 항목별 사이즈 조회 === | |||
<source lang=sql> | |||
select component, type, description, type_size | |||
from v$type_size | |||
where component in ('KCB', 'KTB'); | |||
</source> | |||
<source lang=sql> | |||
COMPONEN TYPE DESCRIPTION TYPE_SIZE | |||
-------- -------- -------------------------------- ---------- | |||
KCB KCBH BLOCK COMMON HEADER 20 | |||
KTB KTBIT TRANSACTION VARIABLE HEADER 24 | |||
KTB KTBBH TRANSACTION FIXED HEADER 48 | |||
KTB KTBBH_BS TRANSACTION BLOCK BITMAP SEGMENT 8 | |||
</source> | |||
=== Data Block Header === | |||
https://misogain.wordpress.com/wp-content/uploads/2024/05/block_header.png | |||
* Cache Layer와 Transaction Layer 로 구성됨 | |||
==== Cache Layer ==== | |||
* Cache Layer 저장 정보 | |||
# Data Block Address(DBA) | |||
# Block Type(ex. Table, Index, Undo, ...) | |||
# Block Format(ex. v6, v7, v8, ...) | |||
# System Change Number(SCN: 복구작업 등에 사용됨) | |||
==== Transaction Layer ==== | |||
https://misogain.wordpress.com/wp-content/uploads/2024/05/block_header_transaction_layer.png | |||
* Transaction Layer 는 Fixed(고정) 와 Variable(가변) 영역으로 구성됨 | |||
# Fixed(고정) 영역 | |||
#:* v$type_size에서 KTBBH | |||
## Block Type | |||
## 마지막 수행된 Block Cleanout 시간 | |||
## ITL Entry 정보 | |||
## Free List Link 정보 | |||
## Free Space Lock 정보 | |||
# Variable(가변) 영역 | |||
#:* v$type_size에서 KTBIT | |||
## 해당 Block에 있는 Row를 변경하길 원하는 ITL 관련 정보 | |||
{{틀:서브 | |||
|제목= ITL(Interested Transaction List): | |||
|내용 = 간단히 말하면, 변경 대기자 명단을 말함. | |||
# 특정 Block에 데이터를 변경해야 할 경우 해당 Block의 사용자 명단에 자신의 정보를 적고 변경을 해야 함. | |||
# 만약 다른 사용자가 그 Block을 수정하고 있어서 진입하지 못하는 상황이라면 대기자 명단(ITL)에 자신의 정보를 적고 자신의 순서가 될 때까지 기다림. | |||
}} | |||
=== Data Header === | |||
# Table Directory | |||
# Row Directory | |||
## 첫 번째 빈 공간의 포인터 주소 | |||
## 빈 공간의 시작과 끝의 offset 주소 | |||
## 사용 가능한 빈 공간의 양 | |||
# Free Space | |||
# Row Data | |||
* Block 에 데이터가 insert 될 경우, 데이터가 우선 가운데(Free space)로 입력된 후 실제 데이터는 Row data로, 데이터의 정보는 Row Directory로 기록됨. | |||
* Block 에 데이터가 update될 경우, 일단 먼저 기존 공간을 재활용하려고 시도함. | |||
*: 만약 데이터의 용량이 기존 공간을 초과하고, 비어있는 공간이 연속적이지 않다면 kdbcps() 함수를 호출해서 공간을 압축함. | |||
[[category:oracle]] | |||
2025년 9월 22일 (월) 14:14 기준 최신판
데이터 블럭의 구조
블럭의 구성 항목별 사이즈 조회
select component, type, description, type_size
from v$type_size
where component in ('KCB', 'KTB');
COMPONEN TYPE DESCRIPTION TYPE_SIZE -------- -------- -------------------------------- ---------- KCB KCBH BLOCK COMMON HEADER 20 KTB KTBIT TRANSACTION VARIABLE HEADER 24 KTB KTBBH TRANSACTION FIXED HEADER 48 KTB KTBBH_BS TRANSACTION BLOCK BITMAP SEGMENT 8
Data Block Header
- Cache Layer와 Transaction Layer 로 구성됨
Cache Layer
- Cache Layer 저장 정보
- Data Block Address(DBA)
- Block Type(ex. Table, Index, Undo, ...)
- Block Format(ex. v6, v7, v8, ...)
- System Change Number(SCN: 복구작업 등에 사용됨)
Transaction Layer
- Transaction Layer 는 Fixed(고정) 와 Variable(가변) 영역으로 구성됨
- Fixed(고정) 영역
- v$type_size에서 KTBBH
- Block Type
- 마지막 수행된 Block Cleanout 시간
- ITL Entry 정보
- Free List Link 정보
- Free Space Lock 정보
- Variable(가변) 영역
- v$type_size에서 KTBIT
- 해당 Block에 있는 Row를 변경하길 원하는 ITL 관련 정보
ITL(Interested Transaction List):
간단히 말하면, 변경 대기자 명단을 말함.
- 특정 Block에 데이터를 변경해야 할 경우 해당 Block의 사용자 명단에 자신의 정보를 적고 변경을 해야 함.
- 만약 다른 사용자가 그 Block을 수정하고 있어서 진입하지 못하는 상황이라면 대기자 명단(ITL)에 자신의 정보를 적고 자신의 순서가 될 때까지 기다림.
Data Header
- Table Directory
- Row Directory
- 첫 번째 빈 공간의 포인터 주소
- 빈 공간의 시작과 끝의 offset 주소
- 사용 가능한 빈 공간의 양
- Free Space
- Row Data
- Block 에 데이터가 insert 될 경우, 데이터가 우선 가운데(Free space)로 입력된 후 실제 데이터는 Row data로, 데이터의 정보는 Row Directory로 기록됨.
- Block 에 데이터가 update될 경우, 일단 먼저 기존 공간을 재활용하려고 시도함.
- 만약 데이터의 용량이 기존 공간을 초과하고, 비어있는 공간이 연속적이지 않다면 kdbcps() 함수를 호출해서 공간을 압축함.