2第4章管理表空间本章要点:熟练掌握创建表空间的方法。掌握如何设置表空间的状态。了解如何重命名表空间。掌握表空间中数据文件的管理。了解临时表空间。了解大文件表空间。了解非标准数据块表空间。理解撤消表空间的作用。掌握创建与管理撤消表空间的方法。了解与表空间和数据文件相关的数据字典。34.1基本表空间在创建数据库时,Oracle会自动地创建一系列表空间,例如system表空间。用户可以使用这些表空间进行数据操作。但是,在实际应用中,如果所有用户都使用系统自动创建的这几个表空间,将会严重影响I/O性能。44.1.1创建表空间创建表空间需要使用CREATETABLESPACE语句。其基本语法如下:CREATE[TEMPORARY|UNDO]TABLESPACEtablespace_name[DATAFILE|TEMPFILE'file_name'SIZEsizeK|M[REUSE][AUTOEXTENDOFF|ON[NEXTnumberK|MMAXSIZEUNLIMITED|numberK|M]][,...]][MININUMEXTENTnumberK|M][BLOCKSIZEnumberK][ONLINE|OFFLINE][LOGGING|NOLOGGING][FORCELOGGING][DEFAULTSTORAGEstorage][COMPRESS|NOCOMPRESS][PERMANENT|TEMPORARY][EXTENTMANAGEMENTDICTIONARY|LOCAL[AUTOALLOCATE|UNIFORMSIZEnumberK|M]][SEGMENTSPACEMANAGEMENTAUTO|MANUAL];54.1.1创建表空间语法说明如下。(1)TEMPORARY|UNDO(2)tablespace_name(3)DATAFILE|TEMPFILE‘file_name’(4)SIZEsize(5)REUSE(6)AUTOEXTENDOFF|ON(7)NEXTnumber(8)MAXSIZEUNLIMITED|number(9)MININUMEXTENTnumber(10)BLOCKSIZEnumber(11)ONLINE|OFFLINE(12)LOGGING|NOLOGGING(13)FORCELOGGING(14)DEFAULTSTORAGEstorage(15)COMPRESS|NOCOMPRESS(16)PERMANENT|TEMPORARY(17)EXTENTMANAGEMENTDICTIONARY|LOCAL(18)AUTOALLOCATE|UNIFORMSIZEnumber(19)SEGMENTSPACEMANAGEMENTAUTO|MANUAL64.1.2表空间状态属性1.在线(ONLINE)语句形式如下:ALTERTABLESPACEtablespace_nameONLINE;2.离线(OFFLINE)语句形式如下:ALTERTABLESPACEtablespace_nameOFFLINEparameter;3.只读(READONLY)语句形式如下:ALTERTABLESPACEtablespace_nameREADONLY;4.读写(READWRITE)语句形式如下:ALTERTABLESPACEtablespace_nameREADWRITE;74.1.3重命名表空间重命名表空间的语法如下:ALTERTABLESPACEtablespace_nameRENAMETOnew_tablespace_name;【例4.4】修改myspace表空间的名称为myspace2,语句如下:ALTERTABLESPACEmyspaceRENAMETOmyspace2;84.1.4修改表空间中数据文件的大小【例4.5】通过数据字典dba_free_space查看myspace表空间的空闲空间信息,如下:SQLSELECTtablespace_name,bytes,blocks2FROMdba_free_space3WHEREtablespace_name='MYSPACE';TABLESPACE_NAMEBYTESBLOCKS-----------------------------------------------MYSPACE209059842552其中,bytes字段以字节的形式表示表空间的空闲空间大小;blocks字段则以数据块数目的形式表示表空间空闲空间的大小。94.1.4修改表空间中数据文件的大小【例4.6】通过数据字典dba_data_files查看myspace表空间的数据文件信息,如下:SQLCOLUMNfile_nameFORMATA35;SQLCOLUMNtablespace_nameFORMATA15;SQLSELECTtablespace_name,file_name,bytes2FROMdba_data_files3WHEREtablespace_name='MYSPACE';TABLESPACE_NAMEFILE_NAMEBYTES------------------------------------------------------------MYSPACEE:\APP\ADMINISTRATOR\ORADATA\ORCL\20971520MYSPACE.DBF其中,file_name字段表示数据文件的名称与路径;bytes字段表示数据文件的大小。104.1.4修改表空间中数据文件的大小【例4.7】修改myspace表空间对应的数据文件的大小,如下:SQLALTERDATABASE2DATAFILE'E:\APP\ADMINISTRATOR\ORADATA\ORCL\MYSPACE.DBF'3RESIZE40M;数据库已更改。114.1.5增加表空间的数据文件增加新的数据文件需要使用ALTERTABLESPACE语句,其语法如下:ALTERTABLESPACEtablespace_nameADDDATAFILEfile_nameSIZEnumberK|M[AUTOEXTENDOFF|ON[NEXTnumberK|MMAXSIZEUNLIMITED|numberK|M]][,...];124.1.5增加表空间的数据文件【例4.8】为myspace表空间增加两个新的数据文件,如下:SQLALTERTABLESPACEmyspace2ADDDATAFILE3'E:\app\Administrator\oradata\orcl\myspace02.dbf'4SIZE10M5AUTOEXTENDONNEXT5MMAXSIZE40M,6'E:\app\Administrator\oradata\orcl\myspace03.dbf'7SIZE10M8AUTOEXTENDONNEXT5MMAXSIZE40M;表空间已更改。上述语句为myspace表空间在E:\app\Administrator\oradata\orcl\目录下增加了两个数据文件,名称分别为myspace02.dbf和myspace03.dbf。134.1.6删除表空间的数据文件删除表空间的数据文件的语法如下:ALTERTABLESPACEtablespace_nameDROPDATAFILEfile_name;【例4.9】删除myspace表空间数据文件E:\app\Administrator\oradata\orcl\myspace03.dbf,如下:SQLALTERTABLESPACEmyspace2DROPDATAFILE'E:\app\Administrator\oradata\orcl\myspace03.dbf';表空间已更改。144.1.7修改表空间中数据文件的自动扩展性在创建表空间时,可以设置数据文件的自动扩展性。在为表空间增加新的数据文件时,也可以设置新数据文件的自动扩展性。而对于已创建的表空间中的已有数据文件,则可以使用ALTERDATABASE语句修改其自动扩展性。语法如下:ALTERDATABASEDATAFILEfile_nameAUTOEXTENDOFF|ON[NEXTnumberK|MMAXSIZEUNLIMITED|numberK|M]154.1.7修改表空间中数据文件的自动扩展性【例4.10】修改myspace表空间中数据文件的自动扩展性,如下:SQLALTERDATABASE2DATAFILE'E:\app\Administrator\oradata\orcl\myspace02.dbf'3AUTOEXTENDOFF;数据库已更改。SQLALTERDATABASE2DATAFILE'E:\app\Administrator\oradata\orcl\myspace02.dbf'3AUTOEXTENDON4NEXT5MMAXSIZE40M;数据库已更改。上述两条SQL语句中,第一条语句用于关闭myspace表空间的myspace02.dbf文件的自动扩展性,第二条语句用于再次为myspace02.dbf文件设置自动扩展性。164.1.8修改表空间中数据文件的状态数据文件的状态主要有3种:ONLINE、OFFLINE和OFFLINEDROP。设置数据文件状态的语法如下:ALTERDATABASEDATAFILEfile_nameONLINE|OFFLINE|OFFLINEDROP其中,ONLINE表示数据文件可以使用;OFFLINE表示数据文件不可使用,用于数据库运行在归档模式下的情况;OFFLINEDROP与OFFLINE一样用于设置数据文件不可用,但它用于数据库运行在非归档模式下的情况。174.1.9移动表空间中的数据文件【例4.12】移动myspace表空间中数据文件myspace02.dbf的步骤如下。(1)修改myspace表空间的状态为OFFLINE,如下:SQLALTERTABLESPACEmyspaceOFFLINE;表空间已更改。(2)将磁盘中的myspace02.dbf文件移动到新的目录中(3)使用ALTERTABLESPACE语句,将myspace表空间中myspace02.dbf文件的原名称和路径修改为新名称和路径(4)修改myspace表空间的状态为ONLINE,如下:SQLALTERTABLESPACEmyspaceONLINE;表空间已更改。检查文件是否移动成功,也就是检查myspace表空间的数据文件中是否包含了新的数据文件。184.1.10删除表空间删除表空间需要使用DROPTABLESPACE语句,其语法如下:DROPTABLESPACEtablespace_name[INCLUDINGCONTENTS[ANDDATAFILES]]语法说明如下。(1)INCLUDINGCONTENTS(2)ANDDATAFILES【例4.13】删除表空间myspace,并同时删除该表空间中的所有数据库对象,以及操作系统中与之相对应的数据文件,如下:SQLDROPTABLESPACEmyspace2INCLUDINGCONTENTSANDDATAFILES;表空间已删除。194.2临时表空间临时表空间是一个磁盘空间,主要用于存储用户在执行ORDERBY等语句进行排序或汇总时产生的临时数据,它是所有用户公用的。默认情况下,所有用户都使用temp作为临时表空间。但是也允许使用其他表空间作为临时表空间,这需要在创建用户时进行指定。204.2.1创建临时表空间创建临时表空间时需要使用TEMPORARY关键字,并且