天天看点

oracle 体系结构

oracle 体系结构

oracle的体系结构如上图

oracle server 由 instance 和 database 两大部分组成;

instance 里面包括两大部分:SGA 和 PGA;

SGA里面主要包含:shared pool,DB buffer cache,redo log buffers;

PGA里面主要包含:后台进程:PMON,SMON,DBWR,LGWR,CKPT ,和其他other;还有两个普通:user process,server process;

database 里面则是包含的一堆文件:主要的有 data files ,control files,redo files,附属文件有:parameter files,password files,archived log files;

其实我先把框架写出来,这样子方便记忆。下面我将一个个介绍这里面的功能。

oracle server

一共有三种安装方式:

1基于主机的:即用户可直接在安装了数据库的计算机上登录数据库;

2客户端~服务器(client~server):数据库和客户端分别装在不同的计算机上,用户通过网络从客户端访问数据库;

3客户端~应用服务器~服务器(client~application server~server):用户首先从自己的个人计算机登录应用服务器,再通过应用服务器访问真正的数据库。

instance(实例):oracle实例是一种访问数据库的机制,它由内存结构(SGA)和后台进程(PGA)组成。

SGA:shared pool,DB buffer cache,redo log buffer;

shared pool(共享池):是由库高速缓存(library cache),数据字典高速缓存(data dictionary cache)两部分组成。服务器进程将SQL或者PL/SQL语句的正文和编译后的代码(parsed code)以及执行计划都放在共享池的库高速缓存中。在进行编译时,服务器进程首先在共享池中搜索是否有相同的SQL或者PL/SQL语句(正文),如果有就不就不进行任何后续的编译处理,而是直接使用已存在的编译后的代码和执行计划。

*库高速缓存包含了共享SQL和PL/SQL两部分,它们分别存放在SQL和PL/SQL语句以及相关信息。

DB buffer cache(数据库高速缓冲区):

     通过缓存数据块,从而减少I/O。

 通过构造CR(Consistent Read)块,从而提供读一致×××。

 通过提供各种lock、latch机制,从而提供多个进程并发访问同一个数据块的功能。

redo log buffer(重做日志文件):引入重做日志文件的主要目的就是数据的恢复。oracle在使用任何DDL或DML操改变数据之前都将恢复所需的信息,即在写数据库高速缓冲区之前,先写进重做日志缓冲区。

除了以上所介绍的结构外,SGA还可能含有large pool,java pool这两个可选的内存结构。

引进large pool的主要目的是为了提高效率,而引进java pool的目的是能够编译java语言的命令。

PGA:主要有后台进程:PMON,SMON,CKPT,DBWR,LGWR等(还有一个ARCn),一般进程:user process,server process;当oracle创建一个服务器进程的同时要为该服务器进程分配一个内存区,该内存区称为程序全局区(PGA),PGA是一个是私有的内存区,不能共享,且只属于一个进程。它随着进程的创建而被分配,随着进程的终止而被收回。

LGWR(重做日志写进程):负责将重做的日志缓冲区的记录顺序的写到重做日志文件中。

DBWR(数据库写进程):负责将数据库高速缓冲区中的脏缓冲区中的数据写到数据文件上。为了提高效率,一般是积累到足够多的数据一次写一大批内存数据块到数据文件上。

SMON(系统监督进程):如果由于某种原因oracle系统崩溃了(如断电),SGA中还没来得及保存的数据可以通过SMON自动进行回滚执行oracle实例的恢复工作。

PMON(进程监督进程):当某个进程崩溃时(如没有正常退出oracle的情况下重新启动了所用的PC),进程监督进程将负责它的清理工作。

CKPT(校验点进程):当校验点事件发生时,oracle要将校验点号码(oracle系统自动生成的)写入所有相关的数据文件的文件头中。还要将校验点号码,重做日志序列号,归档日志名称和SCN号都写入控制文件中。

最后再介绍一个

ARCn(归档日志进程):有时亦写成ARCH,以上的五个进程都是必须的,即它们任何一个停止后实例都将自动关闭。归档日志文件可以看作是重做日志文件的备份,但归档日志文件是脱机的,即除了在进行(复制)时,oracle数据库在正常运行时是不会关注归档日志文件的。它执行时一般是自动执行的,利用这些归档日志文件oracle系统就能保证在遇到数据文件丢失或损坏后可以完全恢复数据库中的数据。

user process 和 server process就不多做介绍了,详细具体去看数据库概论这本书。

database(数据库):主要:control files,data files,redo log files。其余:parameter files,password files。

1 control files(控制文件):包含了维护和校验数据库一致性所需的信息。

2 data files (数据文件):包含了数据库中真正的数据。

3 redo log files (重做日志文件):包含了当系统崩溃后进行恢复所需急需记录的变化信息。

4 parameter files (初始化参数文件):定义了实例的特性,如系统全局区中一些内存结构的大小,DBWR的个数。

5 archived redo log files (归档重做日志文件):是重做日志文件的脱机备份。在系统崩溃后恢复可能需要这些文件。

本文出自何明老师的oracle DBA 培训教程——从实践中学习oracle数据库管理与维护和自己的一些整理。转载请注明!!!!

下一篇: 依赖注入