zoukankan      html  css  js  c++  java
  • Oracle数据库系统结构二(实例结构)

    一.概述

    Oracle实例的构成:

     Oracle数据库实例(Oracle Instance)主要包括Oracle进程结构和Oracle内存结构两种。

    二.ORACLE的内存结构

    内存结构是Oracle数据库系统结构中最为重要的一部分,内存也是影响数据库性能的第一因素。
    按照对内存的使用方法的不同,Oracle数据库的内存可以分为:
    系统全局区SGA(System Global Area)
    程序全局区PGA(Program Global Area)

    1.系统全局区SGA(System Global Area)

    系统全局区SGA是一组为系统分配的共享内存结构,可以包含一个数据库实例的数据或控制信息。SGA可为多用户所共享。SGA 是在数据库实例启动时被自动分配的,在实例关闭时,SGA被回收
    SGA主要包含:
    数据缓冲区
    日志缓冲区
    共享池

     (1)数据缓冲区     

    数据高速缓冲区存储的是最近从数据文件中检索出来的数据,供所有用户共享。当用户操作数据库中的数据时,先由服务器进程将数据从磁盘的数据文件读取到高速缓冲区,然后在缓冲区处理,结果被存储到数据缓冲区中,最后由数据写入进程DBWR写到硬盘的数据文件中永久保留。

    (2)日志缓冲区 

    用于存储数据库的修改信息,当日志缓冲区中的信息到达一定数量时,由LGWR进程将其写入重做日志文件。

     (3)共享池 

    用于缓存SQL语句、数据字典、资源锁等相关数据。

     (4)大池

    大池是数据库管理员可配置的可选内存空间。在数据库备份/恢复、执行大量排序语句、并行执行数据库操作时需要大的缓存空间时,可设置使用它。如没有在SGA区建立大池,操作所需的缓存空间将在共享池或PGA中分配。

    (5) Java池

    可选内存配置项,为Java语言提供语法分析区

    (6)流池

    可选内存配置项,为流数据提供支持。

    2.程序全局区PGA

    PGA是ORACLE为用户分配的内存区域,保存当前用户私有的数据和控制信息。是用户在与数据库会话时,ORACLE自动分配的,会话结束后将自动释放。PGA是非共享区,每个服务进程都有自己的PGA区。主要由排序区(Sort Area)、会话信息(Session Information)、游标状态(Cursor State)以及堆栈空间(Stack Space)等组成。

    (1)排序区

    排序区用于存放SQL排序时所产生的临时数据,它是影响PGA尺寸的主要因素。ORACLE中有两个排序区,一个是内存排序区,另一个是磁盘中的临时段,在内存够用时,优先使用内存排序区。

    (2)会话信息

    用户会话所具有的权限、角色及会话的性能统计信息等都存放在PGA中。

    (3)游标状态

    用于存放执行游标操作时所产生的数据。

    (4)堆栈空间

    用于存放会话中的变量信息,如在语句中使用的变量。

    三.ORACLE的进程结构

    进程 是操作系统中一个独立的可以调动的活动,用于完成指定的任务。

    1.进程类型:

    1) 用户进程(User Process) 

    当用户连接数据库执行应用程序时,创建1个用户进程。

    2) 服务器进程(Server Proces)

    由Oracle自身创建,用于处理连接到数据库实例的用户进程所提出的请求。主要完成任务:
    解析并执行用户提交的SQL语句和PL/SQL程序;
    在SGA区搜索用户要访问的数据,如不存在,则由磁盘数据文件读入缓存;
    将用户对数据库的更改信息写入日志缓冲区;
    将查询或执行后的结果返回给用户进程。

    3) 后台进程(Background Process)   

    服务器进程在执行用户进程请求时,会调用后台进程来实现对数据库的操作。

    2.Oracle的后台进程类型

    (1)DBWR进程-数据写入进程

    功能
    DBWR进程将数据缓冲区中的脏数据块写入磁盘,使用户进程得到更多的空闲缓冲区。
    算法
    采用LRU(最近最少使用算法),淘汰最近最少使用的数据块

    (2)LGWR进程-日志写入进程

    功能
    LGWR进程负责将重做日志缓冲区中的日志记录写入磁盘日志文件组.
    LGWR执行日志切换时,会生成一个检查点。

    (3)CKPT进程-检查点进程

    检查点
         检查点是一个事件,当其发生时,DBWR进程把数据缓存中的脏数据快写入数据文件,同时系统对控制文件和数据文件的同步序号进行更新,以记录下当前的数据库结构和状态,保证数据的同步。
    功能
    CKPT进程负责执行检查点并更新控制文件,启用DBWR进程将脏数据缓存块中的数据写入数据文件.

     (4) ARCH进程-归档进程功能

    ARWR进程只在数据库运行在归档模式下时才会启动,即在发生日志切换时,则启动该进程将已写满的日志文件复制到指定的存储设备中,以避免被新日志文件覆盖。一个数据库实例可启动多个归档进程。

    (5)SMON进程-系统监控进程

    功能
    SMON进程负责在实例启动时对数据库进行恢复操作(主要用于非正常关闭数据库); 负责回收临时表空间或临时段中不再使用的存储空间;合并各表空间的空闲空间碎片。
    SMON在实例启动时被执行;实例运行期间会被定期唤醒。

    (6)PMON进程-进程监控进程

    功能
    PMON进程负责在用户进程出现故障时执行恢复;负责清理非正常中断的用户进程的会话,回退未提交的事务,并释放该进程使用的系统资源(占用的锁、SGA、PGA等资源);负责周期性检查调度程序和服务进程的状态,若失败,则尝试重新启动它们,并释放其所占资源.

    (7) Dnnn进程-调度进程

    功能
    在共享服务器模式下调度进程可为任意数量的用户进程提供服务.
    服务器的两种操作模式:
    专用服务器模式

     共享服务器模式

     

  • 相关阅读:
    C++ MFC学习 (二)
    C++ MFC字符转换
    C++ MFC学习 (一)
    Windows.h 文件学习
    Git 学习
    Git 学习
    php压缩文件夹并下载到本地
    接口类型无限级分类
    mysql 共享锁 排它锁
    docker基础命令
  • 原文地址:https://www.cnblogs.com/CX66/p/13966144.html
Copyright © 2011-2022 走看看