首页 > 数据库 >4、oracle进程讲解

4、oracle进程讲解

时间:2024-11-18 10:34:35浏览次数:1  
标签:log process 数据库 server 进程 讲解 oracle redo

进程结构

server process服务器进程

前台进程(foreground process):server process(服务器进程)
用户连接到数据库实例以后,暂时可以认为是:对每一个用户连接,oracle实例会启动一个进程,专门对这个连接会启动一个进程,这个进程它属于server process这一类,因为server process有好多进程;
server process是用户连接数据库以后诞生的这么一个进程,这个进程叫前台进程,它主要为用户服务,它是整个数据库对外提供服务的一个窗口

server process做什么事情呢?
一个用户在用户端写了一个SQL(DML),然后提交,这个SQL发送到数据库;然后server process接到这个SQL,server process会做所有的事情,哪些事情呢?server process接到这个SQL以后,第一步,接到这个SQL以后,拿着这个SQL在shared pool里面找,看看这个SQL有没有被解析过,也就是此前有没有被执行过(也就是在shared pool里面找sql和sql执行计划这个动作是在server process里面完成的),找到了就产生软解析,没找到就产生硬解析,假设没找着,就要进行硬解析,而硬解析的一系列过程也是在server process里面完成的,解析完了之后,接着要执行,执行就是要修改或者获取数据,这时候server process在buffer cache里面找,没找到数据时,又要到数据库(磁盘)的数据块里找,找到之后把数据读到buffer cache里去(从block里找到,然后读取数据到buffer cache里去产生物理读,物理读这个动作也是server process完成的),读取到buffer cache里面之后,接着要修改它,修改就要产生redo log,redo log在PGA里面产生,产生redo log完了以后接着修改,修改完了以后,server process把redo日志写到log buffer里面去,之后commit提交。

LGWR(log write)进程

提交的时候,有一个进程LGWR(log write),把log buffer里面的日志写到数据库的redo log里面去,这个进程很勤快的,因为log buffer的大小很小,这个进程是一个后台进程,也就是用户连不连接,这个进程都不受影响,

LGWR进程的特点(LGWR被触发的条件):
1、当log buffer里面的日志超过1M的时候,它就往数据库的redo log里面写
2、当log buffer的容量超过1/3的时候,它也往数据库的redo log里面写
3、每隔3秒钟,它也往数据库的redo log里面写
4、commit的时候,也会触发它把log buffer里面的日志往数据库的redo log里面写

PGA

对于每一个server process,oracle都会分配一块工作空间内存给它,这块内存是server process独有的,这块内存叫PGA

有这么一种情况,就是每个server process在工作的时候,所需要的内存大小是不一样的,而且随着时间的变化,这块内存有时候大,有时候小,对于这种情况,oracle预算分配一个总的PGA,然后对于每一个server process来说,需要的内存不够时,oracle会分配,而内存多的话,就释放回去,需要的时候再分配;比如,现在有100个server process,每个server process需要多少内存就分配多少内存给,而如果有1000个server process的话,每个server process需要多少内存它就不会分配多少内存给了,需要10个G,可能它就分配你3个G了,相当于这个PGA超出了预算

oracle有一个限制:对于每个server process分配的内存不会超过200M,还有一个是不会超过PGA预算的5%,两者取最小值

PGA是server process获取到的一块内存,从oracle 9i开始,oracle提供了这么一个PGA的自动管理

DBWR进程

从磁盘块读取到buffer cache的数据块,经过修改,修改之后的数据就和磁盘里的数据不一致了,修改之后的数据块叫做dirty buffer(脏块),这个脏块早晚要写到磁盘上,把脏块写到磁盘的这个动作呢,又由一个后台进程DBWR来完成

DBWR进程可以有多个进程,从进程0~进程9

DBWR进程被触发的条件:
1、脏块太多的时候
2、每隔3秒钟
3、server process在buffer cache里找数据没找到,要到磁盘上找的时候

arch进程(归档进程)

arch进程(归档进程):
当数据库的一个redo log满了之后,要把redo log里的日志写到arch file里去,这个动作由arch进程来完成
arch进程的数量可以由spfile来控制,实现快速拷贝

process monitor(pmonitor进程监控进程)

例如:用户连接到数据库实例以后,产生一个server process,这时候呢,有这么一种情况,就是用户突然网断了,server process还在一直等着这个用户,然后连接超时了,它又去连接这个用户,但是连接不上,这时候,这个server process就成了死进程了,这个时候就需要pmonitor,周期性的启动起来,把类似于server process的这种死进程清理一下,避免占用PGA,或者还占用着buffer cache里面的某些资源

pmonitor进程是主外的

smonitor进程

例如:oracle数据库里面出现了一些碎片,这时候就需要用smonitor来进行整理碎片;还有就是,在数据库正常运行期间,会有很多脏块,这些脏块对应的日志已经写到磁盘了,这时候数据库突然崩了,但是这些脏块还没来得及写入磁盘里,所以数据库重新启动以后,数据库会使用redo log把这些脏块恢复过来,这也需要smonitor来完成

smonitor进程是主内的

oracle后台进程里面的核心进程
1、pmonitor进程
2、smonitor进程
3、DBWR进程
4、LGWR进程
5、arch进程

CKPT(check point)检查点进程

它会每隔3秒钟会启动一下,会把数据库的一些相关的一些信息,写到控制文件里去,记录着一些数据文件和redo log的新旧的信息

控制文件记录着数据库的物理结构,也就是数据文件、redo log文件

标签:log,process,数据库,server,进程,讲解,oracle,redo
From: https://www.cnblogs.com/xgq20210831/p/18551929

相关文章

  • 3、oracle内存讲解
    oracle数据库实例(instance)数据库打开以后,会生成一个内存结构和一堆进程内存和进程:就是oracle的实例instanceoracle数据库实例结构:用户是通过连接实例来访问数据库的sharedpool占整个内存的20%buffercache占整个内存的80%redologbuffer占20~100M,一般是100M各种pool一......
  • 【linux学习指南】 进程间通信&&匿名管道&&理解管道的本质
    文章目录......
  • 程序设计2596基于ASP.NET的滑雪网站的设计与实现【源码+讲解视频】滑雪产品租赁网站/
    项目包含:源码、讲解视频、说明文档,部署录像开发环境开发工具:VisualStudio2010或以上版本数据库:SQLServer2005或以上版本开发语言:c#操作系统:windows7或以上浏览器:GoogleChrome(推荐)、Edge、360浏览器系统用户分为:管理员、普通用户界面设计......
  • C++时间复杂度讲解
    它约等于算法中基本操作重复执行的次数(循环或递归的次数)不是行数!!!最多为O(5)!!!用乘号连接(在嵌套循环中),时间复杂度用O()表示。(O()只是符号)如:for(int=1;i<=n*10/8;i++){      for(intj=1;j<=n*10/2;k++){             for(intk=1;k<n*10;k++)......
  • 层次聚类——以凝聚型层次聚类为例讲解(易懂版)
            层次聚类是一种将数据集逐步划分为层次结构的方法,是一种无监督学习方法最终形成一颗树状图(dendrogram),可以直观地表示不同数据点之间的聚类关系。它是一种无监督学习方法。层次聚类的两种方法凝聚型(自底向上):这是最常见的方法,从每个数据点开始,将它们作为单独......
  • 【视频讲解】Python深度神经网络DNNs-K-Means(K-均值)聚类方法在MNIST等数据可视化对比
    全文链接:https://tecdat.cn/?p=38289原文出处:拓端数据部落公众号分析师:CucuSun近年来,由于诸如自动编码器等深度神经网络(DNN)的高表示能力,深度聚类方法发展迅速。其核心思想是表示学习和聚类可以相互促进:好的表示会带来好的聚类效果,而好的聚类为表示学习提供良好的监督信号。关......
  • 基于微信小程序的学生在线投票系统小程序app项目(源码+lw+部署文档+讲解等)
    项目整体介绍基于微信小程序的学生在线投票系统小程序为校园投票活动提供了便捷的解决方案。它具有简洁易用的界面,方便学生快速上手。活动组织者可以轻松创建投票项目,设定投票主题、选项、投票规则,如是否允许多选、投票起止时间等。在投票过程中,系统能实时统计票数,通过直......
  • 【计算机毕业设计选题推荐】基于spring boot的交通旅游订票系统的设计与实现 【附源码
    ✍✍计算机编程指导师⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java实战|SpringBoot/SSMPython实战项目|Django微信小程......
  • 温故知新,基于播客形式学习英语之EnglishPod 365, Elementary集合41-50(音频、原文、讲
    未经作者授权同意,请勿随意转载!!!(https://www.cnblogs.com/taylorshi/p/18550339)简介Enishpod是一家公司叫做PraxisLanguage推出的收费讲座,相比较ESLPod,EnishPod为常速。Enishpod极具趣味性,两位主持人Marco和Amira的讲解很生动幽默,完全有别于新概念类型听力的乏味。同时,Enis......
  • ECharts饼图-饼图33,附视频讲解与代码下载
    引言: 在数据可视化的世界里,ECharts凭借其丰富的图表类型和强大的配置能力,成为了众多开发者的首选。今天,我将带大家一起实现一个饼图图表,通过该图表我们可以直观地展示和分析数据。此外,我还将提供详细的视频讲解和代码下载链接,帮助大家快速上手。一、图表效果预览二、视频......