Oracle数据文件存储层次体系

Oracle大的存储层次体系为:
1.数据库由一个或者多个表空间组成
2.表空间由一个或多个数据文件(种类有系统cooked文件,asm数据文件,原始分区数据文件,分区数据文件)。一个表空间包含多个段。
3.段(Table,Index等)由一个或多个区段组成。段在表空间中,可以包含表空间中的多个数据文件上的数据。
4.区段是磁盘上一组逻辑连续的块。区段只在一个表空间中,并且尽在表空间中的一个数据文件中
5.块是数据库中的最小分配单位,也是数据库使用的最小I/O单位。
其中数据库,表空间,文件,段,区段的关系如下图:
[img]http://dl.iteye.com/upload/attachment/0069/8090/7b232852-8662-38b5-9374-1b9a73af97e8.jpg[/img]

表空间只是Oracle的一个逻辑容器,位于存储层次体系的顶层。
存储层次体系中比较重要的两个概念是段和块。

段:段(segment)就是占用存储空间的数据库对象,如表,索引,回滚段等。创建表示会创建一个表段,创建索引时会创建一个索引段,创建分区表是会为每个分区创建一个段。占用存储空间的每个对象都会存储在一个段中。另外还有回滚段,临时段,聚簇段,索引段等。
注意:一条create语句可能创建多个段(如创建表时可能包含表段,索引段,lob段等)。

区段就是一段连续的存储空间,多个区段组成一个段。

块:块是Oracle中最小的额空间分配单位。数据行,索引条目,临时排序结果等都存储在块中。

段,区段,块的关系如下图:
[img]http://dl.iteye.com/upload/attachment/0069/8098/c52b6918-7a7f-3a67-acfe-223857199633.jpg[/img]

块的组成基本如下图(也有例外,如lob段,exadata段):
[img]http://dl.iteye.com/upload/attachment/0069/8102/aa7b720f-8480-32d3-ad88-b6fefc14bb98.jpg[/img]
首部包含块类型有关的信息(表块,索引块等),块上正在发生和已经发生的数据库事务信息及在磁盘上的地址。
表目录(如果有)存储的是把行记录存放在这个块上的表的信息,行目录包含块中数据行的信息(就是行的索引)。首部、表目录、行目录统称为块开销,不用来存放实际的数据,而是由oracle用来管理块本身。
块中剩余的两部分一个是空闲空间,一个是已经存放了数据的已用空间。

参考资料:Oracle 9i/10g/11g编程艺术,深入oracle体系结构
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值