oracle 逻辑体系结构详解
以前对数据库的了解大多数是集中在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 逻辑体系结构详解的更多相关文章
- Oracle逻辑读详解
1.物理读(physical read) 当数据块第一次读取到,就会缓存到buffer cache 中,而第二次读取和修改该数据块时就在内存buffer cache 了 以下是例子: 1.1 第一次 ...
- Oracle执行计划详解
Oracle执行计划详解 --- 作者:TTT BLOG 本文地址:http://blog.chinaunix.net/u3/107265/showart_2192657.html --- 简介: ...
- oracle表分区详解
原文来自:http://www.cnblogs.com/leiOOlei/archive/2012/06/08/2541306.html oracle表分区详解 从以下几个方面来整理关于分区表的概念及 ...
- Oracle AWR 报告详解
转自:http://blog.csdn.net/laoshangxyc/article/details/8615187 持续更新中... Oracle awr报告详解 DB Name DB Id In ...
- [转]Oracle执行计划详解
Oracle执行计划详解 --- 作者:TTT BLOG 本文地址:http://blog.chinaunix.net/u3/107265/showart_2192657.html --- 简介: ...
- Linux内核异常处理体系结构详解(一)【转】
转自:http://www.techbulo.com/1841.html 2015年11月30日 ⁄ 基础知识 ⁄ 共 6653字 ⁄ 字号 小 中 大 ⁄ Linux内核异常处理体系结构详解(一)已 ...
- ORACLE数据库备份与恢复详解
ORACLE数据库备份与恢复详解 学习过程中的总结,有兴趣不妨看看,如果有不对的地方,高手不要留情!! Oracle的备份与恢复有三种标准的模式,大致分为两 大类,备份恢复(物理上的)以及导入导出(逻 ...
- Oracle权限管理详解
Oracle权限管理详解 转载--CzmMiao的博客生活 Oracle 权限 权限允许用户访问属于其它用户的对象或执行程序,ORACLE系统提供三种权限:Object 对象级.System 系统级. ...
- Java从入门到精通——数据库篇Oracle 11g服务详解
装上Oracle之后大家都会感觉到我们的电脑慢了下来,如何提高计算机的速度呢?我们应该打开必要的服务,关闭没有用的服务.下面是Oracle服务的详解: Oracle ORCL VSS Writer S ...
随机推荐
- bzoj 5210 最大连通子块和——动态DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=5210 似乎像bzoj4712一样,依然可以用别的方法做.但还是只写了动态DP. 当然是dp[ ...
- SqlServer 用户和权限操作
use [master] GO --创建用户,Test,密码Test CREATE LOGIN [TestUser] WITH PASSWORD=N'Test', DEFAULT_DATABASE=[ ...
- MySQL 学习四 SQL优化
MySQL逻辑架构: 第一层:客户端层,连接处理,授权认证,安全等功能. 第二层:核心层,查询解析,分析,优化,缓存,内置函数(时间,数学,加密),存储过程,触发器,视图 第三层:存储引擎.负 ...
- c# linq查询语句详细使用介绍
本文介绍Linq的使用方法 linq介绍 LINQ只不过是实现IEnumerable和IQueryable接口的类的扩展方法的集合. LINQ可以查询IEnumerable集合或者IQueryable ...
- jackson 进行json与java对象转换 之二
主要用于测试学习用jackson包实现json.对象.Map之间的转换. 1.准备测试用的Java类 (1)Link类 package test; /** * Description: 联系方式,被u ...
- ABP缓存
简介 缓存是做什么的? 简单的可以认为是一个键值对的数据存于内存中,高速读取.作用为了减少和数据库的交互 Abp中缓存的使用 public class InvoiceAppService : Appl ...
- oracle 在xml中批量插入,批量修改及多组条件查询
最近公司用ibatis开发项目,本来可以用存储过程处理批量插入,批量修改及多组条件查询:但由于使用模块相对较小,暂时就在xml中配置,以前没有在xml做过类似处理,有必要记录一下:好了,代码如下: & ...
- Java 对密码MD5
MD5,即"Message-Digest Algorithm 5(信息-摘要算法)": MD5将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算 ...
- Android CTS(frome google)
Compatibility Test Suite How does the CTS work? The Compatibility Test Suite (CTS) is a free, commer ...
- springmvc 注解式开发 接收请求参数
1.校正请求参数名: 2.以对象形式整体接收 3.路径变量: