Oracle体系结构概述
Posted hsoyoi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle体系结构概述相关的知识,希望对你有一定的参考价值。
一、逻辑存储结构
逻辑存储结构是Oracle数据库存储结构的核心内容,对Oracle的所有操作都会涉及逻辑存储结构。逻辑存储结构是从逻辑的角度分析数据库的构成,是对数据库存储结构在逻辑概念上的划分。Oracle数据库(Database)从逻辑存储结构上讲,主要包括表空间(Tablespace)、段(Segment)、区(Extent)和数据块(Block)。这四者存在关系为:多个数据块组成一个区;多区组成一个段;多个段组成一个表空间。一个Oracle数据库(数据库本身也属于逻辑结构)由多个表空间组成,Oracle数据库的逻辑存储结构可以表示为下图:
图1
1、表空间(Tablespace)
在Oracle数据库中,最大的逻辑存储结构是表空间(Tablespace),表空间与物理上的数据文件相对应,一个表空间可以对应多个数据文件,但是一个数据文件只能对应一个表空间。一个表空间的大小等于构成该表空间的所有数据文件大小的综和。我们在数据库中创建的所有内容都存储在表空间中,如果我们没有指定表空间,那么我们在数据库中创建的内容将会存储在默认的表空间中。
我们创建数据库时,系统会自动创建一些表空间,这些表空间说明如下:
SYSTEM:系统表空间,包含数据字典(描述数据库自身结构、所有对象、用户及角色的的表)。SYSTEM表空间是数据库中数据字典所处的位置。如果没有SYSTEM表空间,那么数据库就无法运作 。创建数据库后,需要创建存储数据的其他表空间。
SYSAUX:辅助系统表空间,用于减少系统表空间的负荷,提高系统的作业效率。
TEMP:临时表空间,用于存储临时临时数据。
EXAMPLE:实例表空间,存放实例数据库模式对象信息及其培训资料等。
UNIDOTBSI:重做表空间,存放数据库中有关重做的相关信息和数据,当用户对数据库表进行修改,包括INSERT、UPDATE和DELETE操作时,Oracle系统自动使用重做表空间,来临时存放修改前的数据 当所做的修改完成,并提交之后,系统会根据需要保留修改前数据的时间长短,来释放重做表空间的部分空间。
USERS:用户表空间,存放永久性用户对象的数据和私有信息,因此,也称为数据表空间,每个数据库都应该有一个用户表空间,以便在创建用户的时候,将其分配给用户。除了Oracle系统默认创建表空间,用户可以根据应用系统的规模,及其所要存放对象的情况,创建多个表空间,以区分用户数据和系统数据。
通过sql语句可以查看表空间,如下图:
select * from dba_tablespaces;
图2
2、段(Segment)
在Oracle数据库中,段是一组盘区,这个盘区组成了被Oracle视为一个单位的数据库对象,一个段存储了一个数据库对象(比如一张表,一个索引都属于一个数据库对象。对于数据量大的表可能进行分区处理,当段的区满时,系统会分配另一个区,因此,段的数据区在磁盘上可能是不连续的,一个也可能会由多个段组成)。所以,段一般是数据库终端用户将处理的最小存储单位。
按照段中存储存储数据的特征,可以将段分为5种类型:数据段、索引段、临时段、LOB段和回退段。
通过sql语句可以查看数据段类型情况,如下图:
select distinct(segment_type) from dba_segments;
图3
数据段:用于存储表中的数据,在Oracle中,如果用户在表空间创建一个表,那么系统会自动在该表空间中创建一个数据段,而且数据段的名称和表的名称相同。如果创建的是分区表,系统会为每个分区分配一个数据段。
索引段:用于存储表中的索引信息。在Oracle中,如果用户创建了一个索引,则系统会为该索引创建一个索引段,并且索引段的名称与索引的名称相同。如果创建的是分区索引,那么系统会为每个分区索引创建一个索引段。
临时段:用于存储临时数据,在Oracle中,排序或者汇总时产生的临时数据都存储在临时段中,该段由系统在用户的临时表空间中自动创建,并在排序或汇总结束时自动消除。
LOB段:用于存储表中大型数据对象。在Oracle中,大型数据对象类型主要有CLOB和BLOB。
回退段:用于存储用户数据被修改之前的值。在Oracle中,如果需要对用户的数据进行回退操作,也就是恢复操作,就要使用回退段。每个Oracle数据库都应该至少有一个回退段,供数据恢复使用。
3、区(Extent)
在Oracle中,区(Extent)是磁盘空间分配的最小单位。区由一个或者多个数据块组成,而一个或多个区又组成一个段。
段的增大是通过增加区的个数来实现的,但是在一个数据段中,区的个数并不是无限制的。在创建时可以使用MIN_EXTENTS和MAX_EXTENTS来定义区的个数,其中参数MIN_EXTENTS表示段中最少可分配的区的个数,MAX_EXTENTS参数表示一段中最多可以分配的区的个数。
通过数据字典DBA_TABLESPACES可以了解表空间信息,以及表空间的最大与最小区个数。
select min_extents,max_extents,tablespace_name from dba_tablespaces;
图4
4.块(Block)
块(Block)是用来管理存储空间的基本单位,也是最小的逻辑存储单位。Oracle数据库是以块为单位进行逻辑读写(I/O)操作的。
在创建数据库时,初始化参数DB_BLOCK_SIZE用来指定一个数据块的大小。数据库创建之后,将不能修改数据块的大小。
可以通过sql/plus使用如下sql语句查看块的大小。
上海代孕【徽信15601836539】、成都代孕【徽信15601836539】、
济南代孕【徽信15601836539】、郑州代孕【徽信15601836539】、
西安代孕【徽信15601836539】、南京代孕【徽信15601836539】、
以上是关于Oracle体系结构概述的主要内容,如果未能解决你的问题,请参考以下文章
Oracle专题1之Oracle概述Oracle数据库的体系结构以及常用命令