第4章-表空间和数据文件管理_第1页
第4章-表空间和数据文件管理_第2页
第4章-表空间和数据文件管理_第3页
第4章-表空间和数据文件管理_第4页
第4章-表空间和数据文件管理_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章表空间和数据文件管理一、Oracle数据库逻辑结构二、Oralce表空间和数据文件的概述三、Oralce表空间的创建方法四、Oracle管理表空间和其对应数据

文件的方法五、Oracle查看表空间和数据文件信

息的方法主要内容一、Oracle数据库逻辑结构

逻辑结构图数据库逻辑结构的详述1:每个数据库是由一个或多个表空间所组成(至少一个)。2:以个表空间基于一个或多个操作系统的数据文(至少一个3:每个表空间中可以存放有一个或多个段(Segment)。4:每个段是由一个或多个区(Extent)所组成5:每个区段是由一个或多个连续的Oracle数据块所组成。6:每个Oracle数据块是由一个或多个连续的操作系统数据块所组成。7:每个操作系统数据文件是由一个或多个区(Extent)所组成。8:每个操作系统数据文件是由一个或多个操作系统数据块所组成。二、表空间和数据文件概述表空间作用存放Oracle的数据逻辑控制数据库所占用的磁盘空间控制用户所占用的空间配额编提高数据库的I/O性能,有利于备份和管理操作保持大量的静态数据数据文件存放Oracle的数据物理表空间类型表空间类型SYSTEM表空间(系统表空间)SYSAUX表空间(辅助系统表空间)TEMP表空间(临时表空间)USERS表空间(用户表空间)EXAMPLE表空间(示例表空间)UNDOTBS1表空间(撤销表空间)表空间的状态属性四种状态属性(1)联机状态(ONLINE)

权限:用户方便的进行数据的访问(2)读写状态(READWRITE)

权限:允许用户进行对数据的查询,更新以及删除的操作(3)只读状态(READONLY)

权限:只允许进行数据的查询操作(4)脱机状态(OFFLINE)

权限:不允许用户进行对数据库的任何操作表空间和数据文件的关系两者关系:数据文件是Oracle数据库中用来存储各种数据的地方,在创建表空间的同时将为表空间创建相应的数据文件。一个数据文件只能属于一个表空间,一个表空间可以有多个数据文件。在对数据文件进行管理时,数据库管理员可以修改数据文件的大小、名称、增长方式和存放位置,并能够删除数据文件。三表空间的创建方法

在创建Oracle数据库时会自动创建SYSTEMSYSAUX和USERS等表空间,用户可以使用这些表空间进行各种数据操作。但在实际应用中,如果使用系统创建的这些表空间会加重它们的负担,严重影响系统的I/O性能,因此Oracle建议根据实际需求来创建不同的非系统表空间,用来存储所有的用户对象和数据。表空间创建具体方法创建表空间的命令语法结构:CREATE[TEMPORARY|UNDO]TABLESPACEtablespace_name[DATAFILE|TEMPFILEfile_spec1[,file_spec2]......SIZEsizeK|M[REUSE]][MININUMEXTENTintegerK|M][BLOCKSIZEintegerk][LOGGING|NOLOGGING][FORCELOGGING][DEFAULT{data_segment_compression}storage_clause][ONLINE|OFFLINE][PERMANENT|TEMPORARY][EXTENTMANAGEMENTDICTIONARY|LOCAL][AUTOALLOCATE|UNIFORMSIZEnumber][SEGMENTMANAGEMENTAUTO|MANUAL]表空间的语法说明1.TEMPORARY|UNDO:说明需系统创建表空间的类型2.tablespace_name:指定表空间的名称3.DATAFILEfile_sqec1:指定与表空间关联的数据文件4.SIZEsizeK|M[REUSE]:指定数据文件的大小5.MININUMEXTENTintegerK|M:指出为表空间中盘区的最小值6.BLOCKSIZEintegerk:设定一个数据块的大小7.LOGGING|NOLOGGING:指定表空间的数据对象的任何操作是否产生日志8.FORCELOGGING:表空间强制进入日志空间9.DEFAULTstorage_clause:声明缺省的存储字句10.ONLINE|OFFLINE:将表空间的状态设置为联机状态或脱机状态11.PERMANENT|TEMPORARY:指定表空间数据对象的保存形式

12.

EXTENTMANAGEMENTDICTIONARY|LOCAL:制定表空间的管理方式13.AUTOALLOCATE|UNIFORMSIZEnumber:指定表空间的盘区大小14.SEGMENTMANAGEMENTAUTO|MANUA:指定段空间的管理方式【例4-2】创建永久表空间my_tbs_1,对应的数据文件名为mytbs_1_01.dbf,大小为20M,存放在“D:\my_tablespace”中,采用本地管理方式。SQL>CREATETABLESPACEmy_tbs_12DATAFILE'D:\my_tablespace\my_tbs_1_01.dbf'3SIZE20M4EXTENTMANAGEMENTLOCAL;表空间已创建。【例4-1】通过数据字典

dba_tablespaces,查看当前数据库中表空间的状态。SQL>SELECTTABLESPACE_NAME,STATUS2FROMdba_tablespaces;不同类型表空间的创建

表空间类型

创建方法永久性表空间CREATETABLESPACE临时性表空间CREATETEMPORARYTABELSPACE撤销表空间CREATEUNDOTABLESPACE非标准块表空间CREATETABLESPACEBLOCKSIZEintegerk【例4-3】创建永久表空间my_tbs_2,对应的数据文件名为my_tbs_2_01.dbf,大小为20M,存放在“D:\my_tablespace”中,采用本地管理方式,表空间中所有分区大小都是256KB。SQL>CREATETABLESPACEmy_tbs_22DATAFILE'D:\my_tablespace\my_tbs_2_01.dbf'3SIZE20M4EXTENTMANAGEMENTLOCALUNIFORMSIZE256K;表空间已创建。【例4-4】创建一个AUTOALLOCATE方式的永久表空间my_tbs_3,对应的数据文件名为my_tbs_3_01.dbf,初始大小为20M,可以自动增长,每次增长5M,最大可以达到100M,存放在“D:\my_tablespace”中,采用本地管理方式。

SQL>CREATETABLESPACEmy_tbs_32DATAFILE'D:\my_tablespace\my_tbs_3_01.dbf'3SIZE20M4AUTOEXTENDONNEXT5M5MAXSIZE100M6EXTENTMANAGEMENTLOCAL7AUTOALLOCATE;表空间已创建。四.维护表空间和数据文件1:重命名表空间和数据文件:2:改变表空间和数据文件的状态3:设置默认表空间,扩张表空间,删除表空间及数据文件以及查看表空间和数据文件的信息重命名表空间和数据文件

重命名表空间通过使用ALTERTABLESPACE的RENAME选项,就可以修改表空间的名称。需要注意的是,SYSTEM表空间和SYSAUX表空间的名称不能被修改,如果表空间或其中的任何数据文件处于OFFLINE状态,该表空间的名称也不能被改变。重命名表空间的一般语法格式为:

ALTERTABLESPACEtablespace_nameRENAMETOtablespace_new_name;

说明:tablespace_name为重命名前表空间名称,tablespace_new_name为新的表空间名称。请看下面的例子:

例4-9】将例【4-3】中创建的表空间my_tbs_2改名为my_tbsnew_2。SQL>ALTERTABLESPACEmy_tbs_2RENAMETOmy_tbsnew_2;表空间已更改。说明:虽然表空间的名称被修改了,但表空间对应的数据文件、数据文件的位置和名称都没有变化,所有的SQL语句仍能正常运行。重命名数据文件

当创建数据文件后,可以改变数据文件的名称。以下以例【4-2】中创建的表空间my_tbs_1的数据文件为例来详述改变数据文件的名称的具体步骤(1)使表空间处于OFFLINE状态。SQL>ALTERTABLESPACEmy_tbs_1OFFLINENORMAL;表空间已更改。(2)用操作系统命令重命名数据文件。SQL>HOSTRENAMED:\my_tablespace\my_tbs_1_01.dbfmy_tbs_1_02.dbf说明:HOST表示需要在SQLPlus中执行操作系统命令RENAME。(3)使用带RENAMEDATAFILE子句的ALTERTABLESPACE语句改变数据文件名称。SQL>ALTERTABLESPACEmy_tbs_12 RENAMEDATAFILE'D:\my_tablespace\my_tbs_1_01.dbf'3 TO4' D:\my_tablespace\my_tbs_1_02.dbf;表空间已更改。(4)将表空间重新设置为联机状态。SQL>ALTERTABLESPACEmy_tbs_1ONLINE;表空间已更改。表空间和数据文件的状态的更改设置表空间状态SQL实现设置表空间状态SQL实现只读状态ALTERTABLESPACE表空间名READONLY

脱机状态ALTERTABLESPACE表空间名OFFLINE可读写状态ALTERTABLESPACE表空间名READWRITE

联机状态ALTERTABLESPACE表空间名ONLINE注意!!!(1)当表空间设置为只读状态时,就不能执行INSERT操作向其中添加数据了,但仍然可以执行DROP操作,删除该表空间上的对象。(2)下列情况需要将表空间设置为脱机状态:需要对表空间进行备份或恢复等维护操作;某个表空间暂时不允许用户访问;需要移动特定表空间的数据文件,防止其中的数据文件被修改以确保数据文件的一致性。需要注意的是,SYSTEM和SYSAUX表空间不能被脱机。(3)当表空间处于OFFLINE状态时,该表空间将无法访问。设置数据文件状态SQL实现ONLINEALTERDATABASEDATAFILE数据文件名ONLINEOFFLINEALTERDATABASEDATAFILE数据文件名OFFLINEOFFLINEDROPALTERDATABASEDATAFILE数据文件名OFFLINEDROP着重说明!!!

将数据文件设置为脱机状态时,不会影响到表空间的状。相反,将表空间设置为脱机状态时,属于该表空间的数据文件将会全部处于脱机状态。设置默认表空间

在Oracle中,对于像SCOTT这样的普通用户来说,其初始默认表空间为USERS,默认时表空间为TEMP;而对SYSTEM用户来说,其初始默认表空间为SYSTEM,默认临时表空间为TEMP。在创建新用户时,如果不为其指定默认表空间,系统会将上述初始的默认表空间作为这个用户的默认表空间,这将导致TEMP、USERS或SYSTEM等表空间迅速被用户数据占满,严重影响系统IO性能。使用ALTERDATABASEDEFAULTTABLESPACE命令可以设置数据库的默认表空间:使用ALTERDATABASEDEFAULTTEMPORARYTABLESPACE语句可以改变数据库的默认临时表空间。以下通过具体实例来清楚一下这两个命令的用法。请看实例:【例4-15】查看数据字典database_properties,查看当前用户使用的永久表空间与默认表空间。SQL>COLUMNproperty_valueFORMATA15SQL>COLUMNdescriptionFORMATA25SQL>SELECTproperty_name,property_value,description2 FROMdatabase_properties3 WHEREproperty_name4 IN('DEFAULT_PERMANENT_TABLESPACE','DEFAULT_TEMP_TABLESPACE');PROPERTY_NAME PROPERTY_VALUE DESCRIPTION----------------------------------------------------------- ---------------------DEFAULT_TEMP_TABLESPACE TEMP NameofdefaulttemporarytablespaceDEFAULT_PERMANENT_TABLESPACEUSERS Nameofdefaultpermanenttablespace【例4-16】设置数据库的默认表空间为my_tbs_1。SQL>ALTERDATABASEDEFAULTTABLESPACEmy_tbs_1;数据库已更改。【例4-17】设置数据库的默认临时表空间为my_temptbs_1。SQL>ALTERDATABASEDEFAULTTEMPORARY

TABLESPACEmy_temptbs_1;数据库已更改。扩展表空间扩展表空间的原因数据文件的大小实际上代表了该数据文件在磁盘上的可用空间。表空间的大小实际上就是其对应的数据文件大小的和。如果表空间中所有数据文件都已经被写满,那么向该表空间上的表中插入数据时,会显示错误信息。这种情况下必须扩展表空间来增加更多的存储空间。通常扩展表空间的方法有添加新的数据文件、改变数据文件的大小以及允许数据文件自动扩展等。三种方法(1)添加新的数据文件语法格式为:ALTERTABLESPACEtablespace_nameADDDATAFILE'datafilepath'SIZEnM;说明:tablespace_name为表空间名称,datafilepath为数据文件路径,n为数据文件大小,单位为M。例子演示:

【例4-18】为表空间my_tbs_1在“D:\my_tablespace”下增加一个5MB的数据文件my_tbs_1_02.dbf。SQL>ALTERTABLESPACEmy_tbs_1 ADDDATAFILE'D:\my_tablespace\my_tbs_1_02.dbf' SIZE5M;

表空间已更改(2)改变数据文件的大小语法格式:

ALTERDATABASEtablespace_nameDATAFILEfilenameRESIZEnM;说明:tablespace_name为表空间名称,filename为要修改的数据文件的名称,n为数据文件的大小,单位为M。例子演示:例4-19】将上例中添加的数据文件“D:\my_tablespace\my_tbs_1_02.dbf”的容量扩展为100M。(1)通过数据字典DBA_DATA_FILES查看表空间my_tbs_1中的数据文件信息。SQL>SELECTFILE_NAME,TABLESPACE_NAME2 FROMDBA_DATA_FILES3 WHERETABLESPACE_NAME='MY_TBS_1';D:\my_tablespace\my_tbs_1_01.dbf MY_TBS_1D:\my_tablespace\my_tbs_1_02.dbf MY_TBS_1(2)通过ALTERDATABASE…RESIZE命令将数据文件my_tbs_1_02.dbf扩展为100M。SQL>ALTERDATABASE2 DATAFILE'D:\my_tablespace\my_tbs_1_02.dbf'3 RESIZE100M;数据库已更改。说明:可以利用RESIZE子句来缩小数据文件的大小,但必须保证缩小后的数据文件足够容纳其中现有的数据,否则会有错误提示。(3)允许数据文件自动扩展语法格式:ALTERDATABASEDATAFILE'datafilepath'AUTOEXTENDONNEXTmMMAXSIZEmaxM;说明:datafilepath为数据文件路径,NEXT语句指定数据文件每次增长的大小mM。MAXSIZE表示允许数据文件增长的最大限度maxM。例子演示:【例4-20】将已创建的表空间my_tbs_1中的数据文件my_tbs_1_01.dbf设置为自动扩展。SQL>ALTERDATABASE2 DATAFILE'D:\my_tablespace\my_tbs_1_01.dbf'3 AUTOEXTENDONNEXT2MMAXSIZE30M;数据库已更改。说明:执行上述命令后,当该数据文件被填满时会自动扩展,每次增长的大小为2MB,最大尺寸可达到30MB。

【例4-21】取消上例中数据文件my_tbs_1_01.dbf的自动扩展性。SQL>ALTERDATABASE2DATAFILE'D:\my_tablespace\my_tbs_1_01.dbf‘3AUTOEXTENDOFF;数据库已更改。删除表空间和数据文件为什么要删除表空间?当表空间中的所有数据都不再需要时,或者当表空间因损坏而无法恢复时,可以将表空间删除,这要求用户具有DROPTABLESPACE系统权限。默认情况下,Oracle在删除表空间时只是从数据字典和控制文件中删除表空间信息,而不会物理地删除操作系统中相应的数据文件。删除表空间的一般语法格式为:DROPTABLESPACEtablespace_nameINCLUDINGCONTENTS|INCLUDINGCONTENTSANDDATAFILES;

说明:tablespace_name为要删除的表空间名称,INCLUDINGCONTENTS选项表示删除表空间的所有对象,INCLUDINGCONTENTSANDDATAFILES表示级联删除所有数据文件。例子演示:例4-22删除表空间my_tbsnew_2。SQL>DROPTABLESPACEmy_tbsnew_2INCLUDINGCONTENTS

表空间已删除。说明:如果要删除的表空间中有数据库对象,则必须使用INCLUDINGCONTENTS选项。例4-23在删除表空间my_tbsnew_2的同时删除它所对应的数据文件。

SQL>DROPTABLESPACEmy_tbsnew_2INCLUDINGCONTENTSANDDATAFILES;

表空间已删除。说明:删除表空间时,如果级联删除其所拥有的所有数据文件,此时需要显式地指定INCLUDINGCONTENTSANDDATAFILES。删除数据文件注意!!!

从表空间中删除数据文件时,当数据文件处于以下三种情况时是不能被删除的:1:数据文件中存在数据。2:数据文件是表空间中唯一的或第一个数据文件。3:数据文件或数据文件所在的表空间处于只读状态。删除数据文件的一般语法形式:

ALTERTABLESPACEtablespace_nameDROPDATAFILE'datafilepath';说明:tablespace_name为要删除的数据文件所在的表空间名称,datafilepath为数据文件路径。例子演示:

【例4-24】删除表空间my_tbs_1中的数据文件“D:\my_tablespace\my_tbs_1_02.dbf”。SQL>ALTERTABLESPACEmy_tbs_12DROPDATAFILE'D:\my_tablespace\my_tbs_1_02.dbf';表空间已更改。查看表空间和数据文件信息1.

查看表空间信息为了便于对表空间进行管理,Oracle提供了一系列与表空间相关的数据字典,如表4-1所示,通过这些数据字典,数据库管理员可以了解表空间的相关信息。2.查看数据文件信息可以使用数据字典视图和动态性能视图来查看数据文件的信息表4.2所示。4.2与表空间有关的数据字典

4.3与数据文件相关的数据字典视图和动态性能视图表名注释V$TABLESPACE从控制文件中获取的表空间名称和编号DBA_TABLESPACE所有用户可访问的表空间信息USER_TABLESPACE用户可访问的表空间的信息DBA_SEGMENTS所有表空间中的段的描述信息USER_SEGMENTS用户可访问的表空间中的段的描述信息DBA_EXTENTS所有用户可访问的表空间中的数据盘区的信息USER_EXTENTS用户可访问的表空间中的数据盘区的信息V$DATAFILE所有数据文件的信息,包括所属表空间的名称和编号V$TEMPFILE所有临时文件的信息,包括所属表空间的名称和编号DBA_DATA_FILES所有数据文件及其所属的表空间的信息DBA_TEMP_FILES所有临时文件及其所属的临时表空间的信息V$TEMP_EXTENT_POOL本地管理的临时表空间的缓存信息,使用的临时表空间的状态信息V$TEMP_EXTENT_MAP本地管理的临时表空间中的所有盘区的信息V$SORT_USER用户使用的临时排序段的信息V$SORT_SEGMENT例程的每个排序段的信息

表名注释DBA_DATA_FILES包含数据库中所有数据文件的基本信息DBA_TEMP_FILES包含数据库中所有临时数据文件信息DBA_EXTENTS包含所有表空间中已分配的区的描述信息,如区所属的数据文件的文件号等USER_EXTENTS包含当前用户所拥有的对象在所有表空间中已分配的区的描述信息DBA_FREE_SPACE包含表空间中空闲区的描述信息,如空闲区所属的数据文件的文件号等USER_FREE_SPACE包含可被当前用户访问的表空间中空闲区的描述信息V$DATAFILE包含从控制文件中获取的数据文件信息,主要是用于同步的信息V$DATAFILE_HEADER包含从数据文件头部获取的信息例子演示:【例4-25】通过dba_tablespaces,查看当前数据库的表空间的名称及每个表空间的数据库大小。SQL>SELECTtablespace_name,block_size2 FROMdba_tablespaces;TABLESPACE_NAME BLOCK_SIZE----------------------------------------------------SYSTEM 8192SYSAUX 8192UNDOTBS1 8192TEMP 8192USERS 8192EXAMPLE

8192my_tbs_1 20971520my_temptbs_1 20971520my_undo_1 20971520my_tbs_4k 2048my_bigtbs 20971520已选择11行。【例4-26】通过DBA_TEMP_FILES,查看已创建的临时表空间my_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论