数据库由一个或多个表空间构成。表空间(tablespace)是 Oracle 中的一个逻辑存储容器,位于存
储层次体系的顶层,包括一个或多个数据文件。这些文件可能是文件系统中的 cooked 文件、原始分区、ASM管理的数据库文件,或者是集群文件系统上的文件。
表空间
前面已经提到,表空间是一个容器,其中包含有段。每个段都只属于一个表空间。一个表空间中可能有多个段。一个给定段的所有区段都在与段相关联的表空间中。段 绝对不会跨越表空间边界。表空间本身可以有一个或多个相关的数据文件。表空间中给定段的一个区段完全包含在一个数据文件中。不过,段
可以有来自多个不同数据文件的区段。
表空间包含段
段(segment),这是表空间中主要的组织结构。段(segment)就是占用存储空间的数据库对象,如表、索引、回滚段等。创建表时,会创建一个表段。创建分区表时,则每个分区会创建一个段。
创建索引时,就会创建一个索引段,依此类推。占用存储空间的每一个对象最后都会存储在一个段中,此外还有回滚段(rollback segment)、临时段 ( temporary segment)、聚簇段 ( clustersegment)、索引段 ( index segment)等。
注意:上面有这样一句话:
“占用存储空间的每一个对象最后都会存储在一个段中”,这可能会把你搞糊涂。你会发现许多 CREATE 语句能创建多段的对象。之所以会产生困惑,原因是一条 CREATE 语句最后创建的对象可能包含 0 个、1 个或多个段!
例如,CREATE TABLE T ( x int primary key, yclob)就会创建 4 个段:一个是 TABLE T 的段,还有一个段对应索引(这个索引是为支持主键而创建的),另外还有两个 CLOB 段(一个 CLOB 段是 LOB 索引,另一个段是 LOB 数据本身)。
与之不同 ,CREATE TABLE T ( x int, y date ) cluster MY_CLUSTER 则不会创建任何段。第 10 章还会更深入地讨论这个概念。
段本身又由一个或多个区段组成
区段(extent)是文件中一个逻辑上连续分配的空间。区段的大小可能不同,可以是一个 Oracle 数据块,也可以大到 2 GB。
区段又进一步由块组成。
块(block)是 Oracle 中最小的空间分配单位。数据行、索引条目或临时排序结果就存储在块中。通常 Oracle 从磁盘读写的就是块。Oracle 中块的常见大小有 4 种:2 KB、4 KB、8KB 或 16 KB(尽管在某些情况下 32 KB 也是允许的;但是操作系统可能对最大大小有限制)
阅读(1480) | 评论(1) | 转发(0) |