您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > ORACLE数据库管理基础8
管理表空间和数据文件目标完成这一课的学习后,您应该能达到下列目标:•确定表空间和数据文件的用途•创建表空间•管理表空间•使用“Oracle管理文件”(OracleManagedFiles,OMF)创建和管理表空间表空间和数据文件Oracle在逻辑上以表空间存储数据,而实际上以数据文件进行存储。•表空间:–某一时刻只能属于一个数据库–由一个或多个数据文件组成–可进一步划分为逻辑存储单元•数据文件:–只能属于一个表空间和一个数据库–是方案对象数据的资料档案库表空间和数据文件数据库、表空间和数据文件是紧密相关的,但它们之间又有着重要区别:•Oracle数据库由一个或多个称为表空间的逻辑存储单元组成,表空间作为一个整体存储数据库中的所有数据。•Oracle数据库内的每个表空间由一个或多个称为数据文件的文件组成,这些数据文件是与Oracle运行所在的操作系统一致的物理结构。•数据库的所有数据都存储在数据文件中,数据库的每个表空间都由这些数据文件组成。例如,最简单的Oracle数据库只有一个表空间和一个数据文件。而另一个数据库可具有三个表空间,每个表空间由两个数据文件组成(共有六个数据文件)。表空间类型•SYSTEM表空间–随数据库创建–包含数据字典–包含SYSTEM还原段•非SYSTEM表空间–用于分开存储段–易于空间管理–控制分配给用户的空间量表空间类型为加强控制和方便维护,DBA创建了表空间。Oracle服务器识别两种类型的表空间:SYSTEM和所有其它表空间。SYSTEM表空间:•随数据库创建•所有数据库均需要•包括数据字典(内含存储程序单元)•包含SYSTEM还原段•应不包括用户数据,尽管允许这样做非SYSTEM表空间:•支持更灵活地管理数据库•将还原段、临时段、应用程序数据段和应用程序索引段分开•根据备份要求将数据分开•分开动态和静态数据•控制分配给用户对象的空间量创建表空间使用以下命令创建表空间:CREATETABLESPACECREATETABLESPACEuserdataDATAFILE'/u01/oradata/userdata01.dbf'SIZE100MAUTOEXTENDONNEXT5MMAXSIZE200M;创建表空间使用CREATETABLESPACE命令可创建表空间:CREATETABLESPACEtablespace[DATAFILEclause][MINIMUMEXTENTinteger[K|M]][BLOCKSIZEinteger[K]][LOGGING|NOLOGGING][DEFAULTstorage_clause][ONLINE|OFFLINE][PERMANENT|TEMPORARY][extent_management_clause][segment_management_clause]创建表空间其中:Tablespace:是要创建的表空间的名称DATAFILE:指定组成表空间的一个或多个数据文件MINIMUMEXTENT:确保表空间内每个占用区的大小是整数(integer)的倍数。使用K或M以千字节或兆字节为单位指定该大小。BLOCKSIZE:BLOCKSIZE指定表空间的非标准块大小。要指定该子句,必须具有DB_CACHE_SIZE,并至少设置一个DB_nK_CACHE_SIZE参数,在该子句中指定的整数(integer)必须与一个DB_nK_CACHE_SIZE参数设置相对应。LOGGING:指定在缺省情况下,表空间内的所有表、索引和分区的所有更改都写入重做日志文件。LOGGING为缺省设置。NOLOGGING:指定在缺省情况下,表空间内的所有表、索引和分区的所有更改都不写入重做日志文件。NOLOGGING只影响某些DML和DDL命令,如直接加载。DEFAULT:DEFAULT指定表空间内创建的所有对象的缺省存储参数。创建表空间OFFLINE:指定表空间从创建后就不可用。PERMANENT:指定表空间可用于保留永久对象。TEMPORARY:指定表空间仅用于保留临时对象,如:由ORDERBY子句引起的隐式排序所使用的段。不能指定EXTENTMANAGEMENTLOCAL或BLOCKSIZE子句。extent_management_clause:该子句指定如何管理表空间内的区。该子句在本课的后续部分中讨论。segment_management_clause:这只与永久的、且在本地管理的表空间相关。通过它可指定Oracle是否应使用空闲列表或位图来跟踪表空间段中的已占用空间和空闲空间。创建表空间datafile_clause:==filename[SIZEinteger[K|M][REUSE][autoextend_clause]filename:是表空间中的数据文件的名称。SIZE:指定文件大小。使用K或M以千字节或兆字节为单位指定大小。REUSE:允许Oracle服务器重新使用现有文件。autoextend_clause:该子句启用或禁用数据文件的自动扩展。NEXT:以字节为单位指定在需要更多区时自动分配的磁盘空间下一增量的大小其中:MAXSIZE:指定数据文件可以自动扩展到的最大磁盘空间。UNLIMITED:指定可分配给数据文件或Tempfile的磁盘空间是不受限制的。另请参阅“Oracle9iSQLReference”和“Oracle9iConcepts”以获取更多信息。创建表空间使用OracleEnterpriseManager创建表空间从“OEM控制台”(OEMConsole):1.导航到“数据库”(Databases)“存储”(Storage)“表空间”(Tablespaces)。2.单击鼠标右键,从弹出的菜单中选择“创建”(Create)。3.在“常规”(General)和“存储”(Storage)选项卡中填写创建表空间所需的信息。4.单击“创建”(Create)。表空间的空间管理•本地管理的表空间:–在表空间内管理空闲区–使用位图来记录空闲区–每一位与一个块或一组块相对应–位的数值指明是空闲还是已占用•字典管理的表空间:–由数据字典管理空闲区–在分配或回收区时更新对应的表表空间的空间管理表空间以区为单位分配空间。可使用以下两种不同方法来跟踪创建的表空间中的空闲空间和已占用空间:本地管理的表空间:在表空间内通过位图管理区。位图中的每个位对应于一个块或一组块。分配了某个区或释放了某个区可重新使用时,Oracle服务器更改位图值以显示块的新状态。从Oracle9i开始,在本地管理已成为缺省设置。字典管理的表空间:由数据字典管理区。Oracle服务器将在分配或回收区时更新数据字典中对应的表。本地管理的表空间•减少了对数据字典表的争用•分配或回收空间时不生成还原数据•无需合并CREATETABLESPACEuserdataDATAFILE'/u01/oradata/userdata01.dbf'SIZE500MEXTENTMANAGEMENTLOCALUNIFORMSIZE128K;本地管理的表空间EXTENTMANAGEMENT子句的LOCAL选项指定表空间在本地管理。缺省情况下,表空间在本地管理。extent_management_clause:[EXTENTMANAGEMENT[DICTIONARY|LOCAL[AUTOALLOCATE|UNIFORM[SIZEinteger[K|M]]]]]其中:DICTIONARY:指定使用字典表来管理表空间。LOCAL:指定在本地通过位图管理表空间。如果指定了LOCAL,则不能再指定DEFAULTstorage_clause、MINIMUMEXTENT或TEMPORARY。AUTOALLOCATE:指定表空间由系统管理。用户无法指定区大小。这是缺省设置。UNIFORM:指定按照大小统一为SIZE字节数的各个区来管理表空间。使用K或M以千字节或兆字节来指定区大小。缺省大小为1MB本地管理的表空间EXTENTMANAGEMENT子句可用于各种CREATE命令中:•对于非SYSTEM的永久表空间,您可以在CREATETABLESPACE命令中指定EXTENTMANAGEMENTLOCAL。•对于临时表空间,您可以在CREATETEMPORARYTABLESPACE命令中指定EXTENTMANGEMENTLOCAL。在本地管理表空间的优点:本地管理的表空间相对于字典管理的表空间有如下优点:•本地管理可以避免循环空间管理操作,但是这种操作在字典管理的表空间中却有可能发生。一旦消耗或释放某个区的空间会产生另一个消耗或释放操作(消耗或释放还原段或数据字典表内的空间)时,它就会发生。•由于本地管理的表空间在数据字典表中不记录空闲空间,从而减少了对这些表的争用。•区的本地管理可自动跟踪邻近的空闲空间,因而无须合并空闲区。•本地管理的区大小可由系统自动确定。•对区的位图进行更改不会生成还原信息,因为它们不更新数据字典中的表(表空间限额信息等特殊情况除外)。字典管理的表空间•在数据字典中管理区•存储在表空间中的每个段都可以有不同的存储子句•需要合并CREATETABLESPACEuserdataDATAFILE'/u01/oradata/userdata01.dbf'SIZE500MEXTENTMANAGEMENTDICTIONARYDEFAULTSTORAGE(initial1MNEXT1MPCTINCREASE0);字典管理的表空间内的段可具有自定义的存储设置。这比本地管理的表空间更灵活,但效率要低得多。还原表空间•用于存储还原段•不能包含任何其它对象•其中的区要在本地管理•只能使用DATAFILE和EXTENTMANAGEMENT子句CREATEUNDOTABLESPACEundo1DATAFILE'/u01/oradata/undo01.dbf'SIZE40M;还原表空间还原表空间使用“自动还原管理”(AutomaticUndoManagement)的方式。有关“自动还原管理”的更多信息,请参考“管理还原数据”一课。CREATEUNDOTABLESPACEtablespace[DATAFILEclause]临时表空间•用于排序操作•不能包含任何永久对象•建议在本地管理区CREATETEMPORARYTABLESPACEtempTEMPFILE'/u01/oradata/temp01.dbf'SIZE500MEXTENTMANAGEMENTLOCALUNIFORMSIZE4M;临时表空间通过指定专门用于排序段的临时表空间,您可以更有效地管理用于排序操作的空间。在临时表空间内不能驻留永久方案对象。当一个段由多个排序操作共享时,就使用排序段或者临时段。当多个排序太大而无法装入内存时,使用临时表空间能改进性能。给定临时表空间的排序段在例程首次执行排序操作时创建。排序段通过分配更多的区来扩展,直到段大小等于或者大于该例程上运行的所有活动排序的存储要求总和。临时表空间本地管理的临时表空间具有临时数据文件(Tempfile),它与普通数据文件很相似,只有以下几点不同:•Tempfile始终设为NOLOGGING模式。•无法将Tempfile设置为只读。•无法重命名Tempfile。•无法通过ALTERDATABASE命令创建Tempfile。•Tempfile对于只读数据库是必需的。•介质恢复不恢复Tempfile。若要优化临时表空间内的排序性能,可将UNIFORMSIZE设置为SORT_AREA_SIZE参数的整数倍。临时表空间使用OracleEnterpriseManager创建临时表空间从“OEM控制台”(OEMConsole):
本文标题:ORACLE数据库管理基础8
链接地址:https://www.777doc.com/doc-12570 .html