Oracle存储空间管理及应用方案-数据库方案大全-Rain
Oracle存储空间管理及应用摘要:本文详细介绍了Oracle存储架构及其存储体系的管理和应用,包括表空间、回滚段、临时表等,还对其在管理和应用时常见的错误进行了分析探讨主题词:Oracle技术 表空间 数据文件 回滚段 临时表 错误引言数据库空间的有效使用和维护不仅是数据库管理的重要工作,也是大多数开发人员所关心的内容,它直接关系到数据库性能的发挥。Oracle提供了不少方法用于数据空间的使用、监控和维护,同时也在各版本中陆续对这方面的功能进行了增强,目的在于简化这方面工作的复杂度,提高应用的运行效率。本文希望通过系统地介绍这方面的有关概念,让大家能更好地规划使用数据空间,正确使用Oracle提供的有关功能特性,提高应用的执行效率。Oracle数据库的存储体系及有关概念2.1 Oracle数据库的逻辑结构从应用者的角度来考察数据库的组成。自下向上,数据库的逻辑结构共有6层:2.2 Oracle数据库的存储结构数据库的存储结构指逻辑结构在物理上的实现,共有3层 其中:?数据文件:用于存放所有的数据,以DBF为扩展名。日志文件:记录了对数据库进行的所有操作,以LOG为扩展名。控制文件:记录了数据库所有文件的控制信息,以CTL为扩展名。综上,Oracle数据库的数据存储空间在逻辑上分为多个表空间,每个表空间由系统中的一个或多个物理数据文件构成;Oracle存储数据的基本单位是块,其大小在建库时由DB_BLOCK_SIZE参数确定,一个或多个连续的块构成一个区间(EXTENT),它作为数据对象存储的基本单位来使用。在Oracle中,每个基本数据对象使用的空间称为段(SEGMENT),段存放在唯一的表空间上,每个段实际上是一系列区片(更为准确地是数据块)的集合。每个简单数据对象对应一个段;对于分区对象如分区表、索引,则每个(子)分区对应一个段,由各个(子)分区共同构成一个完整的数据对象。名词解释:表空间(Tablespace):为数据库提供使用空间的逻辑结构,其对应物理结构是数据文件,一个表空间可以包含多个数据文件。表空间可分为System表空间、非System表空间和回滚段表空间,其中,System表空间是安装数据库时自动建立的,它包含数据库的全部数据字典,存储过程、包、函数和触发器的定义以及系统回滚段。除此之外,还能包含用户数据。段(Segment):数据库一种逻辑结构,如表段,索引段,回滚段等,段存在于表空间中,并对应一定的存储空间,共有四种类型的段:表/数据(Table/Data):保存表数据索引(Index):保存索引数据回滚(Rollback):保存回滚数据,用于回滚一次事务处理,以及保持读操作一致性临时(Temporary):用于满足排序的需要,比如查询和索引创建中的ORDER BY从句区间(Extent):段的存储可以分成一个或多个区间,每个区间占用一定数量的数据块(block)块(Block):数据库最小的存储单位,由Block参数(db_block_size)指定表空间及数据文件3.1 表空间简介通常,有以下几种类型的表空间(除数据表空间需用户自己创建外,其它6种表空间在数据库创建时均会默认建立1个):3.1.1 系统表空间(SYSTEM)系统表空间是每个Oracle数据库都必须具备的部分,是安装数据库时自动建立的。它包含数据库的全部数据字典,存储过程、包、函数和触发器的定义以及系统回滚段等管理数据库自身所需的信息。一般来说,应该尽量避免在SYSTEM表中存储非SYSTEM用户的对象。因为这样会带来数据库维护和管理的很多问题。一旦SYSTEM表空间损坏了,只能重新生成数据库。3.1.2 临时表空间(TEMP)临时表空间并不包含真正的数据,临时表空间中存储数据库中动态生成的对象,如排序操作或表连接时的临时数据等;临时表空间也是Oracle用于存储其所有临时表的所在。在一些非常繁忙的数据库中,可能会存在多个临时表空间。3.1.3 工具表空间(TOOLS)工具表空间用于保存数据库工具软件所需的数据库对象,如像Oracle Reports这样的工具软件在工作时就有自己的一组专用表。Oracle Reports把这些表存放在数据库中。大多数DBA都将支持工具运行所需的表存放在这个表空间中。3.1.4 用户表空间(USERS)用户表空间用于存放用户的私有信息,用户的专用数据库对象。3.1.5 回滚表空间(RBS)Oracle数据库需要在一个地方保存恢复(Undo)信息。回滚表空间中存放数据库对象的回滚段,在出现失败和临时终止事务时,可以用回滚段使数据库对象退回到旧值。3.1.6 数据和索引表空间数据表空间用来存放用户的应用数据,索引表空间用来存放应用数据对象的索引。索引可以帮助Oracle迅速找到表中存放的数据。3.2