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. 寻路DEMO

    网格场景的寻路算法DEMO 灰色格子为默认正常蓝色格子表示为障碍物,不可进入红色细条在格子周围,表示格子的墙,用于阻碍行走紫色为当前鼠标选中格子黄色为寻路的起始位置和结束位置.鼠标左键设置,CTRL+ ...

  2. Okhttp【简介】应用 示例

    资源 GitHub:https://github.com/square/okhttp 官网     文档     API  You'll also need Okio[https://github.c ...

  3. 在Servlet的init方法中创建线程

    servlet代码如下: package com.weichat.servlet; import java.io.IOException; import javax.servlet.ServletEx ...

  4. 如何实现JS函数的重载

    javascript不能支持函数的重载,如下: function f(length) { alert("高为:"+length); } function f(length,widt ...

  5. Python基础语法学习整理

    1.基础 r’  ‘:原始字符串 pow.round是内建函数 2.序列通用操作: 索引:d[] 分片:[:] 相加:d+[] 乘法:[1,2]*3 成员判断:in 可用函数:len  max  mi ...

  6. Caused by: com.alibaba.dubbo.remoting.TimeoutException: Waiting server-side response timeout by scan timer. start time: 2016-07-20 16:27:34.873, end time: 2016-07-20 16:27:39.895, client elapsed: 0 ms

    方案一: 重启dubbo连接 zookeeper 方案二: 经压测,greys跟踪得知,是dubbo的monitor的问题.主要超时的方法是dubbo的getIP方法,monitor每次收集数据的时候 ...

  7. 在不重装系统的情况下撤底删除oracle数据库及oralce的相关软件

    先从控制面板删除oracle的相关应用及数据库, 删除系统变量 ORACLE_OEM_CLASSPATH=%JAVA_HOME%\lib\ext\access-bridge-64.jar;%JAVA_ ...

  8. Delegate模式

    转载:http://www.cnblogs.com/limlee/archive/2012/06/13/2547367.html 代理模式 顾名思义就是委托别人去做事情. IOS中经常会遇到的两种情况 ...

  9. PHP高级教程-文件上传

    PHP 文件上传 通过 PHP,可以把文件上传到服务器. 本章节实例在 test 项目下完成,目录结构为: test |-----upload # 文件上传的目录 |-----form.html # ...

  10. PHP 表单 - 3(PHP 表单 - 必需字段)

    PHP 表单 - 必需字段 本章节我们将介绍如何设置表单必需字段及错误信息. PHP - 必需字段 在上一章节我们已经介绍了表的验证规则,我们可以看到"名字", "E-m ...