oracle数据结构散记

本文详细解释了Oracle数据库的物理和逻辑结构,包括块、区、段、表空间和数据库的关系,以及11g和10g版本的差异。特别关注了块头、位图块的使用、标记位机制和区大小管理,还提到了闪回操作对区释放的影响。
摘要由CSDN通过智能技术生成

在这里插入图片描述

物理结构

块(block)-数据文件(data file)

逻辑结构

块(block)-区(extent)-段(segment)-表空间(tablespace)-库(database)
在这里插入图片描述

上面的块为2k,一般设置8k
单个扩展区不会跨数据文件,但是段可以包含多个数据文件。

块的结构

在这里插入图片描述

11g,插入一行,默认分配第一个区,没插数据,空表不分配区
10g,建好,默认分配1个区

块头和位图块

每个文件的前128(0-127)号块是文件头(11g),10g中是0-8号块。11里,0和1号块是真正的文件头,2-127号块是位图块。10g是1和1号块是文件头,2-8是位图块。

位图块用来记录表空间中区的分配的情况。位图块中的每个二进制位对应一个区是否被分配给表、索引等对象。第一个二进制位是0说明表空间的第一个区未分配,1就说明已分配,第二个二进制位对应第二个区。

位图块分2个部分,第一个位图块作为位图头(bitmapped file space header)
在这里插入图片描述

标记位

11g位图块2-127号,8x126=1008k字节,每个字节8个2进制,1008x1024x8=8257536个区。

800+w个二进制位中,如何判断哪个可以分配给表?
答案是使用标记位,如果0-2号区被占,那标记位的值为3,如果3-4也被占了,那标记位增加到5,此时2号区被释放了,那标记位变2.
如果需要分配新的区,从标记位开始找即可。假设当前标记位是5,有需要分配4个区,oracle就从5号区开始向下查找。

存疑
在这里插入图片描述

注意:

开启闪回drop,drop了表,区不会被释放,所以标记位不会下降,drop只是改名,并不会真正删除表。

统一区大小(设置区大小,指定extent 1m)
Create tablespace aaa datafile ‘/mp/abc.dbf’ size 50m uniform size 1m;

系统管理区大小
Create tablespace aaa datafile ‘/mp/abc.dbf’ size 50m reuse;

默认创建,不指定区大小,就是系统管理区大小。reuse是如果有相同名字,直接覆盖。

表大小,小于1m时,每个区64k,当表超过1m时,再分配新区,区大小将是1M。表再进一步变大,区大小会变8M。
由此可见,区大小随表的增大而增大。

统一区大小和系统管理区大小的选择
建议大多数情况,采用系统管理区大小(自动)。
如果某个表,明确知道他会变很大,建议直接建个统一区大小且区比较大的表空间。

和大文件(bigfile)不一样,这里是改区大小,大文件是块大小8k改32k这种。

大点的区建议8m

段中块的使用

(这个值得看看)
所有对象都有id,表和段都有id。
Dba_objects中,object_id是表的id,data_object_id是段的id。

比如建了个表,表的段id和表id是一样的初始。
表id建好不会变,但是段id会变,比如truncate表后,原本的段被删除,再为表建个新的段。也就是将表原本的存储空间释放,重新分配新的区(extent)。这个过程完毕,表就换了个段。

dba_objects里,object_id是对象id(表id) data_object_id是段id
select object_id,data_object_id from dba_objects where owner=‘DEF’ and object_name=‘F’;

删除某一行,然后回滚,块号、行号还是一样,说明删除某行只是在行上加了删除标志,声明该行空间可被覆盖。如果提交了后再插入,行的位置肯定发生变化。

  • 22
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汪灵骅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值