<!-- [if !mso]> <style> v/:* {behavior:url(#default#VML);} o/:* {behavior:url(#default#VML);} w/:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} </style> <![endif]--><!-- [if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:PunctuationKerning/> <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:SpaceForUL/> <w:BalanceSingleByteDoubleByteWidth/> <w:DoNotLeaveBackslashAlone/> <w:ULTrailSpace/> <w:DoNotExpandShiftReturn/> <w:AdjustLineHeightInTable/> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:UseFELayout/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!-- [if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]--><!-- [if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]-->
从 oracle 存储层次体系结构看, oracle 数据库由一个或者多个表空间构成。
表空间 :是一个逻辑存储容器,它包含段,由一个或多个数据文件组成。段和数据文件的关系是,数据文件存储在段中。
段 :是实际占用存储空间的对象,段分为表段、索引段、回滚段、临时段等,段本身由一个或者多个区段组成。
区段 :是文件中一个逻辑上连续分配的空间,这里说是逻辑上,其实文件在物理磁盘上的分配并不是连续的,区段又由块组成。
块 :是 oracle 中最小的空间分配单位。
通常, oracle 从磁盘读写的就是块,数据行,索引条目,临时排序结果就存储在块中。 Oracle 中块的常见大小有: 2KB,4KB,8KB,16KB 。在某个特定的表空间中,块的大小是相同的。当然块的大小也可以不是 2 的幂,但是最好用 2 的幂次作为块的大小。下图是段、区段、数据块之间的关系图:

创建数据库时,就为数据库分配表空间,所以块也同时被创建。下图是块的具体结构:

块首部 :包含块类型的有关信息 ( 表快、索引块等 ) 、块上发生的活动事务和过去事务的有关信息(仅事务管理的块有此信息,例如临时排序块就没有事务信息),以及块在磁盘上的地址(位置)。
表目录 :包含了把行存储在这个块上的表的有关信息(可能一个块上存储了多个表的数据)。
行目录 :包含块中行的描述信息,它是一个指针,指向块中数据部分中的行。
块首部,表目录,行目录统称为块开销 ,这部分不存放数据,而是由 oracle 用来管理块自身。
下面这个链接是关于 oracle 中数据库怎样使用空闲空间 的:
http://www.relationaldbdesign.com/managing-database-objects/module2/oracle-free-space.php
数据 部分主要是用于存储表中的数据。
本文介绍了Oracle数据库的存储层次体系结构,包括表空间、段、区段及块的概念,并详细解释了它们之间的关系及其作用。
2447

被折叠的 条评论
为什么被折叠?



