码迷,mamicode.com
首页 > 数据库 > 详细

Oracle体系结构概述(2)

时间:2020-06-08 10:52:25      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:回退   distinct   临时表空间   默认   完成   名称   说明   创建表   终端   

一、逻辑存储结构
  逻辑存储结构是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体系结构概述(2)

标签:回退   distinct   临时表空间   默认   完成   名称   说明   创建表   终端   

原文地址:https://www.cnblogs.com/hsoYOI/p/13063991.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!