段(段)是一种在数据库中消耗物理存储空间的任何实体(一个段可能存在于多个数据文件中,因为物理的数据文件
是组成逻辑表空间的基本物理存储单位)
最近在学习段(段),区间(程度)时,对段的HEADER_BLOCK有一些疑问,本文记录一下探究的实验过程以及相关总结,,如有不对的地方,敬请指出,以斯科特。EMP表为例(下面测试环境为Oracle数据库10 g版本10.2.0.5.0 - 64位生产):
选择FILE_ID, BLOCK_ID, 块 从DBA_EXTENTS 老板=,老板的 和SEGMENT_NAME=', TABLE_NAME ';>之前,
选择HEADER_FILE ,HEADER_BLOCK ,字节 块, ,区段 从DBA_SEGMENTS 所有者=,所有者和SEGMENT_NAME='和SEGMENT_NAME;
如上所示,DBA_SEGMENTS中的HEADER_BLOCK与DBA_EXTENTS的BLOCK_ID不同(HEADER_BLOCK:文件编号为4的第27个块,区间的第一个块的BLOCK_ID为第25个块),这个的原因如下:
一个段的第一个区的第一个块是第一层位图块,第二个块是二级位图块,这两个块是用来管理自由块的,第三个块是PAGETABLE段头,这个块才是部门里的HEADER_BLOCK,再后面的块就是用来记录数据的,所以25 + 2=27。详细可以参考《循序渐进ORCLE:数据库管理,优化与备份》这本书的第5章。
下面我们创建一个表、测试一下是否也是这个规律,如下所示:
完成;创建表TEST1.MMM 2 3从DBA_OBJECTS SELECT *; 创建表。 完成;坳SEGMENT_NAME A32; 完成;选择SEGMENT_NAME 2,FILE_ID 3,BLOCK_ID 4块 5从DBA_EXTENTS 6,SEGMENT_NAME=班拧焙退姓?癟EST1” 7 ORDER BY BLOCK_ID ASC; SEGMENT_NAME FILE_ID BLOCK_ID块 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 嗯76 9 8 嗯76 17日8 嗯76 25日8 嗯76 33 8 嗯76 41 8 嗯76 49 8 嗯76 57 8 嗯76 65 8 嗯76 73 8 嗯76 81 8 嗯76 89 8 SEGMENT_NAME FILE_ID BLOCK_ID块 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 嗯76 97 8 嗯76 105 8 嗯76 113 8 嗯76 121 8 嗯76 129 8 嗯76 137 128 嗯76 265 128 嗯76 393 128 嗯76 521 128 嗯76 649 128 嗯76 777 128 22行选择。 完成;选择HEADER_FILE 2,HEADER_BLOCK 3个字节 4块 5、区段 6从DBA_SEGMENTS 7,主人=TEST1和SEGMENT_NAME='嗯'; HEADER_FILE HEADER_BLOCK字节块区段 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 76 11 7340032 896 22如上所示,段对象TEST1。嗯的header_block为11,而对应的区间的第一个块对象ID为9,也是9 + 2=11,确实是如此,那么我们来转储数据块看看,如下所示
完成;改变系统转储功能76块9; 系统的改变。 完成;改变系统转储功能76块; 系统的改变。 完成;改变系统转储功能76块11; 系统的改变。 完成;选择user_dump.value 2 | | '/' 3 | |低(instance.value) 4 | |“_ora_” 5 | | v process.spid美元 6 | | nvl2 (v $过程。traceid,“_” 7 | | v $过程。traceid零) 8 | |”。曾经的“跟踪文件” 9从v参数user_dump美元 10美元交叉连接v参数实例 11美元交叉连接v过程 美元12 v加入会话 13 alt="甲骨文中段的HEADER_BLOCK示例详析">
不过有一个奇怪的现象,对斯科特。EMP其数据块做转储,发现25日,26日,27日数据块的类型都是反式数据,0 x06表示的块类型为数据块表/集群/索引段。不知是否因为SCOTT.EMP对象位于用户表空间下的缘故。不过用户表空间也是ASSM管理的。具体情况尚不清楚?
甲骨文中段的HEADER_BLOCK示例详析