《Oracle数据库系统空间管理.ppt》由会员分享,可在线阅读,更多相关《Oracle数据库系统空间管理.ppt(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第六章:Oracle的空间管理学习目标6.1.数据库创建与配置6.2.表空间的管理6.3.段的管理6.4.区的管理6.5.块的管理6.1数据库创建与配置可用如下的方法来创建一个可用如下的方法来创建一个Oracle数据库数据库:1、使用DataBaseConfigurationAssistant工具创建数据库。2、使用DBCA以静默方式创建数据库3、手工创建、手工创建1、使用DataBaseConfigurationAssistant工具创建数据库2、使用DBCA以静默方式创建数据库-silent:指定以静默的方式执行dbca命令。-createDatabase:指定以dbca命令创建数据库。-
2、templateName:指定用来创建数据库模板的名称,这里指定为General_Purpose.dbc,即一般用途的数据库模板。使用此参数相当于在图新界面中创建一般用途的数据库。-gdbname:指定创建的全局数据库名称,这里指定名称为test。-sid:指定数据库系统标识符,这里指定为test,与数据库同名。-responseFile:指定按住响应文件,NO_VALUE表示没有指定响应文件。-characterSet:指定数据库使用的字符集,这里指定为AL32UTF8.-memoryPercentage:指定用于Oracle的物理内存的百分比,这里指定为30%。-emConfigurati
3、on:指定Enterprise Manager的管理选择。LOCAL表示数据库有Enterprise Manager本地管理,CENTRAL表示数据库有Enterprise Manager集中管理,NOEMAIL表示数据库不启用邮件通知功能,NONE表示不使用Enterprise Manager管理数据库。3、使用SQL语句手动创建数据库 命令行安装数据库比通过命令行安装数据库比通过DBCADBCA安装更加可控,也适用于图安装更加可控,也适用于图形界面无法启动的主机环境,研究命令行安装能比较清楚形界面无法启动的主机环境,研究命令行安装能比较清楚的了解创建数据库的来龙去脉。的了解创建数据库的来龙
4、去脉。提示安装Oracle软件时,建议在基础版本上打上最新的补丁(包括PSU补丁)。创据库时,首先需要预先考虑的是不可更改或者更改影响范围大的设置,如数据字、字符集、数据块大小、数据库的连接方式。6.2表空间的管理1、表空间管理方式2、表空间管理3、还原表空间4、临时表空间5、用户与表空间6、表空间监控与注意事项表空间相关概念表空间管理是DBA的工作重点之一。首先回顾一下表空间、数据文件、段、以及数据库的关系逻辑结构逻辑结构物理结构物理结构数据库数据库表空间表空间Oracle数据库块数据库块段段区区硬盘硬盘操作系统文件操作系统文件操作系统块操作系统块表空间从逻辑上是多个段的结合,在物理上是多个
5、数据文件的集合,相当于在段和数据文件的对应中加入了一个中间层来解决这种多对多的关系。建议:很多DBA喜欢在建库之初就给数据库分配很多空闲空间,这种方法虽然可以避免数据库空间不足,但会导致数据库的空闲空间很大,而过大的空闲空间可能会带来很多副作用。如:加数据库的管理成本、影响数据库的打开和关闭时间、增加数据库的迁移难度等。基于以上考虑,我们一般建议给数据库预留够用的剩余空间即可。一套运行良好的数据库是用心管理出来的,而不是空间预分配出来的。6.2.1表空间管理方式1.字典管理方式(DMT)使用数据字典管理存储空间的分配,当表空间分配新的区,或者回收已分配的区时,Oracle会对数据字典对应的表进
6、行查询、更新,且使用单线程、速度慢,并且产生回退和重做信息。2.本地管理方式(LMT)表空间中区分配和区回收的管理信息都被存储在表空间的数据文件中,而与数据字典无关。表空间为每个数据文件维护一个位图结构,用于记录表空间的区分配情况。当表空间分配新的区,或者回收已分配的区时,Oracle会对文件中的位图进行更新,所以不会产生回滚和重做信息。1、创建表空间create tablespace tablespace_namedatafile filename size n autoextend on next n1 max size m/off permanentextent management l
7、ocal/dictionarySQLcreatetablespacetest2datafileDORACLE19CORADATANEWORCLTEST01DBF3size25mautoextendonnext1280kmaxsize1000m4DORACLE19CORADATANEWORCLTEST02DBF5size25mautoextendonnext1280kmaxsize1000m6extentmanagementlocaluniformsize64k表空间已创建2、查看表空间如何查看数据库有哪些表空间?如何查看表空间对应的数据文件?包含数据库中所有表空间的描述信息SELECT*FRO
8、MDBA_TABLESPACES包含当前用户的表空间的描叙信息SELECT*FROMUSER_TABLESPACES包含从控制文件中获取的表空间名称和编号信息SELECT*FROMV$TABLESPACE;包含数据文件以及所属的表空间的描述信息SELECT*FROMDBA_DATA_FILES包含临时数据文件以及所属的表空间的描述信息SELECT*FROMDBA_TEMP_FILES包含从控制文件中获取的数据文件的基本信息,包括它所属的表空间名称、编号等SELECT*FROMV$DATAFILE包含所有临时数据文件的基本信息SELECT*FROMV$TEMPFILE3、调整表空间1)重置表空间
9、大小)重置表空间大小如果是本地管理的表空间,则表空间的存储设置是不能改变的。但是用户可以用以下两个方法来增加表空间的大小。方法1:使用ALTERTABLESPACE语句增加数据文件。ALTERDATABASEDATAFILEAdd/dropdatafilefilename方法2:改变数据文件的大小ALTERDATABASEDATAFILEfilenameautoextendonnextn1;-重新设置数据文件自动扩展参数ALTERDATABASEDATAFILEfilenameRESIZEn1;-重置数据文件大小3、调整表空间2)移动表空间)移动表空间有时某个磁盘I/O可能过于繁忙,这可能影响
10、数据库整体性能,此时可以将一个或多个数据文件移动到其他的磁盘上以平衡I/O。ALTERDATABASEtablespace_namerenameoldfilenameTOnewfilename;3)删除表空间)删除表空间当一个表空间不再需要时,就可使用命令将其删除。但是有两种表空间不可以随意删除。第一种是系统表空间,第二种是有活动段的表空间。删除表空间的语法如下所示。DROPTABLESPACEtablespace_nameINCLUDINGCONTENTSANDDATAFILESCASCADECONSTRAINTS;4、维护表空间(1)表空间脱机与联机ALTERTABLESPACEtable
11、space_nameOFFLINEIMMEDIATE;ALTERTABLESPACEtablespace_nameONLINE;(2)表空间只读与读写ALTERTABLESPACEtablespace_nameREADYONLY;ALTERTABLESPACEtablespace_nameREADWRITE;(3)表空间自动扩展开启与关闭ALTERDATABASEDATAFILEfilenameAUTOEXTENDON;ALTERDATABASEDATAFILEfilenameAUTOEXTENDOFF;6.2.3 还原表空间 还原undo一词在以前的版本中被称为回滚(rollback)。还原
12、表空间用来自动管理还原(回滚)数据的。还原表空间用来存储还原段,不能包含任何其它对象。SQLshow parameter undoNAME TYPE VALUE-temp_undo_enabled boolean FALSEundo_management stringAUTOundo_retentioninteger900undo_tablespace string UNDOTBS11、Undo表空间管理参数1 1UNDO_TABLESPACEUNDO_TABLESPACE确定Undo表空间的管理方式,如果该参数设置为“AUTO”,表示系统使用自动undo管理;如果设置为“MANUAL”,表示
13、使用手动undo管理,以回滚段方式启动数据库。2 2UNDO_MANAGEMENTUNDO_MANAGEMENT表示使用自动undo管理时,系统默认undo表空间名,默认名为undotbs。3 3UNDO_RETENTIONUNDO_RETENTION决定undo数据的维持时间,即用户事务结束后,undo的保留时间,默认值为900秒。以SYS用户SYSDBA身份登录SQL*Plus,使用SHOW命令可以查询undo参数的设置情况:SQL SHOW parameter undo2、还原表空间创建1.通过CREATEDATABASE命令中加入一个子句,在创建数据库到时候建立还原表空间。2.在创建数
14、据库之后,使用createundotablespace命令。create database database_name.undo tablespace tablespace_namedatafile filename size n1autoextend oncreate undo tablespace tablespace_namedatafile filenamesize n3 3、修改还原表空间、修改还原表空间使用使用 ALTER TABLESPACE 命令可以修改还原表空间命令可以修改还原表空间下面的例子为还原表空间增加一额外的数据文件下面的例子为还原表空间增加一额外的数据文件:alte
15、r tablespace tablespace_nameadd datafile filenamesize n1autoextend on4、还原表空间的维护在Oracle中,允许创建多个Undo表空间,但是同一时间同一时间只能激活一个一个undo表空间还原表空间之间的切换删除还原表空间只有在一个还原表空间当前没有被使用时,才可以将它只有在一个还原表空间当前没有被使用时,才可以将它删除删除可用以下的方法删除一个活动的还原表空间可用以下的方法删除一个活动的还原表空间:切换到一个新的还原表空间切换到一个新的还原表空间等所有当前的事物完成后删除该还原表空间等所有当前的事物完成后删除该还原表空间ALT
16、ER SYSTEM SET UNDO_TABLESPACE=tablespace_name;DROP TABLESPACE tablespace_name;5、还原信息相关的动态视图数据字典。通过查询以下的视图可获取有关还原段的信息通过查询以下的视图可获取有关还原段的信息:DBA_ROLLBACK_SEGS 动态性能视图:动态性能视图:V$ROLLNAMEV$ROLLSTATV$UNDOSTATV$SESSIONV$TRANSACTION6.2.4 临时表空间用做排序操作,如用做排序操作,如order by,group by可以由多个用户共享可以由多个用户共享不能包含任何永久对象不能包含任何永
17、久对象如果在创建数据库的时候没有使用如果在创建数据库的时候没有使用TEMPORARY TABLESPACE子句,那么默认使用子句,那么默认使用SYSTEM表空表空间作为排序区,这样会降低数据库系统的效率。间作为排序区,这样会降低数据库系统的效率。默认表空间既可以在创建数据库时创建,也可以在数据库默认表空间既可以在创建数据库时创建,也可以在数据库创建执行后单独创建。创建执行后单独创建。在数据库创建后,修改默认临时表空间需要使用在数据库创建后,修改默认临时表空间需要使用alter database命令:命令:alter database default TEMPORARY TABLESPACE t
18、ablespace_name6.2.5问题思考:用户与表空间SYSTEM表空间空闲空间太小,USER表空间空闲空间较大。为什么呢?(执行以下语句观察效果)SQLselectusername,default_tablespacefromdba_users;解决方案:为特定用户分配指定表空间总结:正常情况是在建oracle实例时,就接着会创建数据库,然后可用sys用户或其创建的有相同权限的用户再建表空间,最后在将用户与表空间建立关联。通常在create用户时,就要指定其默认表空间createuserusernameidentifiedbypassworddefaulttablesapcetable
19、spacename.6.3段的管理段是Oracle中最重要的逻辑结构。其中表段可以用来存储。其他很多对象和结构都是围绕着表段而产生的,如索引段,回退段和临时段等段。索引段是为了使表段中的数据检索更高效。回退段是为了记录标段数据的事务前镜像。临时段是为了对表段中排序操作存储中间数据。例:TEST表段的创建CreatetableTEST(IDNUMBER,NAMEVARCHAR2(20)TablespaceUNIFORMTBStorage(initial1Mnext512Kminextents5pctincrease0);oracle数据库默认的存储参数数据库默认的存储参数表空间所定义的存储参数表
20、空间所定义的存储参数段所定义的存储参数段所定义的存储参数存储参数的设置和优先级存储参数的设置和优先级段extent的分配原则如下:任何在段一级说明的存储参数将覆盖在表空间一级所对应的选项设置,但是表空间级的参数MINIMUMEXTENT或UNIFORMSIZE除外。当存储参数在段一级没有显式地定义时,它们默认为表空间一级所定义的参数值。当存储参数在表空间一级没有显式地定义时,Oracle数据库系统的默认参数值将被使用。区如果在表空间一级已经定义了MINIMUMEXTENT的大小,它将应用于该表空间中将来所有段的区段(extent)的分配。区某些存储参数不能在表空间一级定义,这些存储参数只能在段
21、一级说明。区如果对存储参数进行了修改,新的存储参数只适用于还没有分配的区段(extent)。6.4区区是Oracle表空间中某个段所使用的一块磁盘空间创建对象时最小分配单元。那么Oracle在什么情况下分配区段呢?在如下的情况下,Oracle分配一个区段:当一个段被创建(created)时。当一个段被扩展(extended)时。当一个段被改变(altered)时。那么Oracle又是在什么情况下回收一个区段呢?在如下的情况下,Oracle回收一个区段:当一个段被删除(dropped)时。当一个段被改变(altered)时。当一个段被截断(truncated)时。6.5块的管理数据块(简称块)是
22、oracle的最小存储单元,它由一个或多个操作系统块组成,它的大小在表空间创建时设置,而DB_block_size为默认设置oracle数据块大小的参数。如果要在一个数据库中使用多个数据块,就必须定义至少一个DB_nK_CACHE_SIZE参数。SQLaltersystemsetdb_16k_cache_size1M;SQLSQLselectname,valuefromv$parameterwherename=db_16k_cache_size;虽然用户指定了1M的空间,但是系统最小为其分配了16M的空间。SQLcreatetablespaceDATA1datafiled:oracleappo
23、radatadata01.dbfsize25muniformsize4mblocksize16k;块的结构其中块的结构有三部分组成。(1)块头(Hearder):块头记录一些控制信息,帮助Oracle定位这个块,块与块之间的串联信息。(2)空闲空间(Freespace):处于空闲状态的空间。(3)数据(Data):已经写入数据的空间。数据存放数据的方式是自底往上的,就像现实中的一个箱子。块相关参数l pctfree:剩余空间的百分比小于等于此参数,停止插入数据,图中对应的值为20%。l pctused:使用空间的百分比小于等于此参数,可以插入数据,图中对应的值为40%。l freelist:可以插入数据的状态。行链与行迁移行链如果Oracleblock设置得过小,当要插入一笔数据行的长度大于Oracleblock时候,则需要串联多个block来存储,称为行链。行迁移当一数据行因更新而增加数据长度时,此时如果存储此数据行的block已经没有足够的空间来存放新增加的数据,则必须把整个数据行的内容迁移到另外一个数据库块。