Oracle数据库的物理文件是存储在磁盘上的数据文件、控制文件和日志文件的总称。数据文件和日志文件是数据库中最重要的文件。数据库由若干个表空间组成,表空间由表组成,表由段组成,段由区间组成,区间由数据块组成。那么,数据在数据文件中是如何组织的呢?要了解这些内容我们首先必须理解什么是表空间(tablespace)、段(segment)、区(extent)、块(block),这些都是oracle数据库在数据文件中组织数据的基本单元。

  块(block)是数据存储的物理单位,也是数据文件中最基础的单位。数据直接存储在块上,块是oracle空间分配的最小单位。oracle中的块大小常见的有三种:2KB、4KB、8KB。块的大小在数据库创建时就已经固定下来,数据库中每个块的大小都是相同的,而且所有的块都有相同的格式,由“块头+表目录+行目录+空闲空间+数据空间”组成。块头包含着块类型(比如是表块、还是索引块)的信息、磁盘上块的位置等信息。表目录(table directory),如果有的话,包含着此块中存储各行的表的信息(如果一个块中存有多个表中的数据)。行目录(row directory)包含着数据行的描述信息,它是一个指针数组,指示了每一行在数据块中的物理位置。块头、表目录、行目录统称为块开销(block overhead),是oracle用来统计、管理块本身的。剩下的两部分很简单,已经存有数据的就是数据空间,暂时没存的就是空闲空间。

  区(extent)又叫盘区,是数据文件中一个连续的分配空间,它比块要大,由块组成。有些对象分配空间时可能至少需要两个盘区,比如回滚段,而这两个盘区不一定要求相连。区的大小从一个块到2GB不等。

  段(segment)是oracle数据库中的分配单位,对象如表、索引等都是以段为单位进行分配。当创建一个表时将创建一个表段,创建一个索引时就创建一个索引段。每一个消耗存储空间的对象最终被存储到一个单一的段中。如回滚段、临时段、聚簇段、索引段等。

  1)数据段:每个不在簇中的表都有一个数据段。表中的所有数据都存储在数据段的区间中。每一个簇都有一个数据段,簇中每个表的数据都存储在簇的数据段中。

  2)索引段:每个索引都有一个索引段,存储所有的索引数据。

  3)临时段:当执行SQL语句需要临时工作区时,Oracle将创建临时区。

  4)回滚段:如果当前系统处于自动重做管理模式,则数据库服务器使用表空间来管理重做的空间。如果使用手动重做管理模式,则数据库管理员需要创建一个或多个回滚段,用于临时存储重做信息。回滚段中的信息将在数据库恢复过程中使用到。

  但是oracle11g中加入了新的特性:为了节省存储空间,对空表不建立段,这可能会导致我们导出数据库的时候空表无法导出,关于解决方法请参考文章Oracle 11g导出空表、少表的解决办法

  表空间(tablespace)是一个逻辑容器,是为了统一Oracle物理和逻辑的结构而专门建立的。从物理上来说,一个表空间是由具体的一个或多个物理文件构成的;从逻辑上来说一个表空间是由具体的一个或多个用户模式下的表、索引等数据构成。在Oracle中表不可能单独存在,一定隶属于某一个用户,而某用户的数据必定存在于某个表空间中。

  方案(schema)又叫模式,是比表空间小一级的逻辑概念,它也是一个逻辑容器。多个用户可能共用一个表空间,那如何区分开每一个用户?那么在表空间中对每个用户都有一个对应的方案,用于保存单个用户的信息。

  oracle中存储的层次结构总结如下:

  1)数据库由一个或多个表空间组成;

  2)表空间由一个或多个数据文件组成,一个表空间包含多个段;

  3)段由一个或多个区组成;

  4)区是数据文件中一个连续的分配空间,由一个或多个块组成;

  5)块是数据库中最小、最基本的单位,是数据库使用的最小的I/O单元;

  6)每个用户都有一个对应的方案。

参考资料:

http://www.cnblogs.com/gsk99/archive/2011/04/14/2016216.html

http://m.oschina.net/blog/76768

oracle中的一些基本概念的更多相关文章

  1. oracle中有关用户、角色的一些概念。

    oracle中的每个用户对应一个单独的方案(schema),方案的名字与用户名一样,方案中包含很多数据对象,表,视图,触发器,存储过程等元素. oracle中管理数据库的角色有sys,system,数 ...

  2. Oracle中用户(User)和模式(Schema)的概念

    数据库理论中数据库用户和数据库模式并没有必定的联系.具体的数据库模式解释能够在这里找到: http://stackoverflow.com/questions/2674222/what-is-purp ...

  3. ORACLE 中ROWNUM用法总结(转)

    ORACLE 中ROWNUM用法总结! 对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<.<=.!=) ...

  4. 在Oracle中恢复被DROP掉的表

    在Oracle中可能不小心会DROP掉一个表,如果没有定期做备份的话,将会带来很大的麻烦.如果有的情况下,每天的数据都很重要,而定期备份的周期又稍长,情况恐怕也不容乐观!以前只知道Windows有个回 ...

  5. WebLogic中的一些基本概念

    WebLogic中的一些基本概念   WebLogic 中的基本概念 上周参加了单位组织的WebLogic培训,为了便于自己记忆,培训后,整理梳理了一些WebLogic的资料,会陆续的发出来,下面是一 ...

  6. 在Oracle中使用Entity Framework 6 CodeFirst

    项目中需要将系统从SQLServer数据库迁移到Oracle上.由于原大部分数据访问操作都是通过包装了Entity Framework的统一访问入口实现的,所以需要研究Entity Framework ...

  7. Oracle笔记1-数据库概念

    数据库: 基本的概念:数据库管理系统(Database Management System,DBMS):管理数据的一个软件系统关系型数据库管理系统(RDBMS)数据库(Database):存放数据的磁 ...

  8. Oracle中的索引详解

    Oracle中的索引概述 索引与表一样,也属于段(segment)的一种.里面存放了用户的数据,跟表一样需要占用磁盘空间.索引是一种允许直接访问数据表中某一数据行的树型结构,为了提高查询效率而引入,是 ...

  9. Oracle中Kill session的研究(转 出自eagle)

    itpub link: http://www.itpub.net/235873.html 我们知道,在Oracle数据库中,可以通过kill session的方式来终止一个进程,其基本语法结构为: a ...

随机推荐

  1. 不要再使用JS框架了

    停止编写Javascript框架吧. Javascript框架就好像死亡和税收一样:终究不可避免它的存在.我确信如果我是那面墙上的一只苍蝇,每次有人开始一个新的网页项目时,第一个问题肯定是我们用的是哪 ...

  2. 两个JS对象怎样才能相等

    在JS中,两个对象如何才能相等?下面的两个 Alert,只有一个输出true.  在JS中如何才能构造出两个JS对象相等? var prop1 = {asd:{def:'abc'}}; var pro ...

  3. Android -- ImageLoader简析

    图片的内存缓存实现 Image-Loader库有一个较完整的内存缓存实现,使用者可以根据需要选择已经实现的策略,也可以定制自己项目中需要的策略. 内存缓存实现代码在memory和memory.impl ...

  4. Android -- 在ScrollView中嵌套ListView

    在做一个工程,这个工程的布局可以相当的复杂,最外面是ScrollView,在ScrollView里面有两个Listview,这下好了,布局出来了,放在机子上跑,卡得想死有木有,信息乱跑乱出现,表示非常 ...

  5. MySQL监控主要指标及采集方法

    MySQL监控属于DB监控的模块之一,包括采集.展示.监控告警.本文主要介绍MySQL监控的主要指标和采集方法. MySQL监控和Redis监控的逻辑类似,可参考文章<Redis监控主要指标及采 ...

  6. 设计好玩的3D文字效果

    ​在线演示 本地下载 好玩的3D文字效果,可以替换汉字.快来试试吧!

  7. Android模拟神器——Genymotion

    文章地址:http://ryantang.me/blog/2013/08/16/genymotion/

  8. 局域网连接打印机(Win10)

    局域网支持交换机和WIFI环境下进行连接(要求连上打印机的电脑已开启) 1.首先打开控制面板 2.硬件和声音 3.高级打印机设置 4.找到要连接的打印机,通过浏览(R) 添加局域网某台机器上的打印机, ...

  9. 解决Eclipse里项目名有红叉,但是底下的每一个文件都没有红叉

    有这种错误让人很恼火,因为并不知道是哪个文件引起的整个项目错误.所以我们可以打开下边的错误按钮,看看是什么问题. 1.如果是因为java compiler level does not match t ...

  10. 寻找[nginx] 由Lua 粘合的Nginx生态环境-- agentzh

    来自:linuxtone org     Chnangelog:         120312 fixed as s/hhttp/http/g ,thanx muxueqz         12030 ...