Oracle10g数据库基础教程第6章逻辑存储结构Oracle10g数据库基础教程本章内容Oracle逻辑存储结构概述表空间数据块区段Oracle10g数据库基础教程本章要求掌握Oracle数据库逻辑结构组成掌握表空间的作用及其管理掌握扩展区的结构,了解扩展区的管理掌握段的作用,了解段的管理Oracle10g数据库基础教程6.1逻辑存储结构概述概念逻辑存储结构是从逻辑的角度来分析数据库的构成的,是数据库创建后利用逻辑概念来描述Oracle数据库内部数据的组织和管理形式。在操作系统中,没有数据库逻辑存储结构信息,而只有物理存储结构信息。数据库的逻辑存储结构概念存储在数据库的数据字典中,可以通过数据字典查询逻辑存储结构信息。逻辑结构单元类型数据块:BLOCK区:EXTENT段:SEGMENT表空间:TABLESPACEOracle10g数据库基础教程数据库的存储层次关系DatabaseLogicalPhysicalTablespaceDatafileOSblockOracleblockSegmentExtentOracle10g数据库基础教程数据库逻辑存储结构之间的关系表空间数据段………区间数据块(段片)Oracle10g数据库基础教程6.2表空间表空间概述表空间的管理Oracle10g数据库基础教程7.2.1表空间概述表空间的概念表空间的分类表空间的管理方式表空间的管理策略Oracle10g数据库基础教程(1)表空间概念Oracle数据库在逻辑上可以划分为一系列的逻辑空间,每一个逻辑空间就可以称为一个表空间。一个数据库由有一个或多个表空间构成,不同表空间用于存放不同应用的数据,表空间大小决定了数据库的大小。一个表空间对应一个或多个数据文件,数据文件大小决定了表空间的大小。一个数据文件只能从属于一个表空间。表空间是存储模式对象的容器,一个数据库对象只能存储在一个表空间中(分区表和分区索引除外),但可以存储在该表空间所对应的一个或多个数据文件中。若表空间只有一个数据文件,则该表空间中所有对象都保存在该文件中;若表空间对应多个数据文件,则表空间中的对象可以分布于不同的数据文件中。Oracle10g数据库基础教程数据库、表空间、数据文件、数据库对象之间的关系数据库表空间1数据文件1数据库对象1数据文件2数据库对象3数据库对象2表空间2数据文件3数据库对象4数据文件4数据库对象5数据库对象6Oracle10g数据库基础教程(2)表空间的分类系统表空间SYSTEM表空间,主要存储:数据库的数据字典;PL/SQL程序的源代码和解释代码,包括存储过程、函数、包、触发器等;数据库对象的定义,如表、视图、序列、同义词等。SYSAUX表空间SYSAUX表空间是Oracle10g新增的辅助系统表空间,主要用于存储数据库组件等信息,以减小SYSTEM表空间的负荷。在通常情况下,不允许删除、重命名及传输SYSAUX表空间。Oracle10g数据库基础教程非系统表空间撤销表空间专门进行回滚信息的自动管理,由UNDO_TABLESPACE参数设置。临时表空间专门进行临时数据管理的表空间在数据库实例运行过程中,执行排序等SQL语句时会产生大量的临时数据,这些临时数据将保存在数据库临时表空间中。默认临时表空间用户表空间保存用户数据Oracle10g数据库基础教程大文件表空间与小文件表空间所谓大文件表空间(BigfileTablespace)是指一个表空间只包含一个大数据文件,该文件的最大尺寸为128TB(数据块大小为32KB)或只32TB(数据块大小为8KB)。与大文件表空间相对应,系统默认创建的表空间称为小文件表空间(SmallfileTablespace),如SYSTEM表空间、SYSAUX表空间等。小文件表空间可以包含多达1024个数据文件。小文件表空间的总容量与大文件表空间的容量基本相似。Oracle10g数据库基础教程(3)表空间的管理方式字典管理方式表空间使用数据字典来管理存储空间的分配,当进行区的分配与回收时,Oracle将对数据字典中的相关基础表进行更新,同时会产生回滚信息和重做信息。字典管理方式将渐渐被淘汰。本地管理方式在本地管理方式中,区的分配和管理信息都存储在表空间的数据文件中,而与数据字典无关。表空间在每个数据文件中维护一个“位图”结构,用于记录表空间中所有区的分配情况,因此区在分配与回收时,Oracle将对数据文件中的位图进行更新,不会产生回滚信息或重做信息。Oracle10g数据库基础教程表空间本地管理方式的优势:由于在区分配与回收过程中不需要对数据字典进行访问,提高了表空间存储管理操作的速度和并发性。能够避免表空间存储管理操作中的递归现象,提高了存储空间管理操作性能。由于本地管理的临时表空间在使用过程中不会产生任何重做信息和撤销信息,因此既使查询操作中包含排序,对数据库来说也完全是只读操作,这样能够在保留可查询性同时,将整个数据库设置为只读状态。这种数据库可以作为备用数据库使用。简化了表空间的存储管理,由Oracle自动完成存储管理操作。降低了用户对数据字典的依赖性。不存在磁盘碎片问题,因为必要的信息都存储在数据文件的位图中,而不是保存在数据字典中Oracle10g数据库基础教程(4)表空间管理策略将数据字典与用户数据分离,避免由于数据字典对象和用户对象保存在一个数据文件中而产生I/O冲突。将回滚数据与用户数据分离,避免由于硬盘损坏而导致永久性的数据丢失。将表空间的数据文件分散保存到不同的硬盘上,平均分布物理I/O操作。为不同的应用创建独立的表空间,避免多个应用之间的相互干扰。能够将表空间设置为脱机状态或联机状态,以便对数据库的一部分进行备份或恢复。能够将表空间设置为只读状态,从而将数据库的一部分设置为只读状态。能够为某种特殊用途专门设置一个表空间,如临时表空间,优化表空间的使用效率。能够更加灵活地为用户设置表空间配额。Oracle10g数据库基础教程7.2.2表空间的管理(本地管理方式)创建表空间修改表空间表空间的备份删除表空间大文件表空间的管理表空间信息查询利用OEM管理表空间Oracle10g数据库基础教程(1)创建表空间在创建本地管理方式下的表空间时,应该确定表空间的名称、类型、对应的数据文件的名称和位置以及区的分配方式、段的管理方式表空间名称不能超过30个字符,必须以字母开头,可以包含字母、数字以及一些特殊字符(如#、_、$)等;表空间的类型包括普通表空间、临时表空间和撤销表空间;表空间中区的分配方式包括两种方式:自动扩展(AUTOALLOCATE)和定制(UNIFORM);段的管理包括两种方式:自动管理(AUTO)和手动管理(MANUAL)。Oracle10g数据库基础教程创建永久表空间创建永久表空间使用CREATETABLESPACE语句来实现,该语句包含以下几个子句:DATAFILE:设定表空间对应的数据文件。EXTENTMANAGEMENT:指定表空间的管理方式,取值为LOCAL(默认)或DICTIONARY。AUTOALLOCATE(默认)或UNIFORM:设定区的分配方式。SEGMENTSPACEMANAGEMENT:设定段的管理方式,其取值为MANUAL或AUTO(默认)。Oracle10g数据库基础教程为ORCL数据库创建一个永久性的表空间,区自动扩展,段采用自动管理方式CREATETABLESPACEORCLTBS1DATAFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTBS1_1.DBF'SIZE50M;为ORCL数据库创建一个永久性的表空间,区定制分配,段采用自动管理方式。CREATETABLESPACEORCLTBS2DATAFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTBS2_1.DBF'SIZE50MEXTENTMANAGEMENTLOCALUNIFORMSIZE512K;Oracle10g数据库基础教程为ORCL数据库创建一个永久性的表空间,区自动扩展,段采用手动管理方式。CREATETABLESPACEORCLTBS3DATAFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTBS3_1.DBF'SIZE50MSEGMENTSPACEMANAGEMENTMANUAL;为ORCL数据库创建一个永久性的表空间,区定制分配,段采用手动管理方式。CREATETABLESPACEORCLTBS4DATAFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTBS4_1.DBF'SIZE50MEXTENTMANAGEMENTLOCALUNIFORMSIZE512KSEGMENTSPACEMANAGEMENTMANUAL;Oracle10g数据库基础教程创建临时表空间使用CREATETEMPORARYTABLESPACE语句创建临时表空间,用TEMPFILE子句设置临时数据文件。需要注意的是临时表空间中区的分配方式只能是UNIFORM,而不能是AUTOALLOCATE,因为这样才能保证不会在临时段中产生过多的存储碎片。为ORCL数据库创建一个临时表空间ORCLTEMP1。CREATETEMPORARYTABLESPACEORCLTEMP1TEMPFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTEMP1_1.DBF'SIZE20MEXTENTMANAGEMENTLOCALUNIFORMSIZE16M;Oracle10g数据库基础教程临时表空间组将一个或多个临时表空间构成一个表空间组。当将临时表空间组作为数据库或用户的默认临时表空间时,用户就可以同时使用该表空间组中所有的临时表空间,避免了由于单个临时表空间的空间不足而导致数据库运行故障。同时,使用临时表空间组,可以保证在一个简单并行操作中多个并行服务的执行。临时表空间组不需要显式创建,为临时表空间组指定第一个临时表空间时隐式创建,当临时表空间组中最后一个临时表空间删除时而隐式地删除。通过在CREATETEMPORARYTABLSPACE或ALTERTABLESPACE语句中使用TABLESPACEGROUP短语创建临时表空间组。Oracle10g数据库基础教程为ORCL数据库创建一个临时表空间ORCLTEMP2,并放入临时表空间组temp_group1。同时,将临时表空间ORCLTEMP1也放入该temp_group1中。CREATETEMPORARYTABLESPACEORCLTEMP2TEMPFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ORCLTEMP2_1.DBF'SIZE20MEXTENTMANAGEMENTLOCALUNIFORMSIZE16MTABLESPACEGROUPtemp_group1;ALTERTABLESPACEORCLTEMP1TABLESPACEGROUPtemp_group1;Oracle10g数据库基础教程创建撤销表空间在Oracle10g中引入了撤销表空间的概念,专门用于回滚段的自动管理。如果数据库中没有创建撤销表空间,那么将使用SYSTEM表空间来管理回滚段。如果数据库中包含多个撤销表空间,那么一个实例只能使用一个处于活动状态的撤销表空间,可以通过参数UNDO_TABLESPACE来指定;如果数据库中只包含一个撤销表空间,那么数据库实例启动后会自动使用该撤销表空间。如果要使用撤销表空间对数据库回滚信息进行自动管理,则必须将初始化参数UNDO_MANAGEMENT=AUTO。Oracle10g数据库