一、 概念介绍
在Oracle数据库中使用free list管理空闲空间(free space)的表叫做Free List Managed (FLM)表。在FLM中将高水位以下空闲块的dba地址通过单向链表连接,用于业务表的insert和update操作,本节以system表空间中C_USER#的段头块信息为例,使用Oracle bbed和Oracle dump工具解析flm段头块结构。
二、 测试数据信息
SQL> select segment_name, segment_type,header_file, header_block, extents, max_extents
fromdba_segments
where segment_name = 'C_USER#'; 2 3
SEGMENT_NAME SEGMENT_TYPE HEADER_FILEHEADER_BLOCK EXTENTS MAX_EXTENTS
-------------------- ----------------------------- ------------ ---------- -----------
C_USER# CLUSTER 1 208 1 2147483645
SQL>
SQL> select segment_name,tablespace_name, extent_id, file_id, block_id, blocks
fromdba_extents
where segment_name = 'C_USER#'; 2 3
SEGMENT_NAME TABLESPACE_NAME EXTENT_ID FILE_ID BLOCK_ID BLOCKS
-------------------- ------------------------------ ---------- ---------- ----------
C_USER# SYSTEM 0 1 208 8
SQL>
三、 flm表块分布
seghdr块是flm表中extent 0的个数据块。使用Oracle dump工具分析表的段头块信息,
alter session set tracefile_identifier='orastar_flm_1';
oradebug setmypid
alter system dump datafile 1 block 208;
oradebug close_trace
oradebug tracefile_name
输出文件:/u01/app/oracle/diag/rdbms/epmsn/epmsn/trace/epmsn_ora_15664_orastar_flm_1.trc
图1 flm sgmentlayout
四、 flm物理结构
flm物理结构由CacheHeader、Extent Control、ExtentTable、Segment Header Control、SegmentFree Space Array及Transaction Free Space Array六层结构组成,
图2 flm sgmhdr结构
4.1 Cache Header
图3 bbed kchb
图4 dump kchb
4.2 Extent Control
图5 bbed ExtentControl Header
图6 dump ExtentControl Header
图7 bbed MapHeader
4.3 Extent Table
extent map中包括1个map信息,从0x004000d1开始的7个blocks。
BBED> p ktetb
struct ktetb[0], 8 bytes @108
ub4 ktetbdba @108 0x004000d1
ub4 ktetbnbk @112 0x00000007
BBED>
图8 bbed ExtentMap
图9 rdba of ExtentMap
4.4 Segment Header Control
图10 bbed SegmentHeader Control
4.5 Segment Free Space Array
表示hwm以下的数据块的状态,
flg:: 表示free list是否被使用,状态有used和unused 2个状态。
lhd: 表示free list的头块地址。
ltl: 表示free list的尾块地址。
图11 bbed SegmentFree Space Array
图12 dump SegmentFree Space Array
4.6 Transaction Free Space Array
图13 bbed TransactionFree Space Array
图14 dump TransactionFree Space Array
五、 说明
1、以上内容为个人多次测试结果,由于个人原因,如有分析不足之处还请见谅及指正。
2、文章涉及内容,请勿在生产环境模拟。
纸上得来终觉浅,绝知此事要躬行。--陆游
感谢您的阅读,如果您觉得有所收获,也欢迎把文章分享给您的朋友。
长按识别二维码关注我们