Oracle存储空间管理及应用方案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Oracle存储空间管理及应用
摘要:本文详细介绍了Oracle存储架构及其存储体系的管理和应用,包括表空间、回滚段、临时表等,还对其在管理和应用时常见的错误进行了分析探讨
主题词:Oracle技术表空间数据文件回滚段临时表错误
一、引言
数据库空间的有效使用和维护不仅是数据库管理的重要工作,也是大多数开发人员所关心的内容,它直接关系到数据库性能的发挥。
Oracle提供了不少方法用于数据空间的使用、监控和维护,同时也在各版本中陆续对这方面的功能进行了增强,目的在于简化这方面工作的复杂度,提高应用的运行效率。
本文希望通过系统地介绍这方面的有关概念,让大家能更好地规划使用数据空间,正确使用Oracle提供的有关功能特性,提高应用的执行效率。
二、O racle数据库的存储体系及有关概念
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 表空间的管理和使用
3.2.1 创建表空间
创建表空间的脚本示例如下:
create tablespace ts_name datafile --创建名为ts-name的表空间
'c:\oracle\oradata\file1.dbf' size 100m , --表空间的文件1,大小为100M 'c:\oracle\oradata\file2.dbf' size 100m --表空间的文件2,大小为100M minimum extent 550k --最小区间大小为550K
[logging/nologging] --记录日志/不记录日志
default storage (initial 500k --初始大小为500K
next 500k --下一个区大小为500K
maxextents 500 --最大区间数为500个
pctinccease 0) --增量为0
[online/offline] --联机/脱机