@hotmail.comPreviousNextViewPDF12LogicalStorageStructuresPreviousNextViewPDF第12章逻辑存储结构Thischapterdescribesthenatureofandrelationshipsamonglogicalstoragestructures.ThesestructuresarecreatedandrecognizedbyOracleDatabaseandarenotknowntotheoperatingsystem.本章介绍逻辑存储结构的特征及其之间的关系。这些结构由Oracle数据库创建和识别,而对操作系统是透明的。Thischaptercontainsthefollowingsections:本章包含以下各节:IntroductiontoLogicalStorageStructuresoLogicalStorageHierarchyoLogicalSpaceManagementOverviewofDataBlocksoDataBlocksandOperatingSystemBlocksoDataBlockFormatoDataBlockCompressionoSpaceManagementinDataBlocksOverviewofExtentsoAllocationofExtentsoDeallocationofExtentsoStorageParametersforExtentsOverviewofSegmentsoUserSegmentsoTemporarySegmentsoUndoSegmentsoSegmentSpaceandtheHighWaterMarkOverviewofTablespacesoPermanentTablespacesoTemporaryTablespacesoTablespaceModesoTablespaceFileSize逻辑存储结构简介o逻辑存储层次结构o逻辑空间管理数据块概述o数据块和操作系统块o数据块格式o数据块压缩o数据块的空间管理扩展区概述o分配扩展区o释放扩展区o扩展区的存储参数段概述o用户段o临时段o撤消段o段空间和高水位标记表空间概述o永久表空间o临时表空间o表空间模式o表空间文件大小IntroductiontoLogicalStorageStructures逻辑存储结构简介OracleDatabaseallocateslogicalspaceforalldatainthedatabase.TheOracle数据库为数据库中的所有数据分配逻辑空间。数据库空间分配的逻@hotmail.comlogicalunitsofdatabasespaceallocationaredatablocks,extents,segments,andtablespaces.Ataphysicallevel,thedataisstoredindatafilesondisk(seeChapter11,PhysicalStorageStructures).Thedatainthedatafilesisstoredinoperatingsystemblocks.辑单元是数据块、扩展区、段、和表空间。而在物理级,数据被存储在磁盘上的数据文件中(请参阅第11章物理存储结构)。数据文件中的数据存储在操作系统块中。Figure12-1isanentity-relationshipdiagramforphysicalandlogicalstorage.Thecrow'sfootnotationrepresentsaone-to-manyrelationship.图12-1是一个物理和逻辑存储的实体关系图。乌鸦脚表示法表示一对多关系。Figure12-1LogicalandPhysicalStorage图12-1逻辑和物理存储DescriptionofFigure12-1LogicalandPhysicalStorageDescriptionofFigure12-1LogicalandPhysicalStorageLogicalStorageHierarchy逻辑存储层次结构Figure12-2showstherelationshipsamongdatablocks,extents,andsegmentswithinatablespace.Inthisexample,asegmenthastwoextentsstoredindifferentdatafiles.图12-2显示了在表空间中的数据块、扩展区、和段之间的关系。在此示例中,一个段具有分别存储在不同数据文件中的两个扩展区。Figure12-2Segments,Extents,andDataBlocksWithinaTablespace图12-2表空间中的段、扩展盘区、和数据块@hotmail.comDescriptionofFigure12-2Segments,Extents,andDataBlocksWithinaTablespaceDescriptionofFigure12-2Segments,Extents,andDataBlocksWithinaTablespaceAtthefinestlevelofgranularity,OracleDatabasestoresdataindatablocks.Onelogicaldatablockcorrespondstoaspecificnumberofbytesofphysicaldiskspace,forexample,2KB.DatablocksarethesmallestunitsofstoragethatOracleDatabasecanuseorallocate.在最细的粒度级别,Oracle数据库将数据存储为数据块。一个逻辑数据块对应于特定字节数的物理磁盘空间,比如2KB。数据块是Oracle数据库可以使用或分配的最小存储单位。Anextentisasetoflogicallycontiguousdatablocksallocatedforstoringaspecifictypeofinformation.InFigure12-2,the24KBextenthas12datablocks,whilethe72KBextenthas36datablocks.扩展区是一组逻辑上连续的数据块,被分配来用于存储特定类型的信息。在图12-2中,这个24KB的扩展区有12个数据块,而这个72KB的扩展区有36个数据块。Asegmentisasetofextentsallocatedforaspecificdatabaseobject,suchasatable.Forexample,thedatafortheemployeestableisstoredinitsowndatasegment,whereaseachindexforemployeesisstoredinitsownindexsegment.Everydatabaseobjectthatconsumesstorageconsistsofasinglesegment.段是为一个特定数据库对象(如一个表)分配的一组扩展区。例如,employees表的数据存储在其自己的数据段中,而该表的每个索引存储在其自己的索引段中。会消耗存储空间的每个数据库对象都由单个段组成。Eachsegmentbelongstooneandonlyonetablespace.Thus,allextentsforasegmentarestoredinthesametablespace.Withinatablespace,asegmentcanincludeextentsfrommultipledatafiles,asshowninFigure12-2.Forexample,oneextentforasegmentmaybestoredinusers01.dbf,whileanotherisstoredinusers02.dbf.Asingleextentcanneverspandatafiles.每个段属于且仅属于一个表空间。因此,一个段的所有扩展区存储在相同的表空间中。在一个表空间中,一个段可以包括多个数据文件中的扩展区,如图12-2所示。例如,段的一个扩展区可能存储在users01.dbf中,而另一个存储在users02.dbf中。单个扩展区绝不会跨越多个数据文件。SeeAlso:另见:@hotmail.comOverviewofDataFiles数据文件概述LogicalSpaceManagement逻辑空间管理OracleDatabasemustuselogicalspacemanagementtotrackandallocatetheextentsinatablespace.Whenadatabaseobjectrequiresanextent,thedatabasemusthaveamethodoffindingandprovidingit.Similarly,whenanobjectnolongerrequiresanextent,thedatabasemusthaveamethodofmakingthefreeextentavailable.Oracle数据库必须使用逻辑空间管理来在表空间中跟踪并分配扩展区。当数据库对象需要扩展区时,该数据库必须有查找和分配扩展区的方法。同样,当对象不再需要扩展区时,数据库必须提供一种方法来重用可用空间。OracleDatabasemanagesspacewithinatablespacebasedonthetypethatyoucreate.Youcancreateeitherofthefollowingtypesoftablespaces:Oracle数据库基于您创建的表空间的类型来管理其中的空间。您可以创建下列类型的表空间之一:Locallymanagedtablespaces(default)本地管理表空间(默认值)Thedatabaseusesbitmapsinthetablespacesthemselvestomanageextents.Thus,locallymanagedtablespaceshaveapartofthetablespacesetasideforabitmap.Withinatablespace,thedatabasecanmanagesegmentswithautomaticsegmentspacemanagement(ASSM)ormanualsegmentspacemanagement(MSSM).数据库使用表空间本身中的位图来管理扩展区。因此,本地管理表空间需要预留表空间的一部分用于位图。在一个表空间中,数据库可以使用自动段空间管理(ASSM)或手动段空间管理(MSSM)来管理段。Dictionary-managedtablespaces字典管理表空间Thedatabaseusesthedatadictionarytomanag