ORACLE数据库
数据库体系结构
数据库是磁盘上数据的集合,数据存储在服务器上一个或多个数据文件中。
实例存储于服务器内存中,由区块和大量后台进程组成。
逻辑存储结构
数据库中的数据文件分组到一个或者多个表空间,表空间细分为段,段划分为盘区,盘区再细分为块。
表空间
表空间由一个或多个数据文件组成,创建数据库时,至少会创建SYSTEM表空间和SYSAUX表空间。
表空间一般可以分为永久表空间、临时表空间、撤回表空间。
永久表空间:超出会话或者事务边界后需要由用户或应用程序保留的段都应该存储在永久表空间中。
撤回表空间:保证事务一致性。
临时表空间:会话期间完成一些操作。
Oracle 11g允许创建特殊类型的表空间,称为“大文件表空间”,其容量最大为128TB,可以将表空间作为一个单位进行管理。
段
段是一组盘区,被视为一个单位的数据库对象,比如表、索引,所以段一般是数据库终端用户将处理的最小存储单位,数据库中有四种类型的段:数据段、索引段、临时段、回滚段。
数据段由一到多个盘区组成,用于存储数据表。
索引段用于存储索引。
临时段用于SQL语句执行过程中,辅助完成某些操作。比如无法完成排序操作时,oracle会分配临时段。临时段只存在于SQL语句执行的持续期间。
回滚段用于事务回滚时,保存数据库DML操作之前的值,从而保证数据一致性视图。回滚段只存在于SYSTEM表空间。
盘区
由一个或多个数据库块组成,当扩大数据库对象时,为该对象增加的空间将分配为一个盘区。
块
数据库块是数据库中最小的存储单位。
物理存储结构
数据库使用磁盘上大量的物理存储结构来保存并管理用户事务中的数据,物理存储结构主要指的是文件等。
数据文件
一个数据库至少有一个数据文件,一个数据文件只属于一个表空间,一个表空间可以有多个数据文件。数据库的所有数据最终都驻留在数据文件中,数据的读写会先缓存在内存中,然后再写入到数据文件,但是在事务完成之前,事务的该表会写入到重做日志文件。
控制文件
每个数据库至少有一个控制文件,用于维护数据库的元数据(有关数据库自身物理结构的数据)。控制文件包含创建数据库时的数据库名称、数据文件名称、重做日志文件名称和位置。
重做日志文件
无论何时在表、索引或其他oracle对象中添加、删除或修改数据时,都会将一个条目写入到重做日志文件。每个oracle数据库至少有两个重做日志文件,以循环的方式重复使用重做日志文件。
如果发生故障,在内存缓冲区数据没写入到数据文件时,可以将重做日志文件中的条目应用到数据文件,以恢复数据库。
逻辑数据库结构
表
表是数据库的基本存储单位。
约束
定义在表中一列或者多列上的规则,用于帮助实施业务规则。主要有6种规则:主键、唯一性、空值规则、引用完整性值、复核内联完整性和基于触发器的完整性。
主键完整性约束:一个表中最多只存在一个主键,组成主键的列不允许有NULL。
唯一性约束:确保一列或者一组列在表中是唯一的,可以有NULL,NULL不等于任何值。
空值约束:NOT NULL空值数据不为空,可以体现业务含义,比如业务日期一定有值。
引用完整性约束:依赖于另外一张表来限制哪些值可以输入到约束的列。
复核内联完整性:通过使用CHECK约束,可以实现某些业务规则。一列上可以有多个CHECK条件。
基于触发器的完整性:使用触发器实现约束。
索引
使用索引能够更快的访问到表的某些行。可以在一列或者多列上创建索引,索引条目存储在B-树结构中。有两个作用:1、提高搜索速度 2、在索引列上实施唯一约束或者主键约束。
唯一索引:最常见的B-树索引形式,以确保索引列不存在重复的值,提高搜索速度。可以包含NULL。
非唯一索引:用于提高搜索速度。
反向键索引:将索引列的所有字节反向,然后存储。
基于函数的索引:将声明为表达式的列存储。
位图索引:与B-树索引存在较大差别,只存储索引列每个可能值的一个位串。
视图
视图存储查询的定义,隐藏底层的查询细节。
序列
序列用于分配有序数,并保证唯一性。
数据库设计
保证高效的数据管理,尽量让数据库做少的工作以及简单的工作。
尽可能少的工作
尽量减少对数据库的访问,包括逻辑读,考虑缓存、字典等方式实现数据查询。
尽量减少数据库转换工作,按用户查询的方式存储数据(在数据库设计时设计好存储字段)。
避免重复连接到数据库,采用数据库连接池。
建立正确的索引。
尽可能简单的工作
消除没必要的排序,排序可能用到临时段,带来开销。
消除查询撤销段的请求,不要使用到撤销段。
DML语句在尽量原子级别上执行。
数据库安全
Oracle提供的工具和机制有三种:验证、授权、审计。验证确认用户身份,授权为用户提供对数据库各种对象的访问,审计是对数据库大量不同级别的监控。
数据库集群
实时应用集群(RAC)数据库是高可用和可扩展的,集群中一个节点失效不会影响客户会话或集群自身的可用性。
RAC每个节点至少有三个IP地址,一个地址用于公网网络,一个地址用于专用网络连接,还有一个虚拟IP用来支持节点发送故障时执行更快的故障切换。
数据库备份
Oracle提供三种标准的备份方法:导出、脱机备份、联机备份,导出是逻辑备份,其他两种是物理备份。健壮的备份策略应包括物理备份和逻辑备份。
逻辑备份
逻辑备份包括读取一组数据库记录并将它们写入到一个文件中。
物理备份
物理备份要复制构成数据库的文件,脱机备份和联机备份也分别称为“冷备份”和“热备份”。
当关闭数据库时,会发生一致的脱机备份,脱机备份应包括以下文件:
所有的数据文件
所有的控制文件
所有归档的重做日志文件
init.ora文件或者服务器参数文件
对任何运行在ARCHIVELOG模式下的数据库都可以使用联机备份,在这种模式下,将归档联机重做日志,从而创建一个数据库中所有事务的日志记录。
可以在数据库打开状态时对齐执行文件系统备份,联机备份需要将每个表空间设置为备份状态,备份其数据文件,然后将表空间恢复到正常状态。
可以从联机备份中完全恢复数据库,并且可以通过归档的重做日志将数据库向前滚动到发生故障之前的任何时间点。
数据库打开时,可以备份以下文件:
所有的数据文件
所有归档的重做日志文件
一个控制文件
服务器参数文件




