百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Oracle体系结构总结

ccwgpt 2024-11-30 19:27 22 浏览 0 评论

一、ORACLE体系结构组成

ORACLE体系结构主要分为:内存结构、进程结构、存储结构。内存结构主要由SGA和PGA构成;进程结构主要由用户进程和ORACLE进程组成;存储结构主要由逻辑存储和物理存储构成。

二、ORACLE内存结构

1、SGA系统全局区是Oracle Instance的基本组成部分,在实例启动时分配。是一组包含一个Oracle实例的数据和控制信息的共享内存结构。主要是用于存储数据库信息的内存区,该信息为数据库进程所共享(PGA不能共享的)。它包含Oracle 服务器的数据和控制信息,它是在Oracle服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。

2、PGA是一块包含一个服务进程的数据和控制信息的内存区域。你每启动一个数据库进程就会在内存中创建一个pga,它是独有的,非共享。

三、SGA概述

系统全局区是数据服务中实例的必要组成部分,由很多小内存区共同构成,各个小内存区存放不同的信息,系统全局区用于暂存可以被所有进程( 服务进程和后台进程 )共享的信息,对系统的运行性能有好处,SGA在实例启动的时候自动分配 ,实例关闭时自动释放。SGA暂存系统的大量共享数据,对系统性能影响很大,所以需要为SGA选择适当的管理方式。

1、共享池(Shared Pool)

(1)数据字典缓存区(Data Dictionary Cache)

用于存放SQL语句相关的数据文件、表、索引、列、用户、其他的数据对象的定义和权限信息等。

(2)库缓存区(Librabry Cache)

该区域存放共享SQL和PL/SQL代码。服务器进程在执行语句时,首先会匹配库缓存,如果存在相同语句则无需编译直接使用已编译的执行计划。绑定变量不是在编译阶段赋值的,而是在运行阶段赋值的,因此含有绑定变量的SQL语句可以不用重新编译。

(3)SQL和PL/SQL结果缓存

2、大池(Large Pool)

大池是个可选的内存区域,可提供一个大的缓冲区供数据库的备份与恢复操作过程使用。数据库的备份恢复、执行具有大量排序操作的SQL语句、并行化的数据库操作时可能需要用到大池。

3、Java池(Java Pool)

JAVA池在数据库中支持JAVA 的运行,存放JAVA代码和JAVA语句的语法分析表

4、流池(Stream Pool)

用于缓存流进程在数据库间移动/复制数据时使用的队列消息。一般从重做日志中提取变更记录的进程和应用变更记录的进程会用到流池。

5、数据库缓存区(Database Buffer Cache)

用于缓存当前或最近使用的从磁盘读取的数据块的拷贝,来优化数据库的I/O减少物理读/写。Oralce依据LRU算法对该内存区域进行block-level的更新.LRU算法(简单理解就是最近最小使用的数据调出内存)。

(1)脏缓存快(Dirty buffers)

数据被修改过并且已经commit但是还未写入磁盘的数据缓存块,脏缓存块最终被DBWn进程写入到磁盘的数据文件中永久保存。

(2)命中缓存块(Pinned buffers)

最近正在被访问的缓存块,始终被保留在数据高速缓存中,不会被写入数据文件。

(3)空闲缓存块(Free buffers)

该缓存块中没有数据,等待被写入数据。oracle从数据文件中读取数据后,寻找空闲缓存块,以便写入其中。

6、日志缓冲区(Redo Log Buffer)

日志缓冲区是一块比较小的内存区域,它是用来短期存储将写入到磁盘中的重做日志信息。日志缓冲区也是为了减少磁盘IO,减少用户的等待时间。

四、PGA

PGA是指单个服务器进程或者单个后台进程所需的数据和控制信息。PGA是在用户进程连接到数据库并创建一个会话时自动分配。该区域内保留每个与oracle数据库连接的用户进程所需的内存,当一个用户会话结束,PAG就会释放。 排序区

1、排序区

当用户需要对数据进行排序时,系统会将需要排序的数据保存到PGA中的排序区内,然后在这个排序区内对这些数据进行排序。如果发现用户的很多操作都需要用到排序,那么为用户设置比较大的排序区,可以提高用户访问数据的效率。

2、会话区

会话区保存了会话所具有的权限、角色、性能统计等信息,通常都是由数据库系统自我维护。

3、 堆栈区

保存着绑定变量、会话变量、SQL语句运行时的内存结构等重要的信息,通常都是由数据库系统自我维护

4、游标区

游标区是一个动态的区域,当用户执行游标语句打开游标时,系统会在PGA中创建游标区,当关闭游标时,这个区域就会被释放。创建与释放需要占用一定的系统资源,花费一定的时间,如果频繁的打开和关闭游标,就会降低语句的执行性能。

五、进程结构

1、SMON

系统监视器进程,负责打开数据库时候的恢复、整理数据库表(段)空间的碎片等。它通过验证所有数据文件和联机重做日志文件来打开数据库。数据库状态置为open之后,SMON的主要工作内容就放在各种内部任务上,如合并空闲空间,处理表(段)空间碎片。

2、PMON

进程监视器进程,负责监视所有服务器进程,并且检查连接会话中的问题。如果会话异常中止,PMON会及时销毁对应的服务器进程,将PGA内存返回给系统空闲内存池,并回滚所有未提交的事务。

3、DBWn

数据库写进程,它主要负责将Database Buffer Cache中的脏缓冲区写入数据文件,做持久化。这里需要再次声明,数据库写进程DBWn是不受我们commit影响的,我们commit影响的是日志写进程LGWR。DBWn选择要写入的脏缓冲区的原则是:最近最少使用。也就是说,DBWn将最近最少使用的脏缓冲区写入数据文件。

以下四种情况,DBWn将执行写操作:

(1)没有可用的缓冲区

当数据被读取到Database Buffer Cache时,需要先查找空闲的缓冲区,也就是说既不脏也没被占用的缓冲区。如果长时间找不到空闲缓冲区,那么DBWn就会将某些脏缓冲区写入磁盘。完成之后,就有可用的空闲缓冲区了。

(2)脏缓冲区过多

第二种情况是脏缓冲区过多,这个多是由Oracle一个内部值决定的。

(3)每三秒钟(三秒钟超时)

第三种情况,三秒钟超时。DBWn每三秒钟会对一些缓冲区进行写操作。前面两种情况是强制写,而三秒钟超时意味着即使没有脏缓冲区,也要DBWn也要执行一次清理。

(4)遇到检查点

前面三种情况是部分写入(称为增量检查点或提高增量检查点位置),最后这种情况是全部写入,把所有的脏缓冲区全部写入数据文件。 ?前三种情况是在Oracle运行过程中自动执行的,不会给系统的I/O造成比较大的压力。但是在执行检查点的情况下,可能同时有非常大量的脏缓冲区需要写入磁盘,所以当时的磁盘I/O会到达顶峰,CPU使用率很可能会爆高到100%。因此,一般在不得已的时候才使用检查点:

4、LGWR

日志写进程,负责将日志缓冲区Log Buffer中的内容写入到磁盘的联机(重做)日志文件中,这个写入的过程称为“日志缓冲区转储”。当我们对数据做任何更改时(包括增删改),这个更改会写入到两个缓冲区,一个是Database Buffer Cache ,用于写入到数据文件;另一个是Redo Log Buffer,用于写入联机重做日志文件。为了防止丢失更改,LGWR进程几乎实时地将Redo Log Buffer写入到联机重做日志文件中。当我们commit时,会话挂起,LGWR执行写入操作,写入完成,事务标记为不可callback的已提交返回给会话,会话重新可用。

(1)会话发出commit

保证了已提交commit的事务中的所有变更都可以在联机重做日志中记录,这是数据库数据不丢失的保证。如果数据库损坏,可以在还原上一次备份的基础上,利用自上次备份以来的(归档)联机重做日志进行事务重做。当然,commit的事务会重新写入数据文件,未提交的事务不会持久化存储。

(2)日志缓冲区1/3满

日志缓冲区三分之一满的时候,也会使LGWR执行写操作。一般来说日志缓冲区只有MB级大小,应用程序(比如JAVA程序)会在不到一秒的时间生成足以充满1/3的重做内容(更改),所以说,LGWR会几乎实时地执行写操作。此后,在会话发出commit命令的时候,由于没有太多要一次性写入到日志中的内容,所以commit也几乎是实时完成的。

(3)DBWn要写入数据文件

为了防止瞬间断电等突发情况的发生而导致数据的不一致,DBWn在写入数据文件之前要执行日志写操作,因为日志写操作能提供数据在没有写入数据文件情况下的数据可恢复性。另外由于DBWn的写操作是有三秒钟超时的,而日志写操作必须要在DBWn之前执行一次,所以LGWR也就有了三秒钟超时的触发条件。

5、CKPT

执行CKPT进程会使得DBWn进行写操作。CKPT不再必须执行完全检查点,但是它必须跟踪重做日志中的增量检查点位置。在必要的时候,CKPT会执行增量检查点,以使得增量检查点的位置前移。增量检查点位置是发生故障时,重做开始的位置。CKPT使用当前检查点位置去刷新控制文件。

6、MMON

可管理性监视器进程,以前也叫Memory Monitor,内存监视器进程用于支持Oracle数据库的自我管理和自我调整的进程,简单地理解为“监视器的监视器”。

7、MMAN

MMAN,Memory Manager,内存管理进程,支持内存分配的自动管理。有了这个进程,我们DBA只需要去设置总的内存大小,SGA以及PGA等,MMAN会在DBA设置的总体大小范围内进行自动分配。

8、LREG

侦听器注册进程,它注册了有关数据库实例和Oracle网络监听调度程序的信息。这样,用户就可以通过侦听器连接到数据库。同时LREG还能根据工作负载与性能信息更新侦听器,这在多实例环境下是比较智能的。之前这个功能是由PMON来实现的。

9、ARCn

它将联机重做日志文件的内容写入到归档日志文件中。由于联机重做日志文件只有那么几组,每组几个文件,每个文件就几兆,它们会频繁地被刷新,不可能保留长期且完整的重做条目,所以,为了保证可恢复性,必须在联机重做日志文件被刷新前将其归档。如果启用了归档模式,ARCn将会启动,一旦ARCn异常,数据库实例将会挂起。ARCn最多有30个,命名为ARC1~ARC30。

10、RECO

RECO,Recoverer,恢复进程。它是在分布式架构下,解决分布式事务失败问题的进程。

相关推荐

自己动手写Android数据库框架_android开发数据库搭建

http://blog.csdn.net/feiduclear_up/article/details/50557590推荐理由关于Android数据库操作,由于每次都要自己写数据库操作,每次还得去...

谷歌开源大模型评测工具LMEval,打通谷歌、OpenAI、Anthropic

智东西编译|金碧辉编辑|程茜智东西5月28日消息,据科技媒体TheDecoder5月26日报道,当天,谷歌正式发布开源大模型评测框架LMEval,支持对GPT-4o、Claude3.7...

工信部:着力推动大模型算法、框架等基础性原创性的技术突破

工信部新闻发言人今日在发布会上表示,下一步,我们将坚持突出重点领域,大力推动制造业数字化转型,推动人工智能创新应用。主要从以下四个方面着力。一是夯实人工智能技术底座。通过科技创新重大项目,着力推动大模...

乒乓反复纠结“框架不稳定”的三个小误区

很多球友由于对框架的认知不清晰,往往会把“框架不稳定”当成一种心理负担,从而影响学球进度,其典型状态就是训练中有模有样,一旦进入实战,就像被捆住了手脚。通过训练和学习,结合“基本功打卡群”球友们交流发...

前AMD、英特尔显卡架构师Raja再战GPU,号称要全面重构堆栈

IT之家8月5日消息,知名GPU架构师拉贾科杜里(RajaKoduri)此前曾先后在AMD和英特尔的显卡部门担任要职。而在今日,由Raja创立的GPU软件与IP初创企...

三种必须掌握的嵌入式开发程序架构

前言在嵌入式软件开发,包括单片机开发中,软件架构对于开发人员是一个必须认真考虑的问题。软件架构对于系统整体的稳定性和可靠性是非常重要的,一个合适的软件架构不仅结构清晰,并且便于开发。我相...

怪不得别人3秒就知道软考案例怎么做能50+

软考高级统一合格标准必须三科都达到45分,案例分析也一直是考生头疼的一门,但是掌握到得分点,案例能不能50+还不是你们说了算吗?今天就结合架构案例考点,分享实用的备考攻略~一、吃透考点,搭建知识框架从...

UML统一建模常用图有哪些,各自的作用是什么?一篇文章彻底讲透

10万+爆款解析:9大UML图实战案例,小白也能秒懂!为什么需要UML?UML(统一建模语言)是软件开发的“蓝图”,用图形化语言描述系统结构、行为和交互,让复杂需求一目了然。它能:降低沟通成本避...

勒索软件转向云原生架构,直指备份基础设施

勒索软件组织和其他网络犯罪分子正越来越多地将目标对准基于云的备份系统,对久已确立的灾难恢复方法构成了挑战。谷歌安全研究人员在一份关于云安全威胁演变的报告中警告称,随着攻击者不断改进数据窃取、身份泄露和...

ConceptDraw DIAGRAM:释放创意,绘就高效办公新未来

在当今数字化时代,可视化工具已成为提升工作效率和激发创意的关键。ConceptDrawDIAGRAM,作为一款世界顶级的商业绘图软件,凭借其强大的功能和用户友好的界面,正逐渐成为众多专业人士的首选绘...

APP 制作界面设计教程:一步到位_app界面设计模板一套

想让APP界面设计高效落地,无需繁琐流程,掌握“框架搭建—细节填充—体验优化”三步法,即可一步到位完成专业级设计。黄金框架搭建是基础。采用“三三制布局”:将屏幕横向三等分,纵向保留三...

MCP 的工作原理:关键组件_mcp部件

以下是MCP架构的关键组件:MCP主机:像ClaudeDesktop、GitHubCopilot或旅行助手这样的AI智能体,它们希望通过MCP协议访问工具、资源等。MCP主机会...

软件架构_软件架构师工资一般多少

软件架构师自身需要是程序员,并且必须一直坚持做一线程序员。软件架构应该是能力最强的一群程序员,他们通常会在自身承接编程任务的同时,逐渐引导整个团队向一个能够最大化生产力的系统设计方向前进。软件系统的架...

不知不觉将手机字体调大!老花眼是因为“老了吗”?

现在不管是联系、交友,还是购物,都离不开手机。中老年人使用手机的时间也在逐渐加长,刷抖音、看短视频、发朋友圈……看手机的同时,人们也不得不面对“视力危机”——老花眼,习惯眯眼看、凑近看、瞪眼看,不少人...

8000通用汉字学习系列讲座(第046讲)

[表声母字]加(续)[从声汉字]伽茄泇迦枷痂袈笳嘉驾架咖贺瘸(计14字)嘉[正音]标准音读jiā。[辨形]上下结构,十四画。会意形声字,从壴从加,加也表声。注:从壴,字义与鼓乐有关;从加,字义与...

取消回复欢迎 发表评论: