Oracle数据库管理系统的体系结构图解简单说明(二)

Oracle数据库管理系统的体系结构图解简单说明(一)

前言:

在(一)中介绍说明的过于简单,也没划分好不同的结构去说明以及图解,(二)中补充完善一下下,(一)中都能理解,或者本身都懂的,可以不用看该篇文章,仅只用于本人回顾学习等等

先介绍一下常用的相关术语,简单介绍(其实可以不看,在(一)中也有写过)

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

Oracle数据库管理系统的体系结构

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

在这里插入图片描述
在这里插入图片描述

Oracle内存结构

  • Oracle的内存由两大部分组成:PGA和SGA;
  • PGA:服务进程和后台进程,他们都有自己进程私有的内存空间,即PGA;
  • 实例的后台进程中有5个是必需的,即只要这5个后台进程中的任何一个未能启动,则该实例都将自动关闭,这5后台进程:SMON、PMON、DBWR、LGWR、CKPT
  • SGA:系统全局区,所有后台进程间共享访问使用。系统全局区(SGA)中包含了以下几个内存结构: 共享池(shared pool)、数据库高速缓冲区(database buffer cache)、重做日志缓冲区(redo log
    buffer)和其他的一些结构(如:锁和统计数据等)。

在这里插入图片描述

shared pool(共享池):

Oracle共享池
主要作用是提高SQL语句以及PL/SQL语句的执行效率,缓存执行过的SQL语句,执行计划;PL/SQL语句的代码块、执行码等(该部分称为library cache);以及在编译SQL, PL/SQL语句是参照的数据字典信息(该部分称为dictionary cache或row cache)。是SGA中最重要的部分之一。

database buffer cache(数据库缓冲区):

主要作用是缓存曾经读取过的数据块,Oracle数据库中对数据的所有修改操作都是在buffer cache中进行的。因为所有的操作都必须先将物理文件上的数据块读取到buffer cache中,然后才能进行各种操作。buffer cache是SGA中最大的内存区域,也是SGA中最重要的部分之一。

Large pool(大池):

可选的内存池,其主要作用是分担shared pool的压力。某些情况,比如备份恢复,如果没有分配Large pool,则会从shared
pool中分配内存,这会增加shared pool的负担。

Java pool(Java池):

用于Java程序使用。

stream pool(流池):

数据库在流工作是使用的内存区域

Oracle进程结构

  • Oracle的进程主要有后台进程和服务进程; (按照Linux的严格意义来说,服务进程Server process也是属于后台进程)。
  • 后台进程主要对Oracle数据库进程各种维护和操作;
  • 服务进程Server process主要来处理用户的请求;
  • 用户进程通过监听器来访问Oracle instacne,那么就会触发生成一个服务进程Server process进程,来对该用户进程的请求进程处理;
  • 后台进程一般有:LGWR, DBWR, ARCN, CKPT, SMON, PMON等等。

在这里插入图片描述

DBWR(database writer数据库写):

主要作用是将被修改过的buffer cache按照一定的条件写入数据文件data files,物理磁盘。
Oracle数据库中对数据的所有修改操作都是在buffer cache中进行的。因为所有的操作都必须先将物理文件上的数据块读取到buffer cache中,然后才能进行各种操作。
在这里插入图片描述

LGWR(log writer,日志写):

主要作用是将log buffer中的redo log记录按照一定的条件写入联机的redo log文件。
在这里插入图片描述

CKPT(checkpoint,检查点进程):

主要作用是将检查点位置(checkpoint position)写入控制文件control files和数据文件data files的头部。

SMON(system monitor,系统监控进程):
  • 主要作用是在数据库启动时,判断实例上次是否正常关闭,如果是非正常关闭,则进程实例恢复。另外,还会合并相连的可以空间。
  • smon主要是强制对数据库进行恢复操作。在实例启动时,如果上一次数据库时非正常关闭,并且日志文件和控制文件的scn是不同的,oracle将自动在重新打开数据库之前,通过执行重做日志文件的记录来同步所有的数据文件,控制文件和日志文件,确保所有的数据库文件的一致性,然后再打开数据库;
  • 实例恢复是不需要dba干预的,由smon自动完成;
    总的来说,smon的工作归纳如下:
    a.进行实例恢复
    b.合并数据文件的自由空间
    c.释放数据文件的临时端
PMON(process monitor,进程监控):
  • 监控Server process, 如果Server process非正常关闭,则PMON负责清理它占用的各种资源。
  • pmon负责对失败的用户进程或服务进程进行恢复。当用户进程连接到oracle服务器时,oracle将在服务器端分配相应的服务器进程,这时由pmon来监视用户进程的执行情况。当由于各种原因,用户对opracle数据局的连接,发生崩溃,挂起或异常终止现象时,该进程负责清楚服务进程所占用的资源,回滚没有完成的事务,当pmon检测到用户进程失败是,进行的工作如下:
    a.回滚当前用户的事务
    b.释放当前用户加的表级锁或行级锁
    c.释放用户的其他资源
    d.重新启动死掉的调度进程
RECO进程(recover,恢复进程):

该进程是在具有分布式选项时所使用的一个进程,负责在分布式数据库环境下,自动恢复失败的分布式事务。

ARCH进程(ARCHIVELOG,日志归档进程):
  • 该进程将已填满的在线日志文件拷贝到指定的存储设备。当日志是为ARCHIVELOG使用方式、并可自动地归档时ARCH进程才存在。
  • 可选后台进程,在归档模式下负责将已写满的redo log file复制到归档日志目标文件中,以保留所有的重做记录。
LCKn进程(lock,锁进程):

用于Oracle并行服务器环境下,用于多个实例间的封锁,该进程最多可以启动10个进程(LCK0,LCK1……,LCK9)。

Dnnn进程(Despatcher,调度进程):

是多线程服务器体系结构的一部分,调度进程接受用户进程地 请求,将他们放入到请求队列中,然后为请求队列中的用户进程分配一个服务进程。

Oracle存储结构

存储结构即物理文件的组成结构,其中的控制文件、数据文件、重做日志文件是不可或缺的关键文件:

在这里插入图片描述

control file(控制文件):

包含了数据库物理结构的信息,比如各种文件的存放位置,当前数据库的运行状态等。十分重要,丢失则数据库实例不能启动。

data file(数据文件):

存放数据的文件。

online redo log file(联机重做日志文件):

存放redo log的文件。维护数据库的一致性,用于数据库恢复。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

偷偷学习被我发现

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值