oracle逻辑存储结构的组成,1.2.2 逻辑存储结构

1.2.2  逻辑存储结构

Oracle的逻辑存储结构是从数据库的角度规划出来的架构,既然是在逻辑上进行构建,因此在操作系统上看不到实际的文件,必须通过Oracle工具才能管理作业,例如,Oracle SQL*PLUS、ORACLE Enterprise Manager等,但这些逻辑存储结构又构建在物理结构上,如图1-7所示。

36a3d616d0391353028dc94750fd6c53.png

图1-7  逻辑存储结构与物理存储结构关联图

对逻辑存储结构的介绍依序如下:

表空间:一个数据库由多个表空间组合而成,而表空间是一个逻辑结构,因此,在操作系统上看不到文件,但表空间又是由一个或多个数据文件组合而成的,使用这样的方式主要是为了方便管理,其特性如下:

用于容纳各类型数据段(Segment)的逻辑空间。

一个表空间只能允许被一个数据库所拥有。

一个表空间拥有一个以上放置在不同磁盘上的数据文件,这样可以提高数据存取效率。

一个表空间包含一个以上的数据段。

表空间可以在数据库运行时做脱机的动作,这样,当表空间进行脱机备份与恢复时,用户依然可以正常存取其他表空间内的数据。

提示

系统表空间与活动的回退段所在的表空间无法做脱机的动作。

除了可以针对某一个表空间做脱机备份(Offline Backup)的动作外,也可以针对某一个表空间做联机备份的动作。

表空间可以随时切换只读模式(Read Only Mode)和可读写模式(Read-Write Mode)。

在表空间可以设置分配给数据库用户的存储空间(Quota)限制。

表空间有如下三种:

***性表空间(Permanent Tablespace):主要的功能是提供存放普通正常数据的空间,其特性是只要是磁盘不崩溃、用户没有删除数据,其中的数据都会永远存在。

撤消表空间(Undo Tablespace):主要的功能是提供、维持数据的读取一致性、数据库的恢复作业,以及闪回(Flashback)等功能,其特性是存放撤消段(Undo Segment)的表空间,主要是存放用户恢复数据的记录。其特性是只供撤消段使用,不提供一般的用户存取,在用户会话下达提交指令或回退指令前,任何原因造成会话失败,都会用其中的数据进行恢复。当用户下达提交或回退指令后,其中的数据会被覆盖,空间会被释放。

临时表空间(Temporary Tablespace):主要是当内存空间不够时排序数据。

段:是指特定逻辑需要的结构,在Oracle的逻辑定义里,所有Oracle的逻辑结构中的事物统称对象(Object),但有些Oracle对象是需要空间存放的,它们就是段。举例来说,视图(View)是由表组合而成的,它只是存放在数据字典中的一个定义,并不占有实际的空间,所以视图是一个对象,而表需要实际的空间来存放数据对象,因此,表也是属于一个段。当一个段被配置起来时,会先以配置时的参数为主,若没有设置则会以所在的表空间为主,***是以当初配置数据库的参数为主。段主要分为4大类,依序如下。

数据段(Data Segment):Oracle数据库中所有的表都是存放在数据段中。

索引段(Index Segment):Oracle数据库中所有的索引都是存放在索引段中。

撤消段:存放撤消数据的相关信息,用来维持数据库的一致性。

临时段(Temporary Segment):当SQL语句需要执行排序(Sorting)动作时,无法完全使用内存进行排序,而使用磁盘上的空间来做排序的动作时,Oracle数据库就会分配临时段来执行排序作业。

区(Extent):Oracle用一组数据文件来管理的磁盘空间,也就是表空间,用以代表Oracle可用磁盘上的空间。一组连续的数据块称为一个区;一组区则称为段。段可包含任何占用空间的对象,当一个区被填满时,段就会开始使用另一个区。

数据块(Data Block):是由一个或多个操作系统块(O/S Blocks)所组合而成的,数据块在Oracle 8i中只能是一种大小的格式,且在数据库建立之后就不能再更改了,但Oracle 9i之后的版本可以拥有5种大小的格式。其特性如下:

数据块是Oracle中存取数据的最小单位,也是数据库中最小的逻辑单元,同时数据块是由一个或多个操作系统块所组合而成,也就是说读取或写入时都是以数据块为单位进行的,例如,如果需要一笔数据,这笔数据可能只有2 K而已,但当Oracle读取数据时,并不会只读取2 K大小的数据,而是会读取一个数据块。

数据块必须是操作系统块的倍数,以避免不必要的I/O。

***的数据块要视操作系统而定。

Oracle对I/O最小的单位是数据块,但空间分配时最小的单位是区。

当以正常的方式在段内增加数据时,Oracle会先去查询这个段的***个数据块,也就是段文件头(Segment Header)。在文件头中有一个Free List(空闲列表),Oracle会先去查询Free List中有没有空的数据块,所谓空的数据块就是指还有空的空间可以添加数据的数据块,如果有就会拿来用;如果添加数据到一半时,空的数据块用完了,就会向Oracle再要一个区。

【责任编辑:book TEL:(010)68476606】

点赞 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值