Oracle官方文档中给出的Oracle Database 19c技术架构图,能够看出制做者的用心和精心。不翻译一下真是对不起做者!数据库
同时本文能够做为学习Oracle体系结构很好的教材!值得你们收藏!数组
0一、数据库服务器(Database Server)
一个Oracle数据库至少由一个数据库实例和一个数据库组成。数据库实例部分处理内存和进程,数据库部分则由称为数据文件的物理文件组成,而且能够是非容器数据库或多租户容器数据库。Oracle数据库在其运行期间还会使用多个数据库系统文件。缓存
单实例数据库体系结构由一个数据库实例和一个数据库组成。数据库和数据库实例之间存在一对一的关系。能够在同一台服务器上安装多个单实例数据库。每一个数据库都有单独的数据库实例。此配置对于在同一台计算机上运行不一样版本的Oracle数据库颇有用。服务器
Oracle Real Application Clusters (Oracle RAC) 数据库的体系结构是由在分开的多台服务器计算机上运行的多个实例组成。它们都共享同一个数据库。服务器群集在一端表现为单个服务器,而在另外一端则为最终用户和应用程序。此配置旨在实现高可用性,可伸缩性和高端的性能。数据结构
监听器是一个数据库服务器进程。它接收客户端请求,创建与数据库实例的链接,而后将客户端链接移交给服务器进程。监听器能够在数据库服务器上本地运行,也能够远程运行。典型的Oracle RAC环境是远程运行的。架构
0二、数据库实例(Database Instance)并发
数据库实例包含一组Oracle数据库后台进程和内存结构。主要的内存结构是系统全局区 (SGA) 和程序全局区 (PGA)。后台进程对数据库中存储的数据(数据文件)进行操做,并使用内存结构完成其工做。数据库实例仅存在于内存中。ide
Oracle数据库还建立服务器进程,以表明客户端程序处理与数据库的链接,并执行客户端程序的工做。例如,解析和运行SQL语句,以及检索结果并将结果返回给客户端程序。这些类型的服务器进程也称为前台进程。函数
注意:更多详细信息,请看以下内容:Oracle Database Instance.性能
0三、系统全局区(System Global Area)
系统全局区域 (SGA) 是包含一个Oracle数据库实例的数据和控制信息的存储区域。数据库全部的服务器进程和后台进程共享方式使用SGA。启动数据库实例时,将会显示SGA分配的内存量。SGA包含如下数据结构:
•共享池 (Shared pool):在多个用户之间共享各类的缓存结构;例如,共享池存储已解析的SQL,PL/SQL代码,系统参数和数据字典信息。共享池几乎涉及数据库中发生的每一个操做。例如,若是用户执行SQL语句,则Oracle数据库将访问共享池。
•闪回缓冲区 (Flashback buffer):是SGA中的可选组件。启用闪回数据库后,将启动称为恢复写程序 (RVWR) 的后台进程。RVWR按期将修改后的块从缓冲区高速缓存复制到闪回缓冲区,而后将闪回数据库数据从闪回缓冲区写入闪回数据库日志,以循环方式重用。
•数据库高速缓冲区 (Database buffer cache):是存储从数据文件读取的数据块副本的内存区域。缓冲区是主内存地址,缓冲区管理器在其中临时缓存当前或最近使用的数据块。并发链接到数据库实例的全部用户共享对数据库高速缓冲区的访问。
•数据库智能闪存缓存 (Database Smart Flash):是Solaris或Oracle Linux上运行的数据库的数据库高速缓冲区的可选内存扩展。它为数据库中的数据块提供了2级缓存。针对读取密集型的在线事务处理 (OLTP) 工做负载,以及数据仓库 (DW) 中的即席查询 (Ad Hoc) 和批量数据修改工做,它能够提高这两种工做的响应时间和整体吞吐量。数据库智能闪存缓存驻留在一个或多个闪存设备上,这些设备是使用闪存的固态存储设备。数据库智能闪存缓存一般比其余主内存更经济,而且比磁盘驱动器快一个数量级。
•重作日志缓冲区 (Redo log buffer):是SGA中的循环缓冲区,用于保存有关对数据库所作的更改的信息。这些信息存储在重作条目中。重作条目包含重建(或重作)经过数据操做语言 (DML),数据定义语言 (DDL) 或内部操做对数据库所作的更改所必需的信息。若有必要,可将重作条目用于数据库恢复。
•大池 (Large pool):是一个可选的内存区域,用于大于共享池的内存分配。大池能够为以下内容提供更大的内存分配:共享服务器的用户全局区域 (UGA),Oracle XA接口(用于事务与多个数据库进行交互的地方),并行执行语句的消息缓冲区,用于Recovery Manager (RMAN) I/O 从属进程的缓冲区和延迟插入。
•内存中列式存储(In-Memory Area):是一个可选组件,使对象(表,分区和其余类型)能够以称为列格式的新格式存储在内存中。与传统的磁盘格式相比,此格式使扫描,联接和聚合的执行速度快得多,从而为OLTP和DW环境提供了快速的报告和DML性能。相对于在返回包含多列的少许行上运行的OLTP,此功能对在运行返回包含少许列的多行的分析应用程序特别有用。
•内存优化池(Memoptimize Pool):是一个可选组件,可为基于键的查询提供高性能和可伸缩性。Memoptimize池包含两部分,即memoptimize缓冲区和哈希索引。快速查询 (Fast Lookup) 使用memoptimize池中的哈希索引结构提供对给定表中块的快速访问 (启用MEMOPTIMIZE FOR READ选项) 以永久固定在缓冲区高速缓存中,以免磁盘 I/O。Memoptimize池中的缓冲区与数据库缓冲区彻底分开。哈希索引是在配置Memoptimized Rowstore 时建立的,并由Oracle数据库自动维护。
•共享I / O池(Shared I/O SecureFiles):用于SecureFile大对象 (LOB) 上的大型 I/O 操做。LOB是一组数据类型,旨在保存大量数据。SecureFile是一个LOB存储参数,容许重复数据删除,加密和压缩。
•流池(Streams pool):由Oracle Streams,Data Pump和GoldenGate集成的捕获和应用流程使用。Streams池存储缓冲的队列消息,而且为Oracle Streams捕获进程和应用进程提供内存。除非您进行特定配置,不然Streams池的大小从零开始。使用Oracle Streams时,池大小会根据须要动态增长。
•Java池(Java pool):用于Java虚拟机 (JVM) 中全部特定于会话的Java代码和数据。Java池内存的使用方式不一样,具体取决于Oracle数据库的运行模式。
•固定的SGA(Fixed SGA):是SGA的一个组成部分,一个内部整理区域,其大小因平台而异,并随发行版本的不一样而变化。其中包含有关数据库和数据库实例的状态的通常信息以及进程之间进行通讯的信息(固定SGA包含一组指向SGA其余组件的变量以及包含各类参数值的变量)。固定SGA的大小是咱们没法控制的,一般很小。能够将此区域视为SGA的引导区,Oracle在内部使用此东西来查找SGA的其余部分。SGA的固定区域包含数千个原子变量,小型数据结构(例如锁存器和指向SGA其余区域的指针)。这些变量以及它们的数据类型,大小和内存地址都列在固定表 X$KSMFSV 中。
注意:更多详细信息,请看以下内容:Overview of the System Global Area (SGA).
0四、程序全局区(Program Global Area)
程序全局区域(PGA)是一个非共享的内存区域,其中包含专门由服务器和后台进程使用的数据和控制信息。Oracle数据库建立服务器进程,以表明客户端程序处理与数据库的链接。在专用服务器环境中,为每一个服务器和启动的后台进程建立一个PGA。每一个PGA都由堆栈空间,哈希区域,位图合并区域和用户全局区域(UGA)组成。当终止与之关联的服务器或后台进程时,将释放PGA。
•在共享服务器环境中,多个客户端用户共享服务器进程。UGA被移入大型池,而PGA仅具备堆栈空间,哈希区域和位图合并区域。
•在专用服务器会话中,PGA由如下组件组成:
‣SQL工做区 (SQL work areas):排序区供排序数据的函数使用,例如ORDER BY和GROUP BY。
‣会话内存 (Session memory):此用户会话数据存储区分配给会话变量,例如登陆信息和数据库会话所需的其余信息。OLAP池管理OLAP数据页,这些数据页等效于数据块。
‣私有SQL区域 (Private SQL area):此区域保存有关已解析的SQL语句的信息以及其余特定于会话的信息以供处理。当服务器进程执行SQL或PL / SQL代码时,该进程使用私有SQL区域存储绑定变量值,查询执行状态信息和查询执行工做区。相同或不一样会话中的多个私有SQL区域能够指向SGA中的单个执行计划。持久区域 (persistent area) 包含绑定变量值。运行时区域 (runtime area) 包含查询执行状态信息。游标是专用SQL区域中特定区域的名称或句柄。您能够将游标视为客户端上的指针,以及服务器端上的状态。由于游标与私有SQL区域紧密相关,因此有时能够互换使用这些术语。
‣堆栈空间 (Stack space):堆栈空间是分配用于保存会话变量和数组的内存。
‣散列区域 (hash area):此区域用于执行表的散列链接。
‣位图合并区域 (bitmap merge area):此区域用于合并从多个位图索引的扫描中检索到的数据。
注意:更多详细信息,请看以下内容:Overview of the Program Global Area (PGA).
0五、后台进程(Background processes)
后台进程是数据库实例的⼀部分,它执⾏操做数据库和使多个⽤户的性能⼤化 所需的维护任务。每一个后台进程执⾏⼀个独特的任务,但与其余进程⼀起⼯做。启动 数据库实例时,Oracle数据库会⾃动建立后台进程。存在的后台进程取决于数据库中 正在使⽤的功能。启动数据库实例时,必要的后台进程将⾃动启动。您能够根据须要 稍后启动可选的后台进程。
全部典型的数据库配置中都存在必要的的后台进程。默认状况下,这些进程使⽤ 初始化参数⽂件中的低配置,开始在读/写模式的数据库实例中运⾏。只读数据库实 例将禁⽤其中⼀些进程。必要的后台进程包括进程监控进程 (PMON),进程管理器进 程 (PMAN),监听器注册进程 (LREG),系统监控进程 (SMON),数据库写进程 (DBWn),检查点进程 (CKPT),可管理性监控进程 (MMON),可管理性监控器精简进 程 (MMNL),恢复程序进程 (RECO) 和⽇志写进程 (LGWR)。
⼤多数可选的后台进程特定于任务或功能。⼀些常⻅的可选过程包括归档进程 (ARCn),做业队列协调进程 (CJQ0),恢复写⼊进程 (RVWR),闪回数据存档进程 (FBDA) 和空间管理协调进程 (SMCO)。
从属进程是表明其余进程执⾏⼯做的后台进程。例如,分派进程 (Dnnn) 和共享 服务器进程 (Snnn)。
注意:得到完整的进程列表,请看以下内容:Background Processes.
本篇内容先更新到这,后续还会有更精彩的内容,我会继续更新,欢迎你们阅读~