转自:oracle体系结构-逻辑存储结构
1逻辑结构概述
oracle的逻辑存储结构是一种层次结构,主要由表空间、段、区间和数据块等概念组成;
逻辑结构是面向用户的,主要目的是为了便于管理,当用户使用Oracle设计数据库时,使用的就是逻辑存储结构;
oracle数据库由多个表空间组成(数据库自身也属于逻辑概念);
表空间由多个段组成;
段由多个数据区组成;
数据区由多个数据块组成。
2数据块Data Blocks
数据块是Oracle逻辑存储结构中最小的逻辑单位,也是数据库执行输入输出操作的最小存储单位。
Oracle数据放在“Oralce数据块”中,而不是“操作系统块”中。
通常Oracle数据块大小是操作系统块大小的整数倍。(如OS的块大小是2KB,Oracle的数据块大小是8KB)。
Oracle数据块有定义的标准大小,对应初始化参数DB_BLOCK_SIZE。(Oracle支持在同一个数据库中有多种大小的块,分为标准块与非标准块)
查看标准块大小
col name format a30; # 格式化列大小
col value format a20; # 格式化列大小
select name,value from v$parameter where name = 'db_block_size';
数据块中可以存放表数据、索引数据、簇数据等,无论存放什么数据,它的结构都是相同的。
3数据区Extent
数据区(也称数据扩展区)是由一组连续的Oracle数据块所组成的Oracle存储结构;
一个或多个数据块组成一个数据区,一个或多个数据区组成一个段;
当一个段中的所有空间使用完后,Oracle系统自动为该段分配一个新的数据区;
使用数据区是为了保持特定数据类型的数据,所以数据区是Oracle分配存储空间的最小单位。
4段Segment
段是一个独立的逻辑存储结构,用于存储表、索引或簇等占用空间的数据对象,段是为特定的数据对象分配的一系列数据区;
每当创建一个具有独立段的数据对象时,Oracle将为它创建一个段;
一个段只属于一个属于特定的数据对象;
段内包含的数据区可以不连续,可以跨越多个文件;
使用段的目的是保持特定逻辑对象。
Oracle数据库通常有下列4种类型的段:
数据段
保存表中的数据记录;
当创建一个表时,系统自动创建一个以该表的名字命名的数据段;
索引段
保存索引;
当创建一个索引时,系统自动创建一个以该索引的名字命名的索引段;
回滚段
保存回滚条目,即修改前的旧值;
当一个事务开始处理时,系统为之分配回滚段,回滚段可以动态创建和撤销;
Oracle11g系统有个默认的回滚段,管理方式可自动,可手动;
临时段
保存暂时性的临时数据;
Oracle系统将在专门用于存储临时数据的表空间中未操作分配临时段;
如CREATE INDEX、SELECT DISTINCT/GROUP BY/ORDER BY会在临时表空间分配临时段用来暂时性地保存解析过的查询语句或排序过程中产生的临时数据;
如果数据库经常会有这类语句,最好调整SORT_AREA_SIZE初始化参数来增大排序区,使排序操作尽量在内存中完成,提高执行效率。
5表空间
Oracle使用表空间将相关的逻辑结构(如段、数据区等)组合在一起;
表空间是数据库的最大逻辑划分区域,通常用来存放数据表、索引、回滚段等数据对象;
任何数据对象在创建时都必须被指定存储在某个表空间中;
表空间(逻辑存储结构)对应数据文件(物理存储结构);
一个表空间由一个或多个数据文件组成,一个数据文件只属于一个表空间;
一个数据库最少有一个表空间(SYSTEM),表空间的大小等于所有属于它的数据文件大小的总和;
表空间相当于文件夹,数据文件相当于文件夹里的文件。
表空间使用规范
用户可根据应用系统的实际情况及其所要存放的对象类型创建创建多个自定义的表空间,以区分用户数据和系统数据;
不同应用系统的数据应存放在不同的表空间上;
不同表空间的文件应存放在不同的盘上,以减少IO冲突;
Oracle 11g默认创建的主要表空间
SYSTEM
系统表空间,用于存放Oracle系统内部表和数据字典的数据。
Oracle本身不建议将用户创建的表、索引等逻辑对象放在SYSTEM表空间中;
查看系统内部表的信息 - v$fixed_view_definition
col view_name format a30;
col view_definition format a30;
select * from v$fixed_view_definition;
查看数据字典信息 - dict
col table_name format a30;
col comments format a30
select * from dict;
SYSAUX
Oracle 11g新增的默认表空间,主要存储除数据字典以外的其他数据对象;
充当SYSTEM的辅助表空间,降低SYSTEM表空间的负荷;
一般不存储用户数据,由Oracle系统内部自动维护
UNDO
撤销表空间,用于存储撤销信息;
当对数据表进行修改操作,Oracle系统自动使用UNDO表空间临时存放修改前的旧数据,在提交后,根据系统设置的保留时间长度来决定何时释放UNDO表空间的部分空间;
一般在创建Oracle实例后,Oracle系统自动创建“UNDOTBS1”的撤销表空间,对应数据文件是“UNDOTBS01.DBF”
USERS
用户表空间,Oracle建议用户使用的表空间;