ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 所教授Oracle课程总结(1)——Oracle体系结构

所教授Oracle课程总结(1)——Oracle体系结构

原创 Linux操作系统 作者:violetluna 时间:2009-04-03 23:50:06 0 删除 编辑

Oracle服务器由Oracle数据库和Oracle实例组成。Oracle数据库是一个数据的集合,该集合被视为一个逻辑单元。在一个装有Oracle数据库的服务器上,必需运行一系列进程来管理该数据库。这些进程使用大块的内存,这些内存块分别具有与特定任务相关的用途。

后台进程和内存结构的集合成为Oracle的实例。如果要访问数据库中的数据,就需要启动实例。每一个运行的Oracle数据库都与一个Oracle实例相联系。

Oracle体系结构包含一系列组件,其中Oracle实例主要由后台进程和内存结构组成,Oracle数据库主要由相关的文件组成。

这里简单的梳理一下Oracle实例结构

我们在使用Oracle的时候,首先会启动Oracle服务器上的Oracle实例,这个时候会在服务器上要求一大块内存区域,我们叫做SGA,SGA是内存结构的一个部分,主要由共享池,数据缓冲区,日志缓冲区组成。当用户连接到Oracle数据库服务器的时候,Oracle数据库服务器会给用户进程分配对应的服务器进程,这里的服务器进程我们叫做PGA,可以看到对于一个Oracle实例,会有一个SGA,而对于每一个访问用户,都会分配有对应的PGA

在网上找到一个Oracle的体系结构图

下面针对这个图做一个较为详细的说明:

1. 实例

Oracle实例是后台进程和内存结构的集合。必须启动实例才能访问数据库中的数据。Oracle实例启动时,将分配一个系统全局区(SGA)并启动一系列Oracle后台进程。每一个后台进程在数据库中执行不同的任务。一个实例只能打开并使用一个数据库。

2.数据库

Oracle数据库由操作系统文件组成,这些文件也称为数据库文件,为数据库信息提供实际物理存储区。数据库文件用于确保数据的一致性,并在实例失败时恢复数据。

数据库主要用于存储和检索相关信息。Oracle数据库包含逻辑结构和物理结构。数据库的物理结构包含数据库中的一组操作系统文件。数据库的逻辑结构是指数据库创建之后形成的逻辑概念之间的关系。

3.会话

会话是用户与Oracle服务器的单个连接。当用户与服务器建立连接时创建会话,而当用户与服务器断开连接时关闭会话。党一个数据库用户同时用多个不同的应用程序或从多个终端连接服务器时,则为该用户创建多个并行会话。

4.内存

Oracle的内存结构包含以下两个内存区。

系统全局区(SGA):实例启动时分配该内存区,是Oracle实例的一个基本组件。

程序全局区(PGA):服务器进程启动时分配该内存区。

接下来先介绍系统全局区(SGA)。

Oracle实例的SGA(System Global Area,SGA)又称为共享全局区,它用来存储数据库信息,并由多个数据库进程共享。党数据库实例启动时,SGA的内存被自动分配。SGA是数据库中占用服务器内存最大的一个区域,同时也是影响数据库性能的一个重要指标。

SGA按其作用不同,可分为共享池,数据缓冲区,日志缓冲区,其内存结构具体叙述如下:

  • 共享池

         共享池是对SQL、PL/SQL程序进行语法分析、编译、执行的内存区域。共享池由库缓存和数据字典缓存组成。其中,库缓存含有最近执行的SQL、PL/SQL语句的分析码和执行计划;数据字典缓存含有从数据字典中得到的表、索引、列定义和权限等信息。如果共享池太小,则于运行SQL、PL/SQL程序所用的时间就会较长,影响数据库的性能。

         共享池环境包含两种结构:固定结构和可变结构。固定结构相对保持恒定大小,一般不会改变,而可变结构则根据用户和程序的需要增大或缩小。

  • 数据缓冲区

         数据缓冲区用户存储从磁盘数据文件中读入的数据,所有用户共享。数据被修改时,首先要从数据文件中取出,存储于数据缓冲区中。修改的数据、插入的数据被存储于数据缓冲区,修改完成和其他条件满足时,数据被写入数据文件。

         Oracle服务器进程在处理一个查询时,首先查找内存中是否存在所需的数据块。如果在数据缓冲区中没有找到需要的块,服务器进程则从数据文件中读取此块,并保存在缓冲区中。党后续的请求需要读取这些块时,可以在内存中找到,因此这些请求不需要从磁盘读取,提高了读取速度。数据缓冲区的大小对数据库的读取速度有直接的影响。

  • 日志缓冲区

         日志记录数据库的所有修改信息,主要用于恢复数据。日志信息首先产生于日志缓冲区。当日志缓冲区的日志数据达到一定数量时,由日志写入进程LGWR将日志数据写入日志文件中。对数据文件块所做的更改都记录为重做项。这些重做项包含重建或重做数据更改必要的信息。数据更改可能来自INSERT、UPDATE、DELETE、CREATE、ALTER或DROP等操作。相对于数据缓冲区,日志缓冲区对数据库的性能影响较小。

接下来介绍程序全局区(PGA)。

程序全局区(Program Global Area,PGA)包含单个服务器进程或单个后台进程所需的数据和控制信息。PGA是在用户连接到数据库并创建一个会话时自动分配的,该区内保留每个与Oracle数据库连接的用户进程所需的内存。PGA为非共享区,只能当个进程使用,当一个用户会话结束时,PGA释放。

5.进程

Oracle实例进程结构中有集中不同类型的进程。接下来将分别对这些进程加以讨论。

用户进程:此进程在数据库用户请求连接Oracle服务器时启动。

服务器进程:此进程在用户建立会话并连接Oracle实例时启动。

后台进程:次进程在Oracle实例启动时启动。

用户进程是一个需要与Oracle服务器进行交互的程序。当数据库用户运行一个应用程序准备向数据库服务器发送请求时,即创建了用户进程。如用户启动数据库工具SQL*Plus时,系统自动建立一个用户进程。

服务器进程用于处理连接到该实例的用户进程的请求。用户建立与数据库的连接时,即产生服务器进程。服务器进程和用户进程通信并为锁连接的用户请求服务。服务器进程直接与Oracle数据库交互,实现调用和返回结果。服务器进程可以仅处理一个用户进程的请求,也可以处理多个用户进程的请求。

在Oracle数据库中,为了使系统性能最好和协调多个用户,实例系统中使用一些附加进程,成为后台进程。这些后台进程存在于操作系统中,在实例启动时自动启动。一下是5个重要且必须的后台进程。

进程监控(PMON)

PMON进程在用户进程出现故障时执行进程恢复,包括下列任务。

  • 释放所有当前挂起的锁。
  • 回滚用户当前事务处理。
  • 释放用户当前使用的资源。
  • 重启已经死锁的调度进程和服务器进程。

系统监控(SMON)

SMON进程执行下列任务。

  • 在实例启动时实例恢复。

        实例恢复包括3个步骤:

        a.  前滚以恢复未写入数据文件但已计入联机日志文件的数据。

        b.  打开数据库,以便用户能登录,访问数据。

        c.  回滚未提交的事务处理。

  • 整理数据文件的自由控件。
  • 释放不再使用的临时段。

数据写入进程(DBWR)

  • 管理数据缓冲区,以便用户进程能找到空闲的缓冲区。
  • 将所有修改后的喊出去数据写入数据文件。
  • 使用LRU(最近最少使用)算法将最近使用过的块保留在内存中。
  • 通过延迟写来优化磁盘I/O读写。

日志写入进程(LGWR)

此后台进程负责将日志缓冲区中的日志数据写入日志文件组。数据库在运行时,如果对数据进行修改,则产生日志信息,日志信息首先产生于日志缓冲区中。此缓冲区按照“先进先出”的原则进行操作,当日志信息达到一定数量时,由LGWR进程将日志数据写入日志文件。系统通常有多个日志文件,日志写入进程以循环的方式将数据写入文件。

检查点(CKPT)

检查点(CHECKPOINT,CKPT)保证所有修过的数据库缓冲区都被写入数据库文件。在给定的时间内,检查点完成后,CKPT进程更新数据文件头和控制文件,保持检查点信息,以保证数据库的同步。这样做主要是为了在数据恢复时只需要提供从上一个检查点以来的修过,确定开始恢复数据的位置,即称之为“检查点”。

在启动Oracle服务器时,可能也随之启动其他一些可选后台进程,如ARCH。

ARCH(归档进程)后台进程在日志存满时将日志信息写到磁盘或磁带,用于在磁盘故障时的数据库恢复。在一个日志文件写满以后,Oracle服务器开始将数据写入下一个日志文件,此过程称为日志切换。

Oracle数据库有两种运行方式,规定(ARCHIVELOG)方式及非归档(NO ARCHIVELOG)方式。在非归档方式下,日志切换时直接覆盖以前的文件,不产生归档日志,这是数据库默认的运行方式。数据库在归档方式下unx,在日志切换之前,ARCH进程都对已写满的日志文件进行归档。只有党数据库运行在归档方式时,ARCH进程才存在。ARCH进程自动将日志存档,以便保存数据库做的所有更改。这样,即使在磁盘损坏的情况下,数据库管理员也能将数据库恢复至故障发生时的状态。

oracle.gif

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8061238/viewspace-584618/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-03-29

  • 博文量
    7
  • 访问量
    8142