暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

崖山数据库段空间的分析和解读(head表)

原创 杨有田 2024-05-22
409

这篇文章主要介绍HEAP表段空间管理。

崖山数据库段空间通过ASSM(自动段空间管理)来进行管理,主要由段头块、L2级块、L1级块、L0级块和heap data块(数据块)组成。

1.表类型简要介绍

表的类型,包括HEAP表、TAC表、LSC表和external表:

  • HEAP Table:行存表,采用段页式结构,主要适用于OLTP场景。

  • TAC Table (Transaction Analytics Columnar Table) :列存表,采用段页式结构,主要适用于实时分析场景。

  • LSC Table (Large-scale Storage Columnar Table):列存表,通过列存结构组织数据,主要适用于海量稳态数据的交互式分析场景。

  • external Table: 外部表为一种表结构存储在数据库内,而数据存储在数据库外的特殊表类型。由于外部表的数据未存储在数据库内,因此基于行的所有DDL操作,如索引、行迁移、闪回等,均不适用于外部表

参数DEFAULT_TABLE_TYPE的值(HEAP/TAC/LSC)指定创建表类型,支持在线修改。同时,通过ORGANIZATION语法在创建表对象时将其指定为任意的表类型。

HEAP Table

TAC Table

可变列式存储区采用段页式管理(MCOL格式),每个列的数据集中存储,并实现in-place update。每个列的一批记录组成一个Batch,作为数据读取的基本单位。

记录TAC表的总体入口信息。

  • Entry Block:入口Block,记录TAC表的相关统计信息、Slice的空闲位图及辅助信息。
  • Segment Entry Block:记录表按列逻辑分割后的所有Segment信息。
  • Column Entry Block:记录所有列的元数据信息。

LSC Table

可变列式存储区和稳态数据区的数据均按照表或分区进行组织,对应着Active Slices和Stable Slices两部分,其中Active Slices采用段页式存储(MCOL格式),Stable Slices采用对象存储( SCOL格式 )

 

2.段空间部分字段解析

这里仅介绍部分字段,其他同数据文件块类似的字段不做解释,具体可以参考:崖山数据库的数据文件分析与解读

实验通过创建一个heap表并插入数据,dump 相关数据文件,在线日志文件,以及undo文件进行分析。

2.1 位图块

默认三级位图块,分别L0、L1和L2,实现段空间的管理。

L0级位图块: 指向数据块的地址访问和L1级位图块
L1级位图块: 指向L0的地址范围和L2级位图块
L2级位图块: 指向L2的地址范围

0级位图块

block: 128
assm
head: id 0-128, type 32, instance id 0 lsn 41537, checksum: 0, change num 53, isEncrypted 0, isCompressed 0
dataOid: 2390, extent change number: 0    parent block: 0-129, slot: 0, freeness: 0, capacity: 1024, count: 16, level: 0
freeness[1]: count: 0: 
freeness[2]: count: 0: 
freeness[3]: count: 0: 
freeness[4]: count: 0: 
freeness[5]: count: 0: 
freeness[6]: count: 0: 
unformat: 0, lastActiveTime: 2024-05-01 09:48:49.228272, instanceId: 0    firstBlock: 4, firstFreeBlock: 0, nranges: 2,
range index: 0, range length: 8, start bid:    0-128  
0. block:    0-128    freeness: 0, xo: -1    1. block:    0-129    freeness: 0, xo: -1    2. block:    0-130    freeness: 0, xo: -1    3. block:    0-131    freeness: 0, xo: -1    
4. block:    0-132    freeness: 0, xo: -1    5. block:    0-133    freeness: 0, xo: -1    6. block:    0-134    freeness: 0, xo: -1    7. block:    0-135    freeness: 0, xo: -1    
range index: 1, range length: 8, start bid:    0-136  
0. block:    0-136    freeness: 0, xo: -1    1. block:    0-137    freeness: 0, xo: -1    2. block:    0-138    freeness: 0, xo: -1    3. block:    0-139    freeness: 0, xo: -1    
4. block:    0-140    freeness: 0, xo: -1    5. block:    0-141    freeness: 0, xo: -1    6. block:    0-142    freeness: 0, xo: -1    7. block:    0-143    freeness: 0, xo: -1    

xid count: 0, xid offset count: 0: 
xid list: 
0. NULL 1. NULL 2. NULL 3. NULL 
4. NULL 5. NULL 6. NULL 7. NULL 
8. NULL 9. NULL 10. NULL 11. NULL 
12. NULL 13. NULL 14. NULL 15. NULL 
16. NULL 17. NULL 18. NULL 19. NULL 
20. NULL 21. NULL 22. NULL 23. NULL 
24. NULL 25. NULL 26. NULL 27. NULL 
28. NULL 29. NULL 30. NULL 31. NULL 
32. NULL 33. NULL 34. NULL 35. NULL 
36. NULL 37. NULL 38. NULL 39. NULL 
40. NULL 41. NULL 42. NULL 43. NULL 
44. NULL 45. NULL 46. NULL 47. NULL 
48. NULL 49. NULL 50. NULL 51. NULL 
52. NULL 53. NULL 54. NULL 55. NULL 
56. NULL 57. NULL 58. NULL 59. NULL 
60. NULL 61. NULL 62. NULL 63. NULL 
tail: change num: 53

----------------------------------------------------------------------------------------------------------------------------------------------------

lsn 41537,日志序号(redo),逐渐递增,用来记录一组数据块的变化。

dataOid: 2390,对象ID(dba_Objects.object_id),不是数据对象ID(data_object_id)。

parent block: 0-129,上级块(父块)相对文件号0,块号129。

freeness: 0, 块可用空间的程度,0表示该块已分配且没有可用空间,5或者6表示块存在可用空间,255表示块未格式化。

capacity: 1024,容量大小1M,也即是1个L0级位图块,最大可以管理256个8K的数据块?

count: 16, 表示块数。

level: N,表示位图块级别

                0,一级位图块

                1,二级位图块

                2,三级位图块

firstBlock: 4,表示第一个可用数据块(4. block:    0-132  )

nranges: 2,表示number range,管理的范围,这里管理2个range,分别是range 0和range 1,每个range管理8个blocks,(range index: 0, range length: 8 和 range index: 1, range length: 8)

 

1级位图块

block: 129
assm
head: id 0-129, type 32, instance id 0 lsn 41778, checksum: 0, change num 126, isEncrypted 0, isCompressed 0
dataOid: 2390, extent change number: 0    parent block: 0-130, slot: 0, freeness: 6, capacity: 1010, count: 20, level: 1
freeness[1]: count: 2: 
freeness[2]: count: 2: 
freeness[3]: count: 2: 
freeness[4]: count: 2: 
freeness[5]: count: 2: 
freeness[6]: count: 2: 

0. block:    0-128    freeness: 0, instance id: 0     1. block:    0-144    freeness: 0, instance id: 0     2. block:    0-160    freeness: 0, instance id: 0     3. block:    0-176    freeness: 0, instance id: 0     
4. block:    0-192    freeness: 0, instance id: 0     5. block:    0-208    freeness: 0, instance id: 0     6. block:    0-224    freeness: 0, instance id: 0     7. block:    0-240    freeness: 0, instance id: 0     
8. block:    0-256    freeness: 0, instance id: 0     9. block:    0-257    freeness: 0, instance id: 0     10. block:    0-384    freeness: 0, instance id: 0     11. block:    0-385    freeness: 0, instance id: 0     
12. block:    0-512    freeness: 0, instance id: 0     13. block:    0-513    freeness: 0, instance id: 0     14. block:    0-640    freeness: 0, instance id: 0     15. block:    0-641    freeness: 0, instance id: 0     
16. block:    0-768    freeness: 0, instance id: 0     17. block:    0-769    freeness: 0, instance id: 0     18. block:    0-896    freeness: 6, instance id: 0     19. block:    0-897    freeness: 6, instance id: 0     
tail: change num: 126

----------------------------------------------------------------------------------------------------------------------------------------------------

2级位图块

block: 130
assm
head: id 0-130, type 32, instance id 0 lsn 41778, checksum: 0, change num 106, isEncrypted 0, isCompressed 0
dataOid: 2390, extent change number: 0    parent block: 63-67108863, slot: 65535, freeness: 6, capacity: 1024, count: 1, level: 2
freeness[1]: count: 1: 
freeness[2]: count: 1: 
freeness[3]: count: 1: 
freeness[4]: count: 1: 
freeness[5]: count: 1: 
freeness[6]: count: 1: 

0. block:    0-129    freeness: 6     
tail: change num: 106

----------------------------------------------------------------------------------------------------------------------------------------------------

parent block: 63-67108863, 63表示相对文件号,也就是最后一个,说明二级位图块后不存在L3级位图块。这里也可以推算出,崖山数据库一个表空间最多可以容纳64个文件,相对文件号0-63;67108863表示最大块号,同理,崖山数据库支持block 大小为8K,16K和32K, 可以计算出单个数据文件最大分别为512GB、1TB和2TB。

 

2.2 段头块

段头块包括extents lhwm/extents hwm/extent ctrl/extents map等信息,其中map nodes,实际上指向数据块的地址,所以可以跳过段头块和L0/L1/L2位图块, 通过ROWID直接访问map nodes里面的地址来进行全表扫描获取数据,具体操作参考ROWID解析
    

block: 131
segment
head: id 0-131, type 33, instance id 0 lsn 41778, checksum: 0, change num 66, isEncrypted 0, isCompressed 0
segType: heap 
dataOid: 2390
ssm tree: search entry: 0-129, level: 1 
level[0]: ssm block count: 20,  current block: 0-897 
level[1]: ssm block count: 1,  current block: 0-129 
level[2]: ssm block count: 1,  current block: 0-130 
hwm L1: 0-897 
hwm L1 node: 63 
extents lhwm: block id: 0-132, extent idx: 0, map block: 63-67108863, offset: 0, blkIdx: 4, used block count: 4. lhwmL1: 0-128
extent ctrl: extent count: 22, block count: 896, map count: 0 , extent map offset: 380
last map block: 63-67108863, offset: 21, extents change number: 0
extents hwm: block id: 0-1024, extent idx: 21, offset: 21, unformatted block count: 0, used block count: 896, map block: 63-67108863 
extents map: extent count: 22, capacity: 487, next map: 63-67108863, map nodes:
id:     0-128        size: 8     
id:     0-136        size: 8     
id:     0-144        size: 8     
id:     0-152        size: 8     
id:     0-160        size: 8     
id:     0-168        size: 8     
id:     0-176        size: 8     
id:     0-184        size: 8     
id:     0-192        size: 8     
id:     0-200        size: 8     
id:     0-208        size: 8     
id:     0-216        size: 8     
id:     0-224        size: 8     
id:     0-232        size: 8     
id:     0-240        size: 8     
id:     0-248        size: 8     
id:     0-256        size: 128   
id:     0-384        size: 128   
id:     0-512        size: 128   
id:     0-640        size: 128   
id:     0-768        size: 128   
id:     0-896        size: 128   

0. L1 block id:     0-128        data block id:     0-132       
1. L1 block id:     0-128        data block id:     0-136       
2. L1 block id:     0-144        data block id:     0-145       
3. L1 block id:     0-144        data block id:     0-152       
4. L1 block id:     0-160        data block id:     0-161       
5. L1 block id:     0-160        data block id:     0-168       
6. L1 block id:     0-176        data block id:     0-177       
7. L1 block id:     0-176        data block id:     0-184       
8. L1 block id:     0-192        data block id:     0-193       
9. L1 block id:     0-192        data block id:     0-200       
10. L1 block id:     0-208        data block id:     0-209       
11. L1 block id:     0-208        data block id:     0-216       
12. L1 block id:     0-224        data block id:     0-225       
13. L1 block id:     0-224        data block id:     0-232       
14. L1 block id:     0-240        data block id:     0-241       
15. L1 block id:     0-240        data block id:     0-248       
16. L1 block id:     0-256        data block id:     0-258       
17. L1 block id:     0-384        data block id:     0-386       
18. L1 block id:     0-512        data block id:     0-514       
19. L1 block id:     0-640        data block id:     0-642       
20. L1 block id:     0-768        data block id:     0-770       
21. L1 block id:     0-896        data block id:     0-898       
tail: change num: 66

 

ssm tree: search entry: 0-129, level: 1 , 自动段空间搜索入口L1 0-129,也即是二级位图块

level[0]: ssm block count: 20,  current block: 0-897 ,自动段空间L0级块数量,共计20个,当前L0级块为0-897

level[1]: ssm block count: 1,  current block: 0-129 ,自动段空间L1级块数量,共计1个,当前L1级块为0-129

level[2]: ssm block count: 1,  current block: 0-130 ,自动段空间L2级块数量,共计1个,当前L1级块为0-130

hwm L1: 0-897 ,L1级位图块的高水位块,也就是当前分配L1级位图块管理的最后一个L0级块

 

extents lhwm: ????

extent ctrl: 扩展控制信息

        extent count: 22, 扩展数,共计22个extents

        block count: 896, 扩展管理的块数,共计896个blocks

 

extents hwm:  扩展高水位

        block id: 0-1024, 高水位的块号

        extent idx: 21,高水位扩展号(extent)

        offset: 21, 扩展号的偏移值

        unformatted block count: 0, 高水位线上未格式化的快数

        used block count: 896,当前使用的块数

 

extents map: 扩展映射信息

        extent count: 22, 扩展数量,共计22个extents

        capacity: 487,

        next map: 63-67108863, 下一个map信息,该值表示最大,没有下一个map

        map nodes:  扩展map详细信息

 

 

2.3 数据块

block: 132
heap data
head: id 0-132, type 4, instance id 0 lsn 41793, checksum: 0, change num 133, isEncrypted 0, isCompressed 0
dataOid: 2390, extent change number: 0
block scn: 560005650895253504, map block: 0-128, slot: 4, freeness: 0
rows: 127, dirs: 127, xslots: 2, si xslots: 0, free size: 730, free begin: 7156, free end: 7886 free dir: 4095 
row[0]:       size: 52       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[1]:       size: 52       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[2]:       size: 52       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[3]:       size: 52       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[4]:       size: 52       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[5]:       size: 52       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[6]:       size: 52       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[7]:       size: 52       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[8]:       size: 52       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[9]:       size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[10]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[11]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[12]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[13]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[14]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[15]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[16]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[17]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[18]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[19]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[20]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[21]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[22]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[23]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[24]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[25]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[26]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[27]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[28]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[29]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[30]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[31]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[32]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[33]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[34]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[35]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[36]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[37]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[38]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[39]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[40]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[41]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[42]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[43]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[44]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[45]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[46]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[47]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[48]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[49]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[50]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[51]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[52]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[53]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[54]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[55]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[56]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[57]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[58]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[59]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[60]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[61]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[62]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[63]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[64]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[65]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[66]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[67]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[68]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[69]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[70]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[71]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[72]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[73]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[74]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[75]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[76]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[77]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[78]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[79]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[80]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[81]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[82]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[83]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[84]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[85]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[86]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[87]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[88]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[89]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[90]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[91]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[92]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[93]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[94]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[95]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[96]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[97]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[98]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[99]:      size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[100]:     size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[101]:     size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[102]:     size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[103]:     size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[104]:     size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[105]:     size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[106]:     size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[107]:     size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[108]:     size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[109]:     size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[110]:     size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[111]:     size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[112]:     size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[113]:     size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[114]:     size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[115]:     size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[116]:     size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[117]:     size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[118]:     size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[119]:     size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[120]:     size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[121]:     size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[122]:     size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[123]:     size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[124]:     size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[125]:     size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0
row[126]:     size: 56       xslot id: 0       columns: 4        format/link/migr/deleted/compact:1/0/0/0/0

xslot[0]:  xid: 47-2328-5            active: 0 owscn: 0 fastcommit: 1 ura: block: 0-24735, ver: 0, dir: 152 ssn: 634564608  fsc: 35372 mfb: 1989  scn: 560005650895253504 
xslot[1]:  xid: 0-0-0                active: 0 owscn: 0 fastcommit: 0 ura: block: 0-0, ver: 0, dir: 0 ssn: 0          fsc: 0     mfb: 0     scn: 0 
tail: change num: 133

----------------------------------------------------------------------------------------------------------------------------------------------------

block scn: 560005650895253504, 块SCN号,每个块有唯一的SCN

map block: 0-128, 映射的位图块,也即是管理该数据块的位图块

rows: 127,块存储的数据行数

dirs: 127,块里面的槽数

xslots: 2,事务槽数

free size: 730, free begin: 7156, free end: 7886, 块空间使用情况

format/link/migr/deleted/compact:1/0/0/0/0, 标识符号,数字0或者1表示

3.ROWID解析

ROWID,根据每一行数据所在物理地址信息生成一个全局唯一记录,定义格式如下:

ROWID的数据格式为dataoid:spaceid:fileid:blockid:dir

        dataoid:data object id,行所在的Segment的ID(DBA_OBJECTS.DATA_OBJECT_ID)

        spaceid:space id,行所在的表空间的ID(V$TABLESPACE.ID)

        fileid:file id,行所在数据文件在对应表空间中的绝对数据文件ID(V$DATAFILE.ID)

        blockid:block id,行所在数据块在对应文件中的块ID

        dir:行在数据块上的槽位

 

DBMS_ROWID包提供了一组内置的函数,共计3个ROWID_BLOCK_NUMBER, ROWID_RELATIVE_FNO, ROWID_ROW_NUMBER
,用于获取ROWID的数据块号blockId、相对文件号fileId和行号dir信息(目前不支持DBA_OBJECTS查询包相关信息)。

比如使用函数dbms_rowid.ROWID_BLOCK_NUMBER查询数据块0-132的数据:

SQL> SELECT rowid,* FROM leo01 WHERE dbms_rowid.ROWID_BLOCK_NUMBER(rowid)=132;

ROWID                                                          NUM RNUM                          XCHAR                 RDATE                                            
-------------------------------------------- --------------------- ----------------------------- --------------------- ------------------------------------------------ 
2480:6:0:132:0                                                   1 Row : 1                       XXXXXXXXXXXXXXXXXXXX  2024-05-21                                      
2480:6:0:132:1                                                   2 Row : 2                       XXXXXXXXXXXXXXXXXXXX  2024-05-22                                      
2480:6:0:132:2                                                   3 Row : 3                       XXXXXXXXXXXXXXXXXXXX  2024-05-23                                      
2480:6:0:132:3                                                   4 Row : 4                       XXXXXXXXXXXXXXXXXXXX  2024-05-24                                      
2480:6:0:132:4                                                   5 Row : 5                       XXXXXXXXXXXXXXXXXXXX  2024-05-25                                      
2480:6:0:132:5                                                   6 Row : 6                       XXXXXXXXXXXXXXXXXXXX  2024-05-26                                      
2480:6:0:132:6                                                   7 Row : 7                       XXXXXXXXXXXXXXXXXXXX  2024-05-27                                      
2480:6:0:132:7                                                   8 Row : 8                       XXXXXXXXXXXXXXXXXXXX  2024-05-28                                      
2480:6:0:132:8                                                   9 Row : 9                       XXXXXXXXXXXXXXXXXXXX  2024-05-29                                      
2480:6:0:132:9                                                  10 Row : 10                      XXXXXXXXXXXXXXXXXXXX  2024-05-30                                      
2480:6:0:132:10                                                 11 Row : 11                      XXXXXXXXXXXXXXXXXXXX  2024-05-31                                      
2480:6:0:132:11                                                 12 Row : 12                      XXXXXXXXXXXXXXXXXXXX  2024-06-01                                      
2480:6:0:132:12                                                 13 Row : 13                      XXXXXXXXXXXXXXXXXXXX  2024-06-02                                      
2480:6:0:132:13                                                 14 Row : 14                      XXXXXXXXXXXXXXXXXXXX  2024-06-03                                      
2480:6:0:132:14                                                 15 Row : 15                      XXXXXXXXXXXXXXXXXXXX  2024-06-04                                      
......

 

构建rowid的值来查询,比如查询0-132块的内容:

SQL> SELECT * FROM leo01 WHERE rowid>='2480:6:0:132:0' AND rowid<='2480:6:0:132:130';

                  NUM RNUM                          XCHAR                 RDATE                                            
--------------------- ----------------------------- --------------------- ------------------------------------------------ 
                    1 Row : 1                       XXXXXXXXXXXXXXXXXXXX  2024-05-21                                      
                    2 Row : 2                       XXXXXXXXXXXXXXXXXXXX  2024-05-22                                      
                    3 Row : 3                       XXXXXXXXXXXXXXXXXXXX  2024-05-23                                      
                    4 Row : 4                       XXXXXXXXXXXXXXXXXXXX  2024-05-24                                      
                    5 Row : 5                       XXXXXXXXXXXXXXXXXXXX  2024-05-25                                      
                    6 Row : 6                       XXXXXXXXXXXXXXXXXXXX  2024-05-26                                      
                    7 Row : 7                       XXXXXXXXXXXXXXXXXXXX  2024-05-27                                      
                    8 Row : 8                       XXXXXXXXXXXXXXXXXXXX  2024-05-28 

.......

 

 

 

 

关于延迟段创建

通过segment creation deferred|immediate,指定创建表对象时,segment的创建方式是立即创建或延迟创建,临时表不支持该语法。
IMMEDIATE指立即创建,DEFERRED指延迟创建,若省略,默认为延迟创建。

如果表被truncate后,空间会被回收重用,dba_segments视图和v$segments视图也无法查询到段的信息。

 

SQL> col owner for a10
SQL> col table_name for a15
SQL> select owner,table_name,segment_deferred from dba_tables where table_name='LEO01';

OWNER      TABLE_NAME      SEGMENT_DEFERRED 
---------- --------------- ---------------- 
SYS        LEO01           Y               

1 row fetched.

SQL> SELECT owner,segment_name,HEADER_FILE ,HEADER_BLOCK,blocks  FROM dba_segments WHERE segment_name='LEO01';

OWNER      SEGMENT_NAME                                                               HEADER_FILE HEADER_BLOCK                BLOCKS 
---------- ---------------------------------------------------------------- --------------------- ------------ --------------------- 
SYS        LEO01                                                                                0          131                 51200

1 row fetched.

SQL> truncate table leo01;

Succeed.

SQL> SELECT owner,segment_name,HEADER_FILE ,HEADER_BLOCK,blocks  FROM dba_segments WHERE segment_name='LEO01';

OWNER      SEGMENT_NAME                                                               HEADER_FILE HEADER_BLOCK                BLOCKS 
---------- ---------------------------------------------------------------- --------------------- ------------ --------------------- 

0 rows fetched.

SQL> 

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论