千家信息网

Oracle 数据库 体系结构 (二):服务器结构

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,目录前言Oracle 内存结构Oracle 进程结构文章总结前言上一篇文章体现了 Oracle 数据库的一些基本结构和存储结构,这篇文章将会讲到Oracle的服务器结构,实际上就是主要讲实例的结构。需
千家信息网最后更新 2026年10月31日Oracle 数据库 体系结构 (二):服务器结构

目录

  • 前言
  • Oracle 内存结构
  • Oracle 进程结构
  • 文章总结

前言

  • 上一篇文章体现了 Oracle 数据库的一些基本结构和存储结构,这篇文章将会讲到Oracle的服务器结构,实际上就是主要讲实例的结构。需要把这些底层的结构了解,在生产环境或是对Oracle才会有一些了解。
  • Oracle服务器是由Oracle实例+Oracle数据库组成。
  • Oracle实例是有SGA+后台进程组成。 每一个Oracle实例都有自己的SGA和独立的Oracle进程集。

Oracle 内存结构


以上图很好说明了内存的结构,下面将会详细介绍内存结构。


内存结构是Oracle数据库体系中最为重要的一部分,数据库实例启动时,Oracle数据库会分配内存区并启动后台进程。
Oracle内存存储的主要内容有:

  • 程序代码(PL/SQL、Java);
  • 关于已经链接的会话的信息,包括当前所有活动非活动的会话;
  • 程序运行时必须的相关信息,如查询计划;
  • Oracle 进程之间的通信和共享的信息,如:锁。

Oracle内存结构包含:

1·系统全局区 (SGA):Oracle启动实例时分配系统全局区2·程序全局去 (PGA):当服务器启动时分配程序全局区3·用户全局区 (UGA):用户全局区为用户存储会话状态

系统全局区(SGA)

系统全局区 (SGA):数据库信息存储于系统全局区,由多个数据库共享。是占用服务器内存最大的一个区域,是影响数据库最重要的一个指标,和后台进程组成了Oracle实例。

系统全局区 (SGA)的组成:

* 共享池 (含:库高速缓存、数据高速字典缓存);* 数据高速缓存;* 重做日志缓冲区;* Java池;* 大缓冲区。

共享池:是对SQL、PLSQL程序进程语法分析、编译、执行的内存区域。是由两个关键内存结构组成,分别是:
1·库高速缓存:存储最近解析使用的 SQL和PL/SQL语句信息。Oracle 在执行用户进程提交的各种SQL语句前要对进行解析(包括语法解析、对象确认、权限判断、操作优化等)并生产执行计划,占用一定的系统资源。
2·数据字典高速缓存:最近使用对象定义的集合,包括数据文件、表、索引、列、用户、权限、和数据库对象的信息。


数据高速缓存区:可以加快访问速度,把一些经常用到的都放到缓存区,因为数据库的目的除了安全还有就是访问效率。服务器进程将读入的数据保存在数据缓冲区中,当后续请求需要这些数据就在内存中找到,不需要从磁盘读取。所有用户共享。由三个池组成:1·默认池, 2·保持池(存放常用的数据) 3·回收池(存放不常使用的数据存),通过LRU算法管理。
LRU算法管理:它的原理是把常用的数据保留在池中,不常用的数据就退回去。


重做日志缓冲区:录所有的关于数据库的变化,当执行DML,如:updata、delete、insert或create、alter、drop等语句时,Oracle都会为这些操作生产重做记录,作用是:主要用于数据库恢复、改变的数据都要依赖于redo日志条目。


大缓冲区:用于需要大内存操作提供相对独立的内存空间,以便提高性能,大池是可选的内存结构,DBA可以决定是否需要在SGA中创建大池,比如:数据库备份和恢复、大量排序的SQL语句、并行化的数据库操作。


Java池:在安装Java程序时必须设置Java池,编译Java语言写的指令。


SQL> show sga; ----------------(查看 系统全局区 SGA 大小)

Total System Global Area 1593835520 bytesFixed Size          8793256 bytesVariable Size         905970520 bytesDatabase Buffers      671088640 bytesRedo Buffers            7983104 bytes

程序全局区(PGA)

当服务器启动时分配的全局区,就是Oracle服务器启动时需要占用的内存!

  • 它包含单个服务器进程所需的数据和控制信息
  • 是在用户进程连接到数据库并创建一个会话时自动分配的,保持每个与Oracle数据库连接的用户进程所需的信息
  • PGA为非共享区,只能单个进程使用,当一个用户会话结束,PGA释放。

用户全局区(UGA)

  • 用户进程存储会话状态,就是你用哪个用户登陆,会存储一些用户的状态!
  • UGA可以作为PGA于SGA的一部分,具体位子取决于如何连接Oracle:若通过一个共享服务器连接,UGA包含在SGA中;若是通过一个专有服务器连接Oracle,UGA包含在专有服务器PGA中

Oracle 进程结构

Oracle 实例有以下几种进程:

* 用户进程* 服务器进程* 后台进程


用户进程

用户进程是一个需要与Oracle服务器进行交互的程序。当用户运行一个程序准备向数据库服务器发送请求时,即创建了用户进程!

服务器进程

服务器进程是用于处理连接该实例的用户进程的请求。当用户连接到Oracle实例创建会话时,创建的服务器进程!

后台进程

  • 后台进程是Oracle数据库为了保持系统最佳系统性能和协调多个用户请求而设置的。Oracle实例启动时则创建一系列的后台进程!
  • 后台进程使数据库的内存结构和数据库物理结构之间协调工作。
  • 后台进程必须启动的5个进程分别是:DBWR、LGWR、PMON、SMON、CKPT。

PMON 进程监控进程:

* 清理出现故障的进程;* 释放当前所有挂载的锁定;* 释放故障进程使用的资源。

SMON 系统监控进程:

* 在实例失败后,重新打开数据库时自动恢复实例;* 整理数据文件的自由空间,将相邻空间结合起来;* 释放不再使用的临时段。

DBWR 数据写入进程:

* 管理数据缓冲区,将最近使用过的块保留在内存中;* 将修改后的缓冲区数据写入数据文件中。

LGWR 日志写入进程:

* 负责将日志缓冲区的日志数据写入日志文件;* 系统有多个日志文件,该进程以循环的方式将数据写入文件。

CKPT 校验进程:

* 从检查点队列上扫描脏数据块,并将这些脏数据块写入数据文件中;* 检查点队列上的buffer header 是按照数据块第一次被脏的时间先后顺序来排列的;* 越早修改的数据块的buffer header排在越前面;* 同时如果一个数据块被修改了多次的话,在该链表上也只出现一次。

总结

太多的理论,还需要用图来理解记忆!所以总结就用一张图来表示。

数据 进程 数据库 用户 服务器 结构 服务 内存 全局 实例 系统 后台 程序 信息 日志 缓冲区 缓冲 文件 存储 高速 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 什么是科技互联网 上海喔噻互联网科技有限公司 重生之互联网科技帝国 互联网科技公司税收优惠 狮子座互联网科技 奇酷互联网络科技 猫创互联网科技 互联网科技公司需要的职位 互联网教育科技公司vipkid 赶超互联网科技 微信多开 乌鲁木齐新华智原互联网科技学校 西安小鹰速贷互联网科技有限公司 中科明德北京互联网科技 沐思想互联网科技有限公司 山东星卡互联网科技有限公司官网 杭州披云加互联网科技有限公司 南京一网一红互联网科技有限公司 中国科技和美国互联网 互联网科技创业计划的风险分析 广州全民伙伴互联网科技有限公司 华中科技大学互联网 睿民互联网科技 菲比寻常互联网科技 金融科技和互联网金融 济南和联互联网科技有限公司 武汉健翔互联网络科技有限公司 阿大互联网科技有限公司 21世纪互联网科技成就 2021世界互联网领先科技成果发布 河南商务圈互联网科技有限公司
0