当前位置:首页 > 数据库 > oracle 体系架构图

oracle 体系架构图

2022年11月09日 08:51:25数据库6

1. 几个重要的Oracle术语
要学习Oracle的体系结构,先要搞明白几个重要的术语:Oracle服务器、Oracle实例、Oracle数据库。
Oracle服务器:即Oracle server,由Oracle实例和Oracle数据库组成。
Oracle实例:即Oracle instance,是在Oracle启动的第一个阶段根据参数文件,生成的一系列的后台进程和一块共享内存SGA共同组成。
Oracle数据库:即Oracle database,是由Oracle所有的物理文件所组成。其中最关键的有:控制文件、数据文件、redo log文件等。
Oracle实例与Oracle数据库进行交互,Oracle实例来对数据库进行各种操作,从而对外提供数据库的存储和检索服务。

2. Oracle总体结构
Oracle server由Oracle instance和Oracle database组成。而Oracle instance又由后台进程和共享内存组成,所以Oracle的结构又包含了内存结构进程结构;而Oracle database有物理文件组成,所以Oracle结构也包含了存储结构

oracle 体系架构图 _ JavaClub全栈架构师技术笔记


下面分别对Oracle内存结构、Oracle进程结构、Oracle存储结构进行概述,让我们对Oracle有一个对初步的概念。
3. Oracle内存结构
总体而言Oracle的内存由两大部分组成:PGA和SGA,其结构如下图所示:
 

oracle 体系架构图 _ JavaClub全栈架构师技术笔记


不管是Server process,还是后台进程,他们都有自己进程私有的内存空间,即PGA;而SGA则为所有后台进程间共享访问使用。
给Server process分配的PGA,根据其功能有划分为几个具体的部分。后续博客再进行具体探讨。
SGA在Oracle10g中分为6个部分,如上图所示。下面分别概述其作用:
1)shared pool(共享池):
主要作用是提高SQL语句以及PL/SQL语句的执行效率,缓存执行过的SQL语句,执行计划;PL/SQL语句的代码块、执行码等(该部分称为library cache);以及在编译SQL, PL/SQL语句是参照的数据字典信息(该部分称为dictionary cache或row cache)。是SGA中最重要的部分之一。
2)database buffer cache(数据库缓冲区):
主要作用是缓存曾经读取过的数据块,Oracle数据库中对数据的所有修改操作都是在buffer cache中进行的。因为所有的操作都必须先将物理文件上的数据块读取到buffer cache中,然后才能进行各种操作。buffer cache是SGA中最大的内存区域,也是SGA中最重要的部分之一。
3)redo log buffer(重做日志缓冲区):
缓存生成的redo log记录,日志写后台进程会将log buffer中的记录写到磁盘中。也是SGA中最重要的部分之一。
4)Large pool(大池):
可选的内存池,其主要作用是分担shared pool的压力。某些情况,比如备份恢复,如果没有分配Large pool,则会从shared pool中分配内存,这会增加shared pool的负担。
5)Java pool(Java池):
用于Java程序使用。
6)stream pool(流池):
数据库在流工作是使用的内存区域。
4. Oracle进程结构
Oracle的进程主要有后台进程和Server process(其实按照Linux的严格意义来说,Server process也是属于后台进程)。后台进程主要对Oracle数据库进程各种维护和操作,而Server process主要来处理用户的请求:

oracle 体系架构图 _ JavaClub全栈架构师技术笔记


用户进程通过监听器来访问Oracle instacne,那么就会触发生成一个Server process进程,来对该用户进程的请求进程处理。后台进程一般有:LGWR, DBWn, ARCn, CKPT, SMON, PMON等等。
1)DBWn(database writer数据库写):
主要作用是将被修改过的buffer cache按照一定的条件写入物理磁盘。
2)LGWR(log writer,日志写):
主要作用是将log buffer中的redo log记录按照一定的条件写入联机的redo log文件。
3)CKPT(checkpoint,检查点进程):
主要作用是将检查点位置(checkpoint position)写入控制文件和数据文件的头部。
4)SMON(system monitor,系统监控进程):
主要作用是在数据库启动时,判断实例上次是否正常关闭,如果是非正常关闭,则进程实例恢复。另外,还会合并相连的可以空间。
5)PMON(process monitor,进程监控):
监控Server process, 如果Server process非正常关闭,则PMON负责清理它占用的各种资源。
5. Oracle存储结构
存储结构即物理文件的组成结构,Oracle涉及的物理文件如下所示:

oracle 体系架构图 _ JavaClub全栈架构师技术笔记


图2:

oracle 体系架构图 _ JavaClub全栈架构师技术笔记


其中的控制文件、数据文件、重做日志文件是不可或缺的关键文件:
1)control file(控制文件):
包含了数据库物理结构的信息,比如各种文件的存放位置,当前数据库的运行状态等。十分重要,丢失则数据库实例不能启动。
2)datafile(数据文件):
存放数据的文件。
3)online redo log file(联机重做日志文件):
存放redo log的文件。维护数据库的一致性,用于数据库恢复。

作者:fly_air
来源链接:https://blog.csdn.net/u012719556/article/details/106026583/

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/database/68727.html

标签: Oracle
分享给朋友:

“oracle 体系架构图” 的相关文章

Oracle SQL

start with....connect by 递归查询树状SQL Select * from t_tree where UPPER(is_display) = 'ON' start with p_node_id =1 --当前节点ID conne...

SpringBoot配置Oracle数据库

1.配置pom.xml文件 在pom.xml配置文件的标签中添加下列语句 <dependency> <gr...

Docker安装Oracle19c史上最全步骤(图文并茂)

Docker安装Oracle19c史上最全步骤(图文并茂)

Docker安装Oracle19c史上最全步骤 介绍 前期准备 Docker安装 Oracle 19c安...

使用Maven管理Oracle驱动包

使用Maven管理Oracle驱动包

  由于Oracle授权问题,Maven3不提供Oracle JDBC driver,为了在Maven项目中应用Oracle JDBC driver,必须手动添加到本地仓库。 手动添加到本地仓库需要本地有oracle驱动包,有两种方式获取oracle的驱动包:一种是去oracle...

Eclipse代替Oracle接管Java EE

Eclipse代替Oracle接管Java EE

Eclipse Foundation接替Oracle成为Java EE的新东家,Oracle不再管理Java EE。 作为采用的一部分,Java EE可能会更换新名称,Oracle建议在其建议中使用Java EE。 一个月前,Oracle表示将结束...

使用Docker安装Oracle步骤

使用Docker安装Oracle步骤

理由 : docker安装Oracle数据库既能减少安装的时间而且还能够快速进行部署  1 搜索镜像 docker search oracle 来搜索oralce镜像 2 创建volume以持久化数据 docker volume create or...

oracle group by执行慢,一次对group by时间导致的慢查询的优化

oracle group by执行慢,一次对group by时间导致的慢查询的优化

前言: 最近在测试环境中点击一个图表展示页面时,半天才得到后台响应的数据进行页面渲染展示,后台的响应很慢,这样极大的降低了用户的体验; 发现这个问题后马上进行了排查 ,通过排查发现是由一个查询很慢的 group by 语句导致的; 本文...

Navicat for oracle 破解版

Navicat for oracle 破解版

1、下载解压,得到64位和32位的navicat for oracle 12中文原程序和注册机;2、以安装64位为例,双击文件“navicat120_ora_cs_x64.exe”开始安装,勾选同意软件协议;3、默认安装目录【C:\Program Files\PremiumSoft\N...

springBoot 整合 mybatis+Oracle

springBoot 整合 mybatis+Oracle

现在比较流行的操作数据库操作层框架Mybatis,下面我们就来看看Springboot如何整合mybatis, 之前一直在用xml形式写sql,这次依然用xml的方式感觉这种还是比较灵活方便。   添加mybatis关键就是要引入mybatis-spring-boot-start...

使用Navicat为Oracle导入函数后函数显示红叉

使用Navicat为Oracle导入函数后函数显示红叉

上图是plsql中的截图 有可能是Navicat没有缓存过程,刷新试一试,不行的话,对导入的函数进行重新编译即可。 还发现一个问题是,Navicat导出的脚本里面,函数部分竟然没有参数和返回值,让我很疑惑,最后是通过plsql导出的存储过程在N...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。