Oracle体系结构

原创 2013年12月05日 21:36:54

从存储结构的角度来说,Oracle数据库可以分为物理结构和逻辑结构;

 

Oracle数据库的物理存储结构

 

(1)Oracle数据库主要的物理存储结构包括构成数据库的各种物理文件,包括数据文件控制文件重做日志文件归档重做日志文件参数文件警告跟踪日志文件备份文件等;

(2)启动一个实例时,Oracle从参数文件中读取控制文件的名字和位置。登录数据库时,Oracle打开控制文件,控制文件指向Oracle的数据文件和日志文件。最终打开数据库时,Oracle从控制文件中读取数据文件和日志文件的列表并打开其中的每一个文件;

 

数据文件:

(1)每个Oracle都有一个或多个数据文件(data file),数据文件包含了所有的数据库数据,如:表数据,索引数据,数据字典定义,回滚事务所需的信息,存储过程函数和数据包的代码等等。一般来说,这些不同类型的数据不混到一起存储,而是同一类型的数据集中到一个或多个文件中存储;

(2)数据文件一般有以下特定:

a) 一个数据文件只能与一个数据库相关联;

b) 一个或多个数据文件构成了一个数据库存储的逻辑单元——表空间(tablespace);

(3)为了查询构成一个数据库的所有数据文件的列表,可查询名为V$DATAFILE的动态性能视图:

select status,bytes,name from V$DATAFILE;

 

控制文件:

(1)控制文件(control file)是一个很小的二进制文件,它维护着数据库的全局物理结构,用以支持数据库成功的启动或运行。创建数据库时,同时就提供了与之对应的控制文件。在数据库使用过程中,Oracle不断的更新控制文件,所以只要数据库是打开的,控制文件就必须处于可写状态,如果由于某些原因控制文件不能被访问,那么数据库也就不能正常工作了;

(2)每一个控制文件只能与一个Oracle数据库相关联;控制文件包含了数据库实例在启动和正常操作时,访问数据库所需的关于数据库的信息,控制文件中的内容只有Oracle可以修改,数据库管理员和用户都不能对其进行编辑;

(3)控制文件包含了如下信息:数据库名称,数据库创建的时间,相关的数据文件、重做日志文件的名称和位置,表空间信息,日志历史,归档日志信息,备份数据文件和重做日志信息,检查点信息等等;

(4)每当数据文件或重演日志文件被添加内容、重新命名或者从数据库删除时,控制文件都要进行更新以反映物理结构的变化。记录下这些变化后,Oracle就可以在数据库启动的时候,能够确定并打开数据文件和重做日志文件;

(5)如果数据库的物理结构发生了改变(使用了alter database语句),用户应该立刻备份控制文件;

(6)可以通过两种方法来找到数据库的控制文件的名字和位置;

   a) 一种在参数文件中找到control_files记录,里面三个文件内容完全相同,如果其中一个丢失,Oracle可以使用剩下两个中的一个继续访问;

   b) 另一种是查询V$CONTROLFILE动态视图:

select name from v$controlfile;

(7)数据库控制文件可以通过init.ora文件的control_files参数规定,如果需要给数据库添加一个新的控制文件,可关闭实例,把已存在的一个控制文件复制到一个新的地址,并把地址添加到control_files参数设置值上,并重新启动这个实例;

 

重做日志文件:

(1)每一个Oracle数据库都是有一个由两个或多个重做日志文件(redo log file)构成的文件组,这组重做日志文件合称为数据库的重做日志。

(2)重做日志的主要功能是记录下所有数据的改变。如果出现了失败故障,用户修改的数据没有永久的写入到数据文件里,那么就可以利用重做日志找到数据的更改;

 

归档重做日志文件:

(1)归档重做日志文件(archive log file)就是对写满的重做日志文件复制并保存生成的文件,可以通过设置数据库在归档模式下来自动的保存日志文件;

 

参数文件:

(1)参数文件(parameter file)包含了一组关于数据库和实例的配置参数,Oracle推荐用户使用一个服务器参数文件(spfile)作为维护初始化参数的动态手段;

 

警告、跟踪日志文件:

(1)每一个服务器和后台进程(trace file)都可以写入一个相关的跟踪文件。当一个进程发现了一个内部错误的时候,它把关于错误的信息转存到它的跟踪文件里;

(2)警告文件(alert file)是一种特殊的跟踪文件,一个数据库的警告文件就是包括按时间排序的消息和错误的记录;

 

备份文件:

(1)典型情况下,在介质失败或用户失误导致原有文件损坏或删除的情况下,就需要通过备份文件(backup file)对其进行恢复;

 

Oracle数据库的逻辑存储结构:

 

Oracle的基本逻辑存储结构包括表空间各种段(数据段、索引段、临时段以及回滚段等)、区间数据块等;

 

对表空间、段、区、块形象的比喻:

想象一个装满东西的柜子,数据库就是柜子,柜中的抽屉是表空间,抽屉中的文件夹是数据文件,文件夹中的纸是表,写在纸上的信息就是数据;

 

表空间:

(1)表空间是数据库的逻辑划分,每个数据库至少有一个表空间,USER表空间供一般用户使用,RBS表空间供回滚段使用,一个表空间只能属于一个数据库;

(2)每个表空间由同一磁盘上的一个或多个数据文件组成;

(3)典型的数据库表空间;

a) 系统表空间(system tablespace)是每个Oracle数据库都必须具备的部分,在系统表空间中存放的是如表空间名称、表空间所含数据文件等管理数据库自身所需的信息;

b) 临时表空间(temp tablespace)是Oracle用于存储其所有临时表的所在,临时表空间类似于数据库白板或草稿纸;

c) 工具表空间(tools tablespace)用于保存数据库工具软件所需的数据库对象;

d) 用户表空间(users tablespace)用于存放用户的私有信息;

e) 数据库索引表空间:类似与DATA_01,DATA_02,DATA_03等的用于存放数据的不同的空间,或INDEX_01,INDEX_02等。许多用户根据其应用处理的数据对象来命名表空间,如一个存放有关书籍的表空间可命名为BOOKS;

f) 回滚表空间:所有Oracle数据库都需要在一个地方保存恢复(undo)信息,这个用于保存回滚段的表空间称作rollback或简称rbs;

 

段:

(1)段(segment):正如Oracle为数据库表空间预先分配数据文件作为物理存储区那样,Oracle也为数据库对象(如表、索引等)预先分配数据块的段作为其物理存储区;

(2)段又可分为数据段、索引段、LOB段、回滚段、临时段等;

(3)如果表中有诸如CLOB、BOLB或NCLOB的巨型对象(large object ,LOB)数据类型的列,该表可以在LOB段中存储相应的LOB值;

 

块:

数据块(data block)是数据库中最小的、最基本的存储单元,它们是数据库能分配给对象的最小存储单元;

 

 

 

Oracle实例

(1)Oracle实例,也被称为数据库服务(database service)和服务器(server),包括Oracle系统运行时的内存结构和后台进程;

(2)为了不使两个数据库相混淆,每个实例都要用称为SID (system identifier,系统标识符)的符号来标识。决定实例的大小及组成的参数存储在初始化参数文件(init.ora)中,启动实例时需要读取这个文件,并且在运行时可以由数据库管理员修改;对该文件的任何修改都只有在数据库下一次启动时才起作用;

 

Oracle数据库的内存结构

(1)当激活Oracle数据库时,系统会先在内存内规划一个固定区域,用来存储每位使用者所需存取的数据以及Oracle运作时必备的系统信息,这个区域就称为系统全局区(system global area ,SGA);

(2)SGA由包含几部分:数据块缓存区(Data Block Buffer Cache)、字典缓存区(Dictionary Cache)、重做日志缓冲区(Redo log Buffer)和共享池(Shared SQL Pool);

 

Oracle系统的后台进程

(1)数据库写入进程(DBWR):将修改过的数据块写回到数据文件;

(2)日志写入进程(LGWR):将重做日志记录写回到联机日志文件;

(3)检查点进程(CPKT):定期检查数据库,检查点是指一个事件或指定的时间;

(4)系统监控进程(SMON):如果因为停电或其他因素导致Oracle数据库不正常关闭,下一次激活数据库时将由SMON进行必要的数据库修复动作;

(5)进程监控进程(PMON):当某个处理程序异常终止时,PMON清除数据块缓存区内不再使用的空间,并释放该程序之前使用的系统资源,PMON也会定期检查各服务器处理程序以及分配器的状态;

(6)锁进程(LCKn):在Oracle并行服务器环境中,为了避免进程间在数据存取时发生冲突,在一个数据库实例访问一个数据库对象时,LCKn进程自动封锁它所访问的数据库对象,访问结束之后再解锁;

(7)恢复进程(RECO):在分布式数据库中恢复失败的事务,用于自动解决在分布式事务中的故障;

(8)归档进程(ARCH):LGWR后台进程以循环方式向重做日志文件写入,可以将归档文件写入磁盘设备或直接写入磁带设备,这些归档功能由ARCH来完成;

(9)调度进程(Dnnn):允许用户共享有限的服务器进程,该进程接收用户进程的要求,并将它们放入请求队列中,然后为请求队列中的用户进程分配一个共享的服务器进程。一个实例可以建立多个调度进程;

(10)各个进程共享系统全局区;

 

 

 

相关文章推荐

Oracle DB 体系结构

内存结构: 系统全局区(SGA):数据库缓冲区高速缓存、重做缓冲区以及各种池 程序全局区(PGA) 进程结构: 用户进程和服务器进程 后台进程:SMON、PMON、DBWn、CKPT、LGWR、ARC...

Oracle RAC - 集群体系结构

一、 Oracle集群体系结构 Oracle RAC,全称是Oracle Real Application Cluster,即真正的应用集群,是oracle提供的一个并行集群系统,整个集群系统由Or...

Oracle10g数据库体系结构的关键特性(sql命令查看)

基本环境 数据库名称:orcl 数据库实例名:orcl Oracle_BASE目录:c:\oracle\product\10.2.0 SYS用户口令为:sysadmin 在开始之前需要进入s...

oracle体系结构详解

Oracle体系结构就是围绕这张图展开的,要想深入了解oracle,就必须把这张图搞明白。 如图: 一、基本组成: Oracle server: 一般情况下是一个instance和一个...

Oracle体系结构及备份(七)——sga-data_buffer

一 什么是Data Buffer           Data Buffer,数据高速缓冲区,暂存从数据文件中获得的数据块的数据映像,同样遵循LRU算法管理内存。当再次需要操作这些数据可以从内存中...
  • Wentasy
  • Wentasy
  • 2013年06月08日 09:12
  • 3302

Oracle体系结构及备份(十六)——bg-ckpt

CKPT进程:1.CKPT,非常非常重要的后台进程,同样不能kill。触发顺序:CKPT------>DBWR------->LGWR;2.作用:发出信号给DBWn、更新数据文件头、更新控制文件;3....
  • Wentasy
  • Wentasy
  • 2013年07月14日 09:05
  • 3276

Oracle 体系结构概要

Oracle数据库系统是一个复杂的软件系统。所谓Oracle的体系架构,是指Oracle数据库管理系统的的组成部分和这些组成部分之间的相互关系,包括内存结构、后台进程、物理与逻辑结构等。   下图为...
  • gybyylx
  • gybyylx
  • 2011年11月12日 01:47
  • 1087

oracle体系结构(五)

When Extents Are Deallocated The Oracle Database provides a Segment Advisor that helps you determin...

ORACLE 10g 第一课 绪论 安装及体系结构概述

Oracle 系列笔记
  • bloodya
  • bloodya
  • 2017年07月05日 11:09
  • 187

ORACLE数据库学习之体系结构

Oracle 体系结构 ORACLE数据库体系结构决定了oracle如何使用网络、磁盘和内存。包括实例(instance),文件(file)和进程(process不包括后台进程)三部分。 实例:每...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Oracle体系结构
举报原因:
原因补充:

(最多只允许输入30个字)