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

发布时间:2020-04-06 22:48:57 作者:安享落幕
来源:网络 阅读:1005

目录

前言

Oracle 内存结构

Oracle 数据库 体系结构 (二):服务器结构
以上图很好说明了内存的结构,下面将会详细介绍内存结构。


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

Oracle内存结构包含:

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

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

系统全局区(SGA)

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

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

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

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

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


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


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


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


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


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

Total System Global Area 1593835520 bytes
Fixed Size          8793256 bytes
Variable Size         905970520 bytes
Database Buffers      671088640 bytes
Redo Buffers            7983104 bytes

程序全局区(PGA)

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


用户全局区(UGA)


Oracle 进程结构

Oracle 实例有以下几种进程:

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

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


用户进程

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

服务器进程

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

后台进程

PMON 进程监控进程:

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

SMON 系统监控进程:

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

DBWR 数据写入进程:

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

LGWR 日志写入进程:

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

CKPT 校验进程:

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

总结

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

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

推荐阅读:
  1. Oracle体系结构和用户管理
  2. Oracle 数据库 体系结构(一):存储结构

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

oracle 数据库 oracle数据库体系结构 oracle数据库服务器结构

上一篇:Spring Batch快速入门

下一篇:SpringBoot集成FastDFS+Nginx整合基于Token的防盗链

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》