1、Oracle中存储的层次结构如下:
1)数据库由一个或多个表空间组成。
2)表空间由一个或多个数据文件组成,一个表空间包含段。
3)段由一个或多个区组成,段存在于表空间中,但在表空间中可以有许多数据文件中的数据。
4)区是在磁盘上连续的块的组,一个盘区在一个表空间中,而且总是在表空间中单一的文件中。
5)块是数据库中最小的分配单元,块是数据库使用的最小的I/O单元。
Oracle表空间(tableSpace)、段 (segment)、区(extent)、块(block),这些都是Oracle用来保存数据库对象的分配单元。
段就是数据库对象,它消耗存储空间,如表、索引、回滚段等。当创建表的时候,将创建一个表段,当创建一个分区表时,即在每个分区上创建一个段,当创建索引时,将创建一个索引段,每一个消耗存储空间的对象最终被存储在一个单一的段中,有回滚段,临时段,聚簇段、索引段等。一个段可以拥有来自许多不通数据文件中的区。
段本身由一个或多个区组成,区在文件中一个连续的分配空间,每个段至少开始于一个区,一些对象可能至少需要2个区(例如回滚段)。各个区之间并不要求正好相邻。
区由块组成,一个块是在Oracle中空间分配的最小单元,是Oracle读写磁盘的对象,Oracle中的块通常有3个常见的大小,2K ,4K,8K。
一个段是由一个或多个区所组成,一个区是由一些连续分配的块。
表空间是一个容器,它保存段,每一个段恰好属于一个表空间,一个表空间可以有多个段,给定段的所有盘区将在与该段相关的表空间中。
2、oralce segment(对象)的类型
1)表段(table segment )
建立table时,表有记在存储数据时,记录在写入数据块时候,随机的是无序的,访问采用全表扫面。
2)分区表段(partition table)
对大的table(>2G)进行分区,减少资源竞争,提高访问速度。
3)簇段(cluster)
用于存储簇表的数据。簇用于逻辑组织相关表的数据,使用簇的目的是为了降低I/0次数,提高I/O性能。如主从表之间的连接查询,可以建立簇表,加快读取速度。
4)索引段(index)
用于存储索引的数据,提高表的访问速度。一个索引段只能放到一个表空间里。
5)索引组织表段(index organized table(IOT))
用于以主键方式建立索引的表,将表中的数据和索引表的数据放在一起。如果某表的数据经常需要引用主键列来检索,可以考虑建立索引组织表,以加快数据访问速度。
一般情况下,表与索引数据分别存放到表段和索引段中。但是,如果建立索引组织表,表和其主键索引的数据会存放在索引段里。
当建立索引组织表时,必须定义主键列。
6)索引分区段(Index Partition)
索引分区段用于存储分区索引某个分区的数据;索引分区只能建立在分区表上,而不能建立在普通表上。
7)UNDO段
用于存储事务所修改数据的旧值。
8)临时段(Temporary Segment)
用于存放排序操作所产生的临时数据。
9)LOB段
用于存储LOB列的数据,如文献、图像、音频、视频等数据。建立表时,可以定义CLOB,BLOB,NCLOB类型。
10)LOB索引段
LOB索引段用于存放LOB索引的数据。
11)嵌套表段(Nested Table)
用于存储表类型类 的数据,类似于高级语言中的对象数组类型。
12)根引导段
用于初始化数据字典高速缓存,也成为Cache段。在建立数据库时有sql.bsq脚本建立。
3、存储空间分配:以extent 为最小单位(extent 由data block 组成)
CUUG
更多oracle视频教程请点击:http://crm2.qq.com/page/portalpage/wpa.php?uin=800060152&f=1&ty=1&aty=0&a=&from=6
转载于:https://blog.51cto.com/19880614/1166558