以前对数据库的了解大多数是集中在mysql,最近工作里面一直使用的是oracle,虽然说在互联网行业mysql大行其道,但是一些传统行业或者是金融领域还是更加倾向于使用oracle,sqlserver这种大型数据库。为此还是有必要深入了解以下oracle的一些内部机制的。

  有过oracle使用经验的人都知道表空间(tablespace)的概念,表空间其实是一个逻辑概念,它并不实际存在。而与之关系密切的是数据文件(datafile),数据文件是实际存在的,并且和表空间是多对1的关系。其实只知道这些是远远不够的,前段时间遇到一个数据文件超过32G导致的业务问题,才突然醒悟骚年静下心好好学习学习oracle底层的一些概念才是解决问题的王道。首先我们从整体来上了解一下oracle的逻辑体系结构。在这里附上一张百度到的图片。

  图片中展示的oracle的最大的逻辑结构为数据库,其实这里最大的体系结构应该是实例(instance),并且实例和数据库是一对一的关系,这样的话我们可以将上图看作是oracle体系结构中的一个可分割的最大单元。 可以看出数据库可划分的最大单元为表空间,而表空间又由段(segment)组成,段由extent构成,如果再往下分的话是block,oracle中block的概念不同于操作系统中块文件的概念,这个我们后面章节解释。下面我们对上述的一些概念进行一下阐述:

  表空间:表空间是oracle抽象出来的最大的逻辑单元,用于存储数据库对象。和表空间相关的概念为数据文件,可以通过dba_data_files来查看表空间和数据文件的关系。

                    

     表空间分类:

      • 永久表空间:存储数据库中需要永久化存储的对象,比如二维表、视图、存储过程、索引。
      • 临时表空间:存储数据库的中间执行过程,如:保存order by数据库排序,分组时产生的临时数据。操作完成后存储的内容会被自动释放。临时表空间是通用的,所的用户都使用TEMP作为临时表空间。一般只有tmp一个临时表空间,如果还需要别的临时表空间时,可以自己创建。
      • UNDO表空间:保存数据修改前的副本。存储事务所修改的旧址,即被修改之前的数据。当我们对一张表中的数据进行修改的同时会对修改之前的信息进行保存,为了对数据执行回滚、恢复、撤销的操作。

  段: 段是指占用数据文件空间的通称,或数据库对象使用的空间的集合;段可以有表段、索引段、回滚段、临时段和高速缓存段等。说到这里有必要提一下表段,因为标段中如果表作为一个分区表,那么表的一个分区占用一个段。

    段分类: 由于oracle中段比较多,这里我们只是简单的说一些比较常见的段。

      • 表段: 表段,故名思意,它是专门用于存储表的信息的数据结构,通常与索引段联合使用。 
      • 分区段:这种段类型用于分区,与表段很相似。分区表由一个或多个表分区段组成,组合分区表则由一个或多个表子分区段组成。  
      • 索引段:这种段类型可以保存索引结构,与mysql类似,在mysql中mysiam存储引擎下索引和数据是分开的,而innodb引擎下是存储在一起的。
      • 索引分区: 类似于表分区,这种段类型包含一个索引的某个片。分区索引由一个或多个索引分区段组成。
      • 临时段: 用于存放临时数据,比如带有order by语句的sql会在临时段内存储数据。
      • 回滚段:回滚段是DBA手动创建的段。Type2 undo段由Oracle自动创建和管理。
      • 还有很多其他的段,感兴趣的大家自行研究一哈。

  区:区是oracle中由块组成的逻辑单元,在10G中只要创建了表的时候就会分配区,而在11G及其之后是当插入数据的时候才会分配区。区的分配则是动态的,当表的容量超过当前区所能承载的范围时就会自动添加新的区。这个内容可以通过dba_extents表查看。

  块: oracle的块是建立在数据库块的基础之上的,通常oracle的块可以是2,4,8,16,32K,是系统块的整数倍,并且定义之后不能被修改。在这里引入一个前段时间遇到的问题: oracle数据文件超过32G导致业务失败的问题。这是因为测试环境上面使用的是smallfile tablespace 模式,所以需要满足以下制约:

   由于Oracle的Rowid中使用22位来代表Block号,这22位最多只能代表2^22-1(4194303)个数据块,而在我们一般情况下使用的数据块大小为8k,所以数据文件的理论大小最大为: 31.9999924G,并且在数据文件超过32G的情况下,唯一能做的就是添加一个datafile。

oracle 逻辑体系结构详解的更多相关文章

  1. Oracle逻辑读详解

    1.物理读(physical read) 当数据块第一次读取到,就会缓存到buffer cache 中,而第二次读取和修改该数据块时就在内存buffer cache 了 以下是例子: 1.1  第一次 ...

  2. Oracle执行计划详解

    Oracle执行计划详解 --- 作者:TTT BLOG 本文地址:http://blog.chinaunix.net/u3/107265/showart_2192657.html --- 简介:   ...

  3. oracle表分区详解

    原文来自:http://www.cnblogs.com/leiOOlei/archive/2012/06/08/2541306.html oracle表分区详解 从以下几个方面来整理关于分区表的概念及 ...

  4. Oracle AWR 报告详解

    转自:http://blog.csdn.net/laoshangxyc/article/details/8615187 持续更新中... Oracle awr报告详解 DB Name DB Id In ...

  5. [转]Oracle执行计划详解

    Oracle执行计划详解 --- 作者:TTT BLOG 本文地址:http://blog.chinaunix.net/u3/107265/showart_2192657.html --- 简介:   ...

  6. Linux内核异常处理体系结构详解(一)【转】

    转自:http://www.techbulo.com/1841.html 2015年11月30日 ⁄ 基础知识 ⁄ 共 6653字 ⁄ 字号 小 中 大 ⁄ Linux内核异常处理体系结构详解(一)已 ...

  7. ORACLE数据库备份与恢复详解

    ORACLE数据库备份与恢复详解 学习过程中的总结,有兴趣不妨看看,如果有不对的地方,高手不要留情!! Oracle的备份与恢复有三种标准的模式,大致分为两 大类,备份恢复(物理上的)以及导入导出(逻 ...

  8. Oracle权限管理详解

    Oracle权限管理详解 转载--CzmMiao的博客生活 Oracle 权限 权限允许用户访问属于其它用户的对象或执行程序,ORACLE系统提供三种权限:Object 对象级.System 系统级. ...

  9. Java从入门到精通——数据库篇Oracle 11g服务详解

    装上Oracle之后大家都会感觉到我们的电脑慢了下来,如何提高计算机的速度呢?我们应该打开必要的服务,关闭没有用的服务.下面是Oracle服务的详解: Oracle ORCL VSS Writer S ...

随机推荐

  1. 编码不规范之将request传参到sevice中

    最近审核团队成员代码,发现确实有很多不规范的地方,其中问题之一就是将request.response.session等参数到传入到sevice层处理,在sevice中通过request对象获取到参数后 ...

  2. 解决sql脚本文件太大无法打开的问题

    as we known,sql数据库高版本向低版本还原是不太可能但是又经常会碰到的事,今天实测了一种方法 步骤:任务—>生成脚本—> 下一步->高级,选择数据库版本和编写脚本数据类型 ...

  3. SqlServer 用户和权限操作

    use [master] GO --创建用户,Test,密码Test CREATE LOGIN [TestUser] WITH PASSWORD=N'Test', DEFAULT_DATABASE=[ ...

  4. Android逆向基础知识Smali

    什么是Smali: 我们用工具反编译一些APP的时候,会看到一个smali文件夹,里面其实就是每个Java类所对应的smali文件.Android虚拟机Dalvik并不是执行java虚拟机JVM编译后 ...

  5. PowerDesigner中添加约束

    唯一约束 唯一约束与创建唯一索引基本上是一回事,因为在创建唯一约束的时候,系统会创建对应的一个唯一索引,通过唯一索引来实现约束.不过唯一约束更直观的表达了对应列的唯一性,使得对应索引的目的更加清晰,所 ...

  6. 使用 Github 和 Hexo 快速搭建个人博客

    导语 个人兴趣爱好特别广泛,喜欢捣鼓各种小东西自娱自乐.虽然都没能深入研究,但是自己的“孩子”还是很想拿出来遛遛得人一句夸奖的.所以刚学 Markdown 的时候很是有想过要搭个个人博客来玩玩,一来激 ...

  7. Json-lib 进行java与json字符串转换之一

    这篇文章主要介绍了在java中,JSON字符串与java对象的相互转换实例详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下. 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.J ...

  8. .net 4 安装未成功,无意中的解决办法!

    公司 电脑是chost的系统,由于使用时间过长,重装纯净版系统的话,代价太大,故网上寻求各种解决办法! 安装.net 4 总是失败,查看百度,各种: WIN7系统哈哈跟我的问题一样,我的刚才解决了:1 ...

  9. Caused by: java.lang.IllegalStateException: Immutable bitmap passed to Canvas constructor

    Bitmap bmp =BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); Paint paint = new ...

  10. 使用Eclipse的常见问题整理

    我在Eclipse里新建一个android工程的时候附带着产生了一个名字为appcompat_v7的工程,这个工程是干什么用的啊?为何我新建的工程都出错了,错误信息提示为: error: Error ...