1 疑问点

这里引用p2处的一段话:

事实上,每个文件的前128个块,都是文件头,被Oracle留用了。在Oracle 10g中是0至8号块被Oracle留用。而从Oracle 11GR2开始,一下就留用了128个块,这是大手笔,不是吗?

这一部分文件头又分两部分,其实0号、1号块是真正的文件头,2 ~ 127号块是位图块。而在Oracle10g中,2 ~ 8号块则是位图块。

自己通过实验可以发现,在11.2.0.4.0版本中,这里的说法其实有一些问题的,大师也会犯错。

2 实验验证

2.1 实验环境

11.2.0.4.0

2.2 创建统一区大小管理表空间

2.2.1 统一区大小40k

我们知道,区大小的管理有系统管理(默认)和统一区大小管理(这里使用)两种模式。

SYS@zkm1> create tablespace tbs1 datafile '+arch' autoextend on uniform size 40k;

Tablespace created.

SYS@zkm1> create user zkm identified by oracle default tablespace tbs1;

User created.

SYS@zkm1> grant dba to zkm;

Grant succeeded.

SYS@zkm1> create table zkm.test as select rownum id from dual where rownum=1; -- 避免延迟段创建的影响

Table created.

SYS@zkm1> select header_file,header_block from dba_segments where segment_name='TEST' and owner='ZKM';

HEADER_FILE HEADER_BLOCK
----------- ------------
6 10 SYS@zkm1> select EXTENT_ID,FILE_ID,BLOCK_ID,BYTES,BLOCKS from dba_extents where owner='ZKM' and SEGMENT_NAME='TEST'; EXTENT_ID FILE_ID BLOCK_ID BYTES BLOCKS
---------- ---------- ---------- ---------- ----------
0 6 8 40960 5

可以得到如下信息(BMB信息dump可验证):

  1. 段头块是6号文件第10个块,也是一个L3块
  2. 区0是从第8个块开始,这个块其实是一个L1块
  3. 第9个块是L2块,11-12这两个块则是可以实际使用的数据块

这里可以看出,这跟VAGE大师的说法(开头处引用)有点出入。应该是0~7这8个块是文件头才对(和10g类似)。

继续。

2.2.2 统一区大小56k

SYS@zkm1> drop tablespace tbs1 including contents and datafiles; 

Tablespace dropped.

SYS@zkm1> create tablespace tbs1 datafile '+arch' size 1g autoextend on uniform size 56k;

Tablespace created.

SYS@zkm1> create table zkm.test as select rownum id from dual where rownum=1;

Table created.

SYS@zkm1> select header_file,header_block from dba_segments where segment_name='TEST' and owner='ZKM';

HEADER_FILE HEADER_BLOCK
----------- ------------
6 10 SYS@zkm1>
SYS@zkm1> select EXTENT_ID,FILE_ID,BLOCK_ID,BYTES,BLOCKS from dba_extents where owner='ZKM' and SEGMENT_NAME='TEST'; EXTENT_ID FILE_ID BLOCK_ID BYTES BLOCKS
---------- ---------- ---------- ---------- ----------
0 6 8 57344 7

继续。

2.2.3 统一区大小64k

相同的执行语句。

SYS@zkm1> drop tablespace tbs1 including contents and datafiles;

Tablespace dropped.

SYS@zkm1> create tablespace tbs1 datafile '+arch' autoextend on uniform size 64k;

Tablespace created.

SYS@zkm1> create table zkm.test as select rownum id from dual where rownum=1;

Table created.

SYS@zkm1> select header_file,header_block from dba_segments where segment_name='TEST' and owner='ZKM';

HEADER_FILE HEADER_BLOCK
----------- ------------
6 130 SYS@zkm1> select EXTENT_ID,FILE_ID,BLOCK_ID,BYTES,BLOCKS from dba_extents where owner='ZKM' and SEGMENT_NAME='TEST'; EXTENT_ID FILE_ID BLOCK_ID BYTES BLOCKS
---------- ---------- ---------- ---------- ----------
0 6 128 65536 8

创建64k统一区大小的话,似乎是符合开头引用那段话的内容的,区从128号块开始,0~127共128个块是文件头。

事实上,系统管理区大小的表空间,默认段开始的16个区,都是8个块,块大小8k,刚好一个区64k。

2.2.4 统一区大小64M

SYS@zkm1> drop tablespace tbs1 including contents and datafiles;

Tablespace dropped.

SYS@zkm1> create tablespace tbs1 datafile '+arch' autoextend on uniform size 64M;

Tablespace created.

SYS@zkm1> create table zkm.test as select rownum id from dual where rownum=1;

Table created.

SYS@zkm1> select header_file,header_block from dba_segments where segment_name='TEST' and owner='ZKM';

HEADER_FILE HEADER_BLOCK
----------- ------------
6 161 SYS@zkm1> select EXTENT_ID,FILE_ID,BLOCK_ID,BYTES,BLOCKS from dba_extents where owner='ZKM' and SEGMENT_NAME='TEST'; EXTENT_ID FILE_ID BLOCK_ID BYTES BLOCKS
---------- ---------- ---------- ---------- ----------
0 6 128 67108864 8192

事实上,分别设置统一区大小管理为64M,128M,256M,1024M,发现区都是从128号块开始了,符合这种说法了。

只不过,随着区越来越大,L3(段头块)的编号越大。

那么,基于11.2.0.4.0实验可得到的结论:在区大小超过64k之后,大师的说法是对的,小于64k的情况下,还是遵循10g的模式

关于数据文件的文件头2-P2的更多相关文章

  1. 关于数据文件的文件头1-P2

    文章目录 1 疑问点 2 问题模拟 2.1 dump 0,1块 2.2 查看trc文件 2.3 如何查看 1 疑问点 这里引用p2处的一段话: 事实上,每个文件的前128个块,都是文件头,被Oracl ...

  2. matlab中读取txt数据文件(txt文本文档)

    matlab中读取txt数据文件(txt文本文档) 根据txt文档不同种类介绍不同的读取数据方法 一.纯数据文件(没有字母和中文,纯数字) 对于这种txt文档,从matalb中读取就简单多了 例如te ...

  3. 常用文件的文件头(附JAVA测试类)

    1. MIDI (mid),文件头:4D546864 2. JPEG (jpg),文件头:FFD8FF 3. PNG (png),文件头:89504E47 4. GIF (gif),文件头:47494 ...

  4. 考古备份:a.out文件ELF文件头中魔数的由来

    来源: <程序员的自我修养>3.4节. 补充: http://wiki.osdev.org/ELF http://www.linux-mag.com/id/116/ http://en.w ...

  5. pcap文件的文件头的link type

    http://www.tcpdump.org/linktypes.html Link-layer header type values LINKTYPE_ name LINKTYPE_ value C ...

  6. CTF中常见文件的文件头(十六进制)

    jpg/jpeg FF D8 FF E0 或 FF D8 FF E1 或 FF D8 FF E8 png 89 50 4E 47 bmp 42 4D 36 5D gif 47 49 46 38 zip ...

  7. 【CTF杂项】常见文件文件头文件尾格式总结及各类文件头

    文件头文件尾总结 JPEG (jpg), 文件头:FFD8FF 文件尾:FF D9PNG (png), 文件头:89504E47 文件尾:AE 42 60 82GIF (gif), 文件头:47494 ...

  8. 在py文件中设置文件头

    在写python文件的时候有时需要记录作者.创建时间等时间,因此可以给python文件设置文件头,这里以PyCharm为例介绍设置步骤: 1. 打开PyCharm,依次点击Setting-----Ed ...

  9. 05 使用bbed跳过归档恢复数据文件

    5 使用BBED跳过归档 在归档模式下,缺失了一部分的归档日志文件,对数据文件进行恢复 1 开启归档 --shutdown immediate --startup mount --alter data ...

随机推荐

  1. Java实现 LeetCode 155 最小栈

    155. 最小栈 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈. push(x) – 将元素 x 推入栈中. pop() – 删除栈顶的元素. top() – 获取 ...

  2. CSDN如何获得2020技术圈认证(新徽章哦)

    打开CSDN APP 然后登陆上就可以了 把这些看完了就可以了

  3. Java实现最长回文串

    1 问题描述 给定一个字符串,求它的最长回文子串的长度. 2 解决方案 2.1 中心扩展法 此处,首先枚举出回文串的中心位置,然后,再在该位置上分别向左和向右扩展,记录并更新得到的最长回文串的长度. ...

  4. java实现数组转置

    ** 数组转置** 编写程序将2行3列的数组行列置换复制给3行2列的数组(即数组的转置).已经写了如下代码,请完善之: class y{ public static void main(String[ ...

  5. java实现土地测量

    ** 土地测量** 造成高房价的原因有许多,比如土地出让价格.既然地价高,土地的面积必须仔细计算.遗憾的是,有些地块的形状不规则,比如是如图[1.jpg]中所示的五边形. 一般需要把它划分为多个三角形 ...

  6. 【分区】使用 GPT 分区表分区并格式化 (非 FreeBSD 系统)

    新购买的 Linux 云服务器,由于数据盘未做分区和格式化,无法使用. 注意: 数据盘中的数据在格式化后将全部被清空.请在格式化之前,确保数据盘中没有数据或已对重要数据进行备份.为避免服务发生异常,格 ...

  7. MongoDB 基础知识学习笔记

    注意:本文假设您已经安装好 MongoDB 数据库并启动它了. 连接 MongoDB.数据库操作.集合操作 连接 MongoDB mongo ip:port/dbName -u username -p ...

  8. 其他函数-web_get_int_property

    用于记录http响应的信息.这个函数在调试脚本的常用,但是在实际压力测试中请将这些注释 使用这个函数可以获取到的信息有: 1.HTTP_INFO_RETURN_CODE:返回HTTP响应码 2.HTT ...

  9. tensorflow-TFRecord 文件详解

    TFRecord 是 tensorflow 内置的文件格式,它是一种二进制文件,具有以下优点: 1. 统一各种输入文件的操作 2. 更好的利用内存,方便复制和移动 3. 将二进制数据和标签(label ...

  10. idea安装docker插件

    Preferences->Plugins 根据上图安装docker插件,安装完成后可使用idea来管理docker项目了.docker运行项目请参加"Docker开发环境搭建" ...