管理表空间1-2本章内容•9.1表空间概述•9.2管理表空间的准则•9.3创建表空间•9.4修改表空间•9.5删除表空间•9.6查询表空间信息•9.7在OEM中管理表空间1-39.1表空间概述•表空间是Oracle数据库中最大的逻辑结构。Oracle数据库是由一个或多个表空间组成。•表空间和数据库物理结构联系密切。它在物理上与磁盘上的数据文件相对应。数据逻辑上存放在表空间中;物理上存放在数据文件中。1-4Oracle数据库的存储结构1-5表空间的作用•控制数据库所占用的磁盘空间。•控制用户所占用的表空间配额。•通过表空间管理数据流向,提高I/O性能。•将表空间设置为只读状态从而保持静态数据。•表空间提供了一个备份和恢复单位。1-6表空间的类型•按是否存放的是系统数据分:•按表空间的存放内容分:•按表空间中文件的大小及最多个数分:1-7表空间的类型I按是否存放的是系统数据分:•系统表空间:SYSTEM:存储Oracle的系统数据(如数据字典表)。创建数据库时,SYSTEM第一个被创建,具有较高的管理权限,不能被脱机。SYSAUX:是Oracle10g新引入的辅助系统表空间。存放其他可选组件的系统数据。两者都不可以被删除和更改。•非系统表空间:分离不同类型数据信息,便于管理表空间。1-8表空间的类型II•按表空间内容分:永久性表空间、临时表空间、撤销表空间selecttablespace_name,contentsfromdba_tablespaces;永久性表空间:存放永久性数据。临时表空间:存储的是临时性数据。(orderby等SQL语句会产生大量的临时数据。在创建用户时,要给其指定一个临时表空间,存放其操作产生的临时数据,如果没有指定,就会增用系统表空间,影响服务器效率。)撤销表空间:存放回滚段的数据信息。1-9表空间的类型III•大文件表空间、小文件表空间select*fromv$tablespace;selecttablespace_name,bigfilefromdba_tablespaces;大文件表空间是10g引入的表空间,为超大数据库设计的。大文件表空间只能放置一个数据文件,数据文件可以包括4G个数据块。最大可以达到32TB。小文件表空间可以放置1022个数据文件。1-10表空间的区、段管理方式•区(Extent)的管理方式•段(Segment)的管理方式1-11表空间的区管理方式针对区的分配方式的不同,表空间的管理有两种管理方式:•数据字典管理方式(DMT)传统管理方式。10g已经不再使用该方式。Oracle通过对数据字典中相关的基础表进行更新来分配新区、回收旧区。•本地管理方式(LMT)10g默认的管理方式。表空间中所有数据文件头均有一个位图(bitmap),用于记录表空间所有区的分配情况。更新该位图来实现区的分配和回收。不对任何表作更新操作。1-12在本地管理方式下,可以用关键字来指定表空间区的分配方式:•UNIFORM:统一分配,所有区大小都相同。•AUTOALLOCATE:自动分配,指定由Oracle来自动管理区大小,Oracle会自动选择合适的大小。1-13表空间的段管理方式在本地管理方式中,还可以指定段的管理方式:段的管理主要是Oracle管理段中已用数据块和空闲数据块的机制。•MANUAL(手工):通过空闲列表管理。•AUTO(自动):使用位图管理。根据位图中取值来判断数据块是否可用。效率高。1-14表空间的状态一、读写(readwrite)二、只读(Readonly)三、脱机状态(Offline)•正常(Normal):执行检查点,不需要恢复。•临时(Temporary):执行检查点,但不必保证所有数据文件都联机可用;如脱机时,有文件不可用,忽略错误。可能需要恢复。•立即(Immediate):不执行检查点。需要恢复。•用于恢复(ForRecover):用于恢复的关闭方式。1-159.2管理表空间的准则•创建多个非系统表空间满足不同类型的用户存储数据的需要。•为用户设置表空间配额1-169.3创建表空间•用户必须拥有Createtablespace权限才能创建表空间。•所有的表空间都应有sys用户来创建。•在表空间的创建中,Oracle完成几个工作:在数据字典、控制文件中记录该表空间。在操作系统中指定相应的物理文件对应数据文件。在预警文件中记录下创建表空间的信息。1-17体验创建表空间:在OEM中创建表空间newtbs,并指定相关参数。1-181.要指定表空间名;2.指定表空间的类型;3.指定和表空间物理对应的数据文件及属性;4.指定区的管理参数;5.指定段的管理参数;6.指定其他属性logging/nologging等1-19语法Create[smallfile|bigfile][Permanent|Temporary|Undo]tablespace表空间名datafile|tempfiledatafile_clause1[,…][logging|nologging][ExtentManagementlocal|dictionary][Uniformsize..k|m][Autoallocate][defaultstorage][SegmentSpaceManagementAuto|manual][blocksizeinteger[K|M]][Online|Offline]1-20举例1:创建表空间:firth数据文件:C:\oracle\product\10.2.0\oradata\orcl\firth01.dbf大小为10M采用本地管理自动分配区,自动管理段。该如何写SQL语句?1-21CREATESMALLFILETABLESPACEFIRSTDATAFILE'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\firth01.dbf'SIZE10MLOGGINGEXTENTMANAGEMENTLOCALautoallocateSEGMENTSPACEMANAGEMENTAUTO1-22举例2:创建表空间:second数据文件:C:\oracle\product\10.2.0\oradata\orcl\second01.dbf大小10M,自动增长,每次增长2M,最大为30M本地管理统一尺寸128K分配,如何创建?1-23CREATESMALLFILETABLESPACESECONDDATAFILE'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\second01.dbf'SIZE10MAUTOEXTENDONNEXT2MMAXSIZE20MLOGGINGEXTENTMANAGEMENTLOCALSEGMENTSPACEMANAGEMENTAUTO1-24举例3:创建表空间:third重用已经存在的数据文件:C:\oracle\product\10.2.0\oradata\orcl\third01.dbf本地管理自动分配区,手工管理段要求创建为脱机表空间,如何创建?1-25CREATESMALLFILETABLESPACETHIRD“DATAFILE'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\third01.dbf'SIZE10MREUSELOGGINGEXTENTMANAGEMENTLOCALSEGMENTSPACEMANAGEMENTMANUALOFFLINE1-26举例4:创建大文件表空间创建大文件表空间:Forth_big数据文件:C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\Forth_big01.dbf,大小30M1-27CREATEBIGFILETABLESPACEFORTH_BIGDATAFILE'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\Forth_big01.dbf'SIZE30M1-28举例5:创建临时表空间创建临时表空间:five_temp数据文件:five_temp01.dbf放在C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\,大小10M统一指定区尺寸,大小为5KB。1-29CREATESMALLFILETEMPORARYTABLESPACEFIVE_TEMPTEMPFILE'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\five_temp01.dbf'SIZE10MEXTENTMANAGEMENTLOCALUNIFORMSIZE5K注意:临时表空间不能用来创建对象,所以,就没有具体的段。所以,不能指定段的管理方式。1-30举例6:创建撤销表空间创建撤销表空间:six_undo数据文件:C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\six_undo01.dbf,大小5M1-31CREATESMALLFILEUNDOTABLESPACESIX_UNDODATAFILE'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\six_undo01.dbf'SIZE5Mextentmanagementlocalautoallocate注意:不可以显示指定uniformsize字句。1-329.4修改表空间主要包括:•扩展表空间的存储空间(添加数据文件、增大数据文件等)•修改表空间的属性(名称、状态、是否为默认表空间)1-33扩展表空间•增加数据文件:altertablespaceusersadddatafile'C:\oracle\product\10.2.0\oradata\orcl\users02.dbf'size10m;注意:不能为大文件表空间增加第二个数据文件。如果要为临时表空间增加临时数据文件,必须使用Altertablespace…addtempfile语句。1-34ALTERTABLESPACETEMPADDTEMPFILE'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\temp01.dbf'SIZE10M1-35扩展表空间•增大数据文件的大小:ALTERDATABASEDATAFILE'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF'RESIZE10M1-36•允许数据文件自动扩展ALTERDATABASEDATAFILE'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF'AUTOEXTENDONNEXT1MMAXSIZEUNLIMITED1-37修改表空间属性修改表空间的可用性及读写性:•Altertablespacefirstoffline注意:System、sysaux、temp、undotbs1几个表空间,不可以改为脱机的,因为随时要写入数据。•Altertablespacefirstonline•Altertablespacefirstreadonly注意:System、sysaux、temp、undotbs1几个表空间,不可以改为只读的,因为随时要写入数据。•Altertablespacefirstreadwrite1-38修改表空间的名称•修改表空间的名称:Altertablespacefirstrenametofirst_new;注意:修改表空间名称是10g特有的功能,所以初始化参数compatible必须设置为10.0或更高的。SYSTEM、SYSAUX表空间的名称不能被修改。脱机状态的表空间也不可以被更名。1-39•设置默认表空间:创建用户时,如果没有指定它使用的表空间,则它使用的永久表空间默认的是SYSTEM,临时表空间默认的是TEMP;为了避免应用系统与Oracle系统竞争SYSTEM表空间和temp表空间,Oracle10g建议将非SYSTEM表空间设置为默认永久表空间,将非TEMP临时表空间设置为默认临时表空间,。例如:al