用32张图,快速掌握Oracle 26AI体系结构

说明:

本文翻译自:

https://docs.oracle.com/en/database/oracle/oracle-database/26/administration.html
https://docs.oracle.com/en/database/oracle/oracle-database/26/dbiad/db_dbserver.html

图片.png
Oracle AI Database 26ai Technical Architecture

01.Database Server

图片.png

注释
一个 Oracle AI 数据库至少包含一个数据库实例和一个数据库。数据库实例由内存和进程组成,用于管理多租户容器数据库 (CDB)。CDB 由物理存储结构(数据文件)和逻辑数据结构(模式及模式对象)组成。
此图展示了一个单实例数据库架构,其中数据库和数据库实例之间是一一对应的关系。同一台服务器机器上可以存在多个单实例数据库。此配置对于在同一台机器上运行不同版本的 Oracle AI 数据库非常有用。
一个 Oracle 真正应用集群 (Oracle RAC) 数据库架构由多个实例组成,这些实例运行在不同的服务器机器上,但共享同一个数据库。有关 Oracle RAC 架构的更多信息,请参阅 Oracle Real Application Clusters 19c 技术架构。
Oracle Net 监听器是一个数据库服务器进程,它接收来自客户端进程的传入连接,建立与数据库实例的连接,然后将客户端连接移交给服务器进程以直接通信来完成客户端请求。单实例数据库的监听器可以在数据库服务器本地运行,也可以远程运行。
您可以使用多种工具来管理数据库,包括以下工具:
(1)Oracle 数据泵
(2)Oracle 企业管理器
(3)Oracle AI 数据库自动升级
(4)数据库配置助手 (DBCA)
(5)Oracle 恢复管理器 (RMAN)
(6)Oracle 服务器控制工具 (SRVCTL)
(7)SQL Developer
(8)SQL Loader
(9)SQL
Plus

02.Database Instance

图片.png

注释
在 Oracle AI 数据库中,数据库实例是一组管理数据库文件的进程和内存结构。主要的内存结构是系统全局区 (SGA) 和程序全局区 (PGA)。托管全局区 (MGA) 是一个内存框架,可以在受信任的 Oracle 进程组之间共享和协调内存。后台进程对数据库文件进行操作,并利用内存结构来完成其工作。数据库实例仅存在于内存中。
数据库实例还拥有服务器进程,用于代表客户端程序处理与数据库的连接,并为客户端进程执行工作。例如,这些服务器进程解析并运行 SQL 语句,检索结果并将其返回给客户端进程。这类服务器进程也称为前台进程。
在多租户架构中,一个数据库实例与一个多租户容器数据库 (CDB) 相关联。插入到该 CDB(直接插入或通过应用程序容器插入)的所有可插拔数据库 (PDB) 共享同一组后台进程和 SGA。

03.System Global Area

图片.png

注释
系统全局区 (SGA) 是包含一个 Oracle AI 数据库实例的数据和控制信息的内存区域。所有服务器进程和后台进程共享 SGA。启动数据库实例时,会显示为 SGA 分配的内存量。SGA 包括以下数据结构:
(1)共享池
缓存了多个用户可以共享的各种结构;例如,共享池存储了解析的 SQL、PL/SQL 代码、系统参数和数据字典信息。数据库中发生的几乎所有操作都涉及共享池。例如,如果用户运行一条 SQL 语句,那么 Oracle AI 数据库就会访问共享池。
(2)(可选)向量池
要允许向量索引的创建和维护,必须启用 SGA 中一个称为向量池的内存区域。向量池是在 SGA 中分配的内存,用于存储分层可导航小世界 (HNSW) 向量索引及所有相关元数据。它还用于加速倒排文件平面 (IVF) 索引的创建,以及对具有 IVF 索引的基表执行数据操作语言 (DML) 操作。
(3)(可选)闪回缓冲区
与闪回数据库协同工作,以便您可以将数据回退到过去以纠正任何问题。启用闪回数据库后,恢复写入器进程 (RVWR) 启动。RVWR 定期将修改过的块从缓冲区缓存复制到闪回缓冲区,并按顺序将闪回数据库数据从闪回缓冲区写入闪回数据库日志,这些日志会被循环重用。
(4)数据库缓冲区缓存
是存储从数据文件中读取的数据块副本的内存区域。缓冲区是一个主内存地址,缓冲区管理器在此临时缓存当前或最近使用的数据块。所有并发连接到数据库实例的用户都共享对缓冲区缓存的访问。
(5)(可选)True Cache
是 Oracle AI 数据库的一种内存中、一致且自动管理的 SQL 和键值(对象或 JSON)缓存。您可以使频繁访问的表在 True Cache 或主数据库(或两者)的数据库缓冲区缓存中持久存在。
(6)(可选)数据库智能闪存缓存
是针对运行在 Solaris 或 Oracle Linux 上的数据库的数据库缓冲区缓存的内存扩展。它为数据库块提供二级缓存。它既可以提高读取密集型联机事务处理 (OLTP) 工作负载的响应时间和整体吞吐量,也可以提高数据仓库 (DW) 环境中临时查询和批量数据修改的响应时间和整体吞吐量。数据库智能闪存缓存位于一个或多个闪存磁盘设备上,这些设备是使用闪存的固态存储设备。数据库智能闪存缓存通常比额外的主内存更经济,并且比磁盘驱动器快一个数量级。
(7)重做日志缓冲区
是 SGA 中的一个循环缓冲区,保存有关数据库更改的信息。此信息存储在重做条目中。重做条目包含通过 DML、数据定义语言 (DDL) 或内部操作重建(或重做)对数据库的更改所必需的信息。必要时,重做条目用于数据库恢复。
(8)(可选)大池
用于比共享池更适合的大型内存分配。大池可以为共享服务器和 Oracle XA 接口(用于事务与多个数据库交互的情况)的用户全局区 (UGA)、语句并行处理中使用的消息缓冲区、恢复管理器 (RMAN) I/O 工作进程的缓冲区以及延迟插入提供大型内存分配。
(9)(可选)内存区域
使对象(表、分区和其他类型)能够以列式格式存储在内存中。这种格式使扫描、连接和聚合的执行速度比传统的磁盘格式快得多,从而为 OLTP 和 DW 环境提供快速的报表和 DML 性能。此功能对于分析型应用程序特别有用,这些应用程序操作少数列并返回许多行,而不是 OLTP(操作少数行并返回许多列)。
(10)(可选)内存优化池
为基于键的查询提供高性能和可扩展性。内存优化池包含两部分:内存优化缓冲区区和哈希索引。快速查找利用内存优化池中的哈希索引结构,可以快速访问给定表(启用 MEMOPTIMIZE FOR READ)的块,这些块永 久固定在缓冲区缓存中以避免磁盘 I/O。内存优化池中的缓冲区与数据库缓冲区缓存完全分开。配置内存优化行存储时创建哈希索引,Oracle AI 数据库自动维护它。
(11)(可选)共享 I/O 池(SecureFiles)
用于对 SecureFile 大对象 (LOB) 进行大型 I/O 操作。LOB 是一组保存大量数据的数据类型。SecureFile 是一种 LOB 存储参数,允许去重、加密和压缩。
(12)(可选)流池
与 Oracle 数据泵和 Oracle GoldenGate 进程协同工作。流池存储缓冲队列消息。除非专门配置,否则流池的大小从零开始。
(13)(可选)Java 池
用于 Java 虚拟机 (JVM) 中所有特定于会话的 Java 代码和数据。Java 池内存的使用方式取决于 Oracle AI 数据库的运行模式。
(14)固定 SGA
是一个内部管理区域,包含有关数据库和数据库实例状态的一般信息,以及在进程之间通信的信息。

04.Program Global Area

图片.png
注释
程序全局区 (PGA) 是数据库实例中的一个非共享内存区域,包含专 供服务器进程或后台进程使用的数据和控制信息。Oracle AI 数据库创建服务器进程,代表客户端程序处理与数据库的连接。(该图显示了一个服务器进程的 PGA。)
在专用服务器环境中,Oracle AI 数据库为启动的每个服务器进程和后台进程创建一个 PGA。当关联的服务器进程或后台进程终止时,Oracle AI 数据库会释放 PGA。在专用服务器会话中,PGA 由以下组件组成:
(1)SQL 工作区包括用于排序数据(如 ORDER BY 和 GROUP BY)的排序区、用于执行表哈希连接的哈希区,以及用于合并从多个位图索引扫描中检索到的数据的位图合并区。
(2)用户全局区 (UGA) 是一个用户会话数据存储区,用于存储会话变量,例如登录信息以及数据库会话所需的其他信息,以及管理 OLAP 数据页(相当于数据块)的 OLAP 池。
(3)私有 SQL 区保存有关已解析 SQL 语句的信息以及用于处理的其他特定于会话的信息。当服务器进程运行 SQL 或 PL/SQL 代码时,该进程使用私有 SQL 区来存储绑定变量值、查询执行状态信息和查询执行工作区。相同或不同会话中的多个私有 SQL 区可以指向 SGA 中的同一个执行计划。持久区包含绑定变量值。运行时区包含查询执行状态信息。游标是指向私有 SQL 区中特定区域的名称或句柄。您可以将游标视为客户端上的指针和服务器上的状态。由于游标与私有 SQL 区密切相关,因此这两个术语有时可以互换使用。
在共享服务器环境中,多个客户端用户共享服务器进程。UGA 移入大池,PGA 仅保留 SQL 工作区和私有 SQL 区。

05.Background Processes

图片.png
注释
后台进程是数据库实例的一部分,它们执行维护任务以操作数据库并最大化多用户性能。每个后台进程执行一个独特的任务,但与其他进程协同工作。当您启动数据库实例时,Oracle AI 数据库会自动创建后台进程。实际存在的后台进程取决于您正在使用的数据库功能。启动数据库实例时,强制后台进程会自动启动。您可以根据需要在以后启动可选后台进程。
强制后台进程存在于所有典型数据库配置中。这些进程在使用最小配置的初始化参数文件启动的读写数据库实例中默认运行。只读数据库实例会禁用其中一些进程。强制后台进程包括:进程监视器 (PMON)、进程管理器 (PMAN)、监听器注册 (LREG)、系统监视器 (SMON)、数据库写入器 (DBWn)、检查点 (CKPT)、可管理性监视器 (MMON)、可管理性监视器精简版 (MMNL)、恢复器 (RECO) 和日志写入器 (LGWR)。
大多数可选后台进程特定于某些任务或功能。一些常见的可选进程包括:归档器 (ARCn)、作业队列协调器 (CJQ0)、恢复写入器 (RVWR)、闪回数据归档 (FBDA) 和空间管理协调器 (SMCO)。
工作者进程是代表其他进程执行工作的后台进程。这些进程包括调度器 (Dnnn) 和共享服务器 (Snnn) 进程。

06.Shared Pool

图片.png

注释
共享池是数据库实例中系统全局区(SGA)的一个组件,负责缓存各种类型的程序数据。例如,共享池存储了解析后的SQL、PL/SQL代码、系统参数和数据字典信息。数据库中几乎每个操作都涉及共享池。例如,如果用户运行一条SQL语句,那么Oracle AI数据库就会访问共享池。
共享池由以下子组件构成:
(1)库缓存是共享池中的一个内存结构,用于存储可执行的SQL和PL/SQL代码。该缓存包含共享的SQL和PL/SQL区域以及控制结构(如锁和库缓存句柄)。当执行SQL语句时,数据库会尝试重用之前执行过的代码。如果库缓存中存在SQL语句的解析表示形式且可以共享,数据库便会重用该代码。此操作称为软解析或库缓存命中。否则,数据库必须构建应用程序代码的新可执行版本,这称为硬解析或库缓存未命中。
(2)保留池是共享池中的一个内存区域,Oracle AI数据库可使用它来分配大的连续内存块。数据库以块为单位从共享池分配内存。分块允许将大对象(超过5 KB)加载到缓存中,而无需单个连续区域。通过这种方式,数据库减少了因碎片而耗尽连续内存的可能性。
(3)数据字典缓存存储有关数据库对象(即字典数据)的信息。此缓存也称为行缓存,因为它以行而非缓冲区的形式保存数据。
(4)服务器结果缓存是共享池中的一个内存池,包含SQL查询结果缓存和PL/SQL函数结果缓存,它们共享相同的基础架构。SQL查询结果缓存存储查询和查询片段的结果。大多数应用程序都能从这种性能提升中受益。PL/SQL函数结果缓存存储函数结果集。适合结果缓存的候选者是那些频繁调用且依赖于相对静态数据的函数。
(5)其他组件包括队列、闩锁、信息生命周期管理(ILM)位图表、活动会话历史(ASH)缓冲区以及其他较小的内存结构。队列是用于序列化对数据库资源访问的共享内存结构(锁)。它们可以与进程或会话关联。例如控制文件事务、实例恢复、介质恢复、作业队列和行缓存。闩锁用作低级序列化控制机制,以保护SGA中的共享数据结构免受同时访问。例如缓存缓冲区链和重做分配。

07.Large Pool

图片.png
注释

大池是数据库实例和系统全局区(SGA)内的一个可选内存区域。您可以配置大池,为以下区域提供大内存分配:

  • 用于共享服务器环境和Oracle XA接口(用于事务与多个数据库交互的场景)的用户全局区(UGA)(会话内存)。在专用服务器环境中,UGA存储在程序全局区(PGA)中。
  • I/O缓冲区区域,包括I/O服务器进程、用于并行查询操作的消息缓冲区、用于恢复管理器(RMAN)I/O工作进程的缓冲区以及高级排队内存表存储。
  • 延迟插入池由快速摄取特性使用,该特性允许对定义为MEMOPTIMIZE FOR WRITE的表进行高频单行数据插入到数据库。通过快速摄取的插入也称为延迟插入。这些插入最初缓存在大池中,随后在每会话每对象写入量达到1MB后(或60秒后),由空间管理协调器进程(SMCO)和Wxxx工作后台进程异步写入磁盘。会话无法读取此池中缓冲的任何数据,即使在提交后也是如此,直到SMCO后台进程完成清理。当向内存优化表插入第一行时,该池在大池中初始化。如果空间足够,会从大池分配2GB空间。如果大池中空间不足,内部会检测到ORA-4031错误并自动清除。然后会以请求大小的一半重试分配。如果大池中仍然空间不足,会以512M和256M重试分配,之后该特性将被禁用,直到实例重启。一旦池被初始化,其大小保持静态,无法增长或收缩。
  • 并行执行消息池(px msg池)由并行查询执行进程用于相互发送消息。
  • 空闲内存

大池与共享池中的保留空间不同,后者使用与从共享池分配的其他内存相同的最近最少使用(LRU)列表。大池没有LRU列表。内存块被分配后,在使用完毕之前无法释放。

来自用户的请求是构成用户SQL语句一部分的单个API调用。

在专用服务器环境中,一个专用服务器进程处理单个客户端进程的请求。每个服务器进程都使用系统资源,包括CPU周期和内存。

在共享服务器环境中,发生以下操作:

  1. 客户端进程向数据库实例发送请求,调度器进程(Dnnn)接收该请求。
  2. 调度器将请求放入大池中的请求队列。
  3. 下一个可用的共享服务器进程(Snnn)获取该请求。共享服务器进程检查公共请求队列以获取新请求,并按照先进先出的方式拾取新请求。一个共享服务器进程拾取队列中的一个请求。
  4. 共享服务器进程对数据库进行所有必要的调用来完成请求。首先,共享服务器进程访问共享池中的库缓存以验证请求的项目。例如,它检查表是否存在、用户是否拥有正确的权限等等。接着,共享服务器进程访问缓冲区缓存以检索数据。如果数据不在那里,共享服务器进程将访问磁盘。不同的共享服务器进程可以处理每个数据库调用。因此,解析查询、获取第一行、获取下一行以及关闭结果集的请求可能分别由不同的共享服务器进程处理。由于每个数据库调用可能由不同的共享服务器进程处理,UGA必须是共享内存区域,因为UGA包含每个客户端会话的信息。或者反过来说,UGA包含每个客户端会话的信息,并且必须对所有共享服务器进程可用,因为任何共享服务器进程都可能处理任何会话的数据库调用。
  5. 请求完成后,共享服务器进程将响应放入大池中调用方调度器的响应队列。每个调度器都有自己的响应队列。
  6. 响应队列将响应发送给调度器。
  7. 调度器将完成的请求返回给相应的客户端进程。

08.Database Buffer Cache

图片.png

注释

数据库缓冲区缓存,也简称为缓冲区缓存,是数据库实例系统全局区(SGA)中的一个内存区域。它存储从数据文件中读取的数据块的副本。缓冲区是缓冲区管理器临时缓存当前或最近使用过的数据块的主内存地址。所有并发连接到数据库实例的用户共享对缓冲区缓存的访问。缓冲区缓存的目标是优化物理I/O并将频繁访问的块保留在缓冲区缓存中。

当Oracle AI数据库客户端进程首 次需要特定数据时,它会在数据库缓冲区缓存中搜索该数据。如果进程发现数据已在缓存中(缓存命中),它可以直接从内存中读取数据。如果进程在缓存中找不到数据(缓存未命中),它会在访问数据之前将数据块从磁盘上的数据文件复制到缓存的缓冲区中。通过缓存命中访问数据比通过缓存未命中访问数据要快。

缓存中的缓冲区通过一种复杂的算法进行管理,该算法结合了最近最少使用(LRU)列表和接触计数。LRU有助于确保最近使用的块倾向于保留在内存中,从而最大限度地减少磁盘访问。

数据库缓冲区缓存由以下区域组成:

  • 默认池是通常缓存块的位置。默认块大小为8 KB。除非您手动配置单独的池,否则默认池是唯一的缓冲区池。其他池的可选配置对默认池没有影响。
  • (可选)保留池用于预期会被频繁访问、但因空间不足而可能从默认池中老化出去的块。保留缓冲区池的目的是将指定对象保留在内存中以避免I/O操作。表被分配到保留池。它们不会自动从默认池移动到保留池。
  • (可选)回收池用于不经常使用的块。回收池可防止对象在缓存中占用不必要的空间。
  • (可选)非默认缓冲区池用于使用非标准块大小(2 KB、4 KB、16 KB和32 KB)的表空间。每个非默认块大小都有自己的池。Oracle AI数据库管理这些池中块的方式与默认池相同。
  • (可选)数据库智能闪存缓存(闪存缓存)允许您使用闪存设备来增加缓冲区缓存的有效大小,而无需增加更多主内存。闪存缓存可以将数据库缓存中频繁访问的数据存储到闪存中,而不是从磁盘读取数据,从而提升数据库性能。当数据库请求数据时,系统首先在数据库缓冲区缓存中查找。如果未找到数据,系统接着会在数据库智能闪存缓存缓冲区中查找。如果在那里也未找到数据,最后才会在磁盘存储中查找。在Oracle RAC(实时应用集群)环境中,您必须在所有实例上配置闪存缓存,或者完全不配置。
  • 最近最少使用(LRU)列表包含指向脏缓冲区和非脏缓冲区的指针。LRU列表有一个热端和一个冷端。冷缓冲区是最近未使用的缓冲区。热缓冲区是频繁访问且最近使用过的。从概念上讲,只有一个LRU,但为了数据并发性,数据库实际上使用多个LRU。
  • 检查点队列是一个脏缓冲区列表,按照它们基于重做块地址(RBA)顺序被更改的顺序排列。
  • (可选)如果启用了数据库智能闪存缓存,闪存缓冲区区域由一个DEFAULT闪存LRU链和一个KEEP闪存LRU链组成。如果没有数据库智能闪存缓存,当进程尝试访问一个块而该块在缓冲区缓存中不存在时,该块首先会从磁盘读入内存(物理读)。当内存中的缓冲区缓存满时,会基于LRU机制从内存中逐出一个缓冲区。有了数据库智能闪存缓存,当一个干净的内存缓冲区老化出去时,数据库写入器进程(DBWn)会在后台将其内容写入闪存缓存,而缓冲区头部则作为元数据保留在内存中,位于DEFAULT或KEEP闪存LRU列表中,具体取决于FLASH_CACHE对象属性的值。KEEP闪存LRU链将缓冲区头部维护在一个单独的列表上,以防止常规缓冲区头部替换它们。这意味着属于指定为KEEP的对象的闪存缓冲区头部倾向于在闪存缓存中停留更长时间。如果FLASH_CACHE对象属性设置为NONE,系统不会在闪存缓存或内存中保留相应的缓冲区。当再次访问一个已从内存中老化出去的缓冲区时,系统会检查闪存缓存。如果找到该缓冲区,它会从闪存缓存中读回,这仅需从磁盘读取所需时间的一小部分。RAC环境中闪存缓存缓冲区的致性通过与Oracle RAC缓存融合相同的方式来维护。由于闪存缓存是扩展缓存,并且直接路径I/O完全绕过缓冲区缓存,因此此功能不支持直接路径I/O。请注意,系统不会将脏缓冲区放入闪存缓存,因为可能需要将缓冲区读入内存以执行检查点,而写入闪存缓存不计入检查点。

09.In-Memory Area

图片.png
注释

内存区域是数据库实例中一个可选的系统全局区(SGA)组件。它包含内存列存储(IM列存储),该存储通过使用针对快速扫描优化的列式格式,将表和分区存储在内存中。IM列存储使得数据能够同时以传统的行格式(在缓冲区缓存中)和列式格式填充到SGA中。数据库透明地将联机事务处理(OLTP)查询(例如主键查找)发送到缓冲区缓存,并将分析和报表查询发送到IM列存储。在获取数据时,Oracle AI数据库还可以在同一查询中从两个内存区域读取数据。这种双格式架构不会使内存需求加倍。缓冲区缓存经过优化,可以以远小于数据库大小的规模运行。

您只应在IM列存储中填充性能最关键的数据。要将对象添加到IM列存储,请在创建或修改对象时打开其INMEMORY属性。您可以在表空间(针对该表空间中的所有新表和视图)、表、分区、子分区、物化视图或对象内的列子集上指定此属性。

IM列存储使用优化的存储单元(而非传统的Oracle数据块)来管理数据和元数据。内存压缩单元(IMCU)是一个压缩的、只读的存储单元,包含一个或多个列的数据。快照元数据单元(SMU)包含关联IMCU的元数据和事务信息。每个IMCU都映射到一个单独的SMU。

表达式统计信息库(ESS)是一个存储库,用于保存有关表达式计算的统计信息。ESS驻留在SGA中,同时也持久化存储在磁盘上。当启用IM列存储时,数据库会利用ESS来实现其内存表达式(IM表达式)特性。内存表达式单元(IMEU)是物化IM表达式和用户定义的虚拟列的存储容器。请注意,ESS独立于IM列存储。ESS是数据库的一个永 久组件,无法禁用。

从概念上讲,IMEU是其父IMCU的逻辑扩展。正如IMCU可以包含多个列一样,IMEU可以包含多个虚拟列。每个IMEU恰好映射到一个IMCU,并映射到相同的行集。IMEU包含其关联IMCU中数据的表达式结果。当IMCU被填充时,关联的IMEU也会被填充。

一个典型的IM表达式涉及一个或多个列(可能包含常量),并且与表中的行具有一对一的映射关系。例如,针对EMPLOYEES表的IMCU可能包含weekly_salary列的第1-1000行。对于存储在此IMCU中的行,IMEU计算自动检测到的IM表达式weekly_salary 52,以及用户定义的虚拟列quarterly_salary(定义为weekly_salary12)。IMCU中的第三行映射到IMEU中的第三行。

内存区域细分为两个池:

  • 一个1MB的列数据池,用于存储填充到内存中的实际列格式数据(IMCU和IMEU)。
  • 一个64K的元数据池,用于存储有关填充到IM列存储中的对象的元数据(SMU)。

这两个池的相对大小由内部启发式算法决定。内存区域的大部分内存分配给1MB的池。内存区域的大小由初始化参数INMEMORY_SIZE(默认值为0)控制,并且最小大小必须为100MB。从Oracle Database 12.2开始,您可以通过ALTER SYSTEM命令将INMEMORY_SIZE参数增加至少128MB,从而动态增加内存区域的大小。请注意,无法动态缩小内存区域的大小。

Oracle AI数据库内存具有基础级别特性,允许您使用高达16GB的列存储,而不会触发任何许可跟踪。

当表数据首 次被访问或数据库启动时,内存表会在IM列存储中分配IMCU。通过将数据从磁盘格式转换为新的内存列式格式,来创建表的内存副本。每次实例重新启动时都会执行此转换,因为IM列存储副本仅驻留在内存中。完成此转换后,表的内存版本将逐渐可用于查询。如果表部分转换完成,查询可以使用部分内存版本,并访问磁盘以获取其余部分,而无需等待整个表转换完成。

当表中并非所有列都已填充到IM列存储中时,内存混合扫描可以从IM列存储中访问部分数据,并从行存储中访问部分数据。与纯行存储查询相比,这可以将性能提升数个数量级。

自动内存可以在无需用户干预的情况下启用、填充、逐出和重新压缩段。当INMEMORY_AUTOMATIC_LEVEL设置为HIGH时,数据库会根据段的使用模式自动启用和填充段。这种自动化有助于最大化一次可以填充到IM列存储中的对象数量。

为了响应查询和数据操作语言(DML),服务器进程会扫描列数据并更新SMU元数据。后台进程将行数据从磁盘填充到IM列存储中。内存协调器进程(IMCO)启动列数据的后台填充和重新填充。空间管理协调器进程(SMCO)和空间管理工作进程(Wnnn)代表IMCO执行实际的数据填充和重新填充。DML块更改被写入缓冲区缓存,然后写入磁盘。然后,后台进程根据元数据失效和查询请求,将行数据从磁盘重新填充到IM列存储中。

您可以启用内存快速启动特性,将IM列存储中的列数据以压缩列格式写回数据库的表空间。此特性可以加快数据库启动速度。请注意,此特性不适用于IMEU。IMEU始终是根据IMCU动态填充的。

内存深度向量化可以通过在单个SQL运算符内部流水线化物理运算符,并使用单指令多数据(SIMD)技术对其进行向量化,来优化复杂的SQL运算符。此特性默认启用,但您可以通过将INMEMORY_DEEP_VECTORIZATION初始化参数设置为false来禁用它。

10.Multitenant Container Database (CDB)

图片.png

注释

多租户容器数据库(CDB)是容器数据库的集合,其中每个容器都是模式、对象和相关结构的集合。可插拔数据库(PDB)是用户创建的容器,用于存储应用程序(例如人力资源应用程序)的数据和代码。

从用户或应用程序的角度来看,PDB 似乎是一个逻辑上独立的数据库。从操作系统的角度来看,CDB 就是数据库。

每个 CDB 都具有以下容器:

  • 一个根容器,名为 CDB$ROOT,用于存储 Oracle 提供的元数据和公共用户(数据库用户,该用户在该 CDB 所属的每个容器中都是已知的)。根不存储任何用户数据。所有 PDB 都属于根。
  • 一个种子 PDB,名为 PDB$SEED,这是一个系统提供的模板,CDB 可以使用它来创建新的 PDB。您不能修改种子 PDB。
  • 零个或多个用户创建的 PDB。首 次创建 CDB 时,不存在任何 PDB。您可以将多个 PDB 一次性插入到 CDB 中,但不能将一个 PDB 插入到多个 CDB 中。每个 PDB 与插入到同一 CDB 的其他 PDB 完全隔离。用户仅与 PDB 交互,而不与种子 PDB 或根容器交互。
  • 零个或多个应用容器,它们是 CDB 内的可选 PDB 集合,用于存储应用程序的数据和元数据。与应用容器一样,CDB 可以包含多个应用 PDB,并使这些 PDB 能够共享元数据和数据。

在物理层面,容器由物理数据文件组成。每个容器至少有一个数据文件。在逻辑层面,数据库通过称为表空间的逻辑结构在数据文件间分配数据。

CDB 在运行期间还使用多个系统文件。控制文件和联机重做日志文件驻留在 CDB 中,并在所有 PDB 和应用容器之间共享。其他系统文件驻留在 CDB 之外。

注意:非 CDB 在 Oracle Database 21c 中已被弃用,这意味着 Oracle 通用安装器和数据库配置助手(DBCA)无法再创建非 CDB Oracle AI 数据库实例。

11.Application Containers

图片.png

注释

应用程序容器是多租户容器数据库(CDB)中一个可选的、用户创建的组件。应用程序容器为特定于应用程序的可插拔数据库(PDB)存储数据和元数据。

在某些方面,应用程序容器在 CDB 内充当特定于应用程序的 CDB。与 CDB 本身一样,应用程序容器可以包含多个应用程序 PDB,并使这些 PDB 能够共享数据和元数据,其方式与 CDB 根与种子 PDB、用户创建的 PDB 以及插入到 CDB 根的应用程序容器共享数据和元数据的方式相同。

一个 CDB 可以包含零个或多个应用程序容器。一个应用程序容器恰好由一个应用程序根和一个或多个插入到该应用程序根的应用程序 PDB 组成。应用程序根属于 CDB 根。应用程序根既不同于 CDB 根,也不同于标准 PDB,因为它可以存储用户创建的公共对象,这些对象可供插入到该应用程序根的应用程序 PDB 访问。

应用程序种子是应用程序容器内一个可选的、用户创建的 PDB。一个应用程序容器可以有零个或一个应用程序种子。应用程序种子使您能够快速创建应用程序 PDB。它在应用程序容器中的作用与种子 PDB 在 CDB 本身中的作用相同。

在物理层面,容器由物理数据文件组成。每个容器至少有一个数据文件。在逻辑层面,数据库通过称为表空间的逻辑结构在数据文件间分配数据。

典型的应用程序会安装应用程序公共用户、元数据链接的公共对象以及数据链接的公共对象。例如,您可以在一个应用程序容器内创建多个与销售相关的 PDB,这些 PDB 共享一个由一组公共表和表定义组成的应用程序后端。

12.Database Storage Structures

图片.png

注释

多租户容器数据库(CDB)是模式以及模式对象(例如表和索引)的集合。

在物理层面,CDB 将对象存储在数据文件中。您可以使用以下机制来存储数据文件:

  • 操作系统文件系统,这是一种用于存储和检索数据的结构。大多数 Oracle AI 数据库将文件存储在文件系统中。
  • 集群文件系统,这是一种分布式文件系统,是由一组服务器协作以为其客户端提供一致性和高性能的集群。在 Oracle 实时应用集群(Oracle RAC)环境中,集群文件系统使共享存储看起来像是一个在集群环境中由多台计算机共享的单一文件系统。
  • Oracle 自动存储管理(Oracle ASM)。

在逻辑层面,CDB 通过以下结构在数据文件间分配数据:

  • 表空间包含零个或多个段,这些段对应于模式对象。一个表空间可以包含分配给不同模式的段,并且一个模式的段可以跨越多个表空间。在物理层面,一个表空间可以将数据存储在多个数据文件中,但多个表空间不能共享数据文件。每个可插拔数据库(PDB)和应用程序容器都有自己的一组表空间。您可以将用户数据存储在默认的 USERS 表空间中,也可以为特定的应用程序数据或系统数据创建额外的表空间。
  • 段是为特定模式对象分配的区集合。每个消耗存储的模式对象(或对象分区)都有自己的段。一个段可以包含来自多个数据文件的区,但不能跨越多个表空间。
  • 区是逻辑上连续的数据块集合。每个区都在单个数据文件内分配给一个模式对象。默认情况下,当您创建模式对象和段时,Oracle AI 数据库会分配一个初始区。如果初始区变满,数据库会自动为该段分配另一个区。新区不需要位于同一数据文件中。
  • 数据块是数据存储的最小逻辑单元。一个逻辑数据块对应于数据文件内持久存储的特定字节数(例如,2 KB)。

13.Tablespaces

图片.png
注释

表空间是用于段的逻辑存储容器。段是消耗存储空间的数据库对象,例如表和索引。

在多租户容器数据库(CDB)中,每个可插拔数据库(PDB)和应用程序根都有自己的一组永 久表空间,这些表空间对应于物理数据文件:

  • 一个SYSTEM表空间,包含数据字典;包含有关数据库管理信息的表和视图;以及编译后的存储对象,如触发器、过程和包。
  • 一个SYSAUX表空间,它是SYSTEM表空间的辅助表空间。它是许多Oracle AI数据库功能和产品的默认表空间,这些功能和产品以前需要自己的表空间,因此它减少了数据库所需的表空间数量。
  • 一个或多个还原表空间。在本地还原模式(默认)下,数据库会在每个PDB中自动创建一个还原表空间。在共享还原模式下,单实例CDB只有一个活动的还原表空间,而Oracle实时应用集群(Oracle RAC)CDB中每个实例有一个活动的还原表空间。共享还原模式下的所有还原表空间在所有容器的数据字典和相关视图中都是可见的。
  • 零个或多个用户创建的表空间,包含PDB中用户定义的模式和对象的数据。您可以将用户数据存储在默认的USERS表空间中,也可以为特定的应用程序数据或系统数据创建额外的表空间。

每个容器还有一个临时表空间,对应于物理临时文件。CDB根以及每个应用程序根、应用程序PDB和PDB都存在一个默认临时表空间。临时表空间包含仅在一个会话期间持续存在的临时数据。没有永 久模式对象可以驻留在临时表空间中。

14.Schemas and Schema Objects

图片.png

注释

数据库模式是数据结构(称为模式对象)的逻辑容器。每个 Oracle AI 数据库用户帐户拥有一个单一模式,该模式与用户同名。

注意:数据库还存储其他类型的对象,这些对象不包含在模式中。这些对象包括数据库用户帐户、角色、上下文和字典对象。

已分配物理空间的模式对象(如表和索引)存储在数据文件中。在逻辑层面,数据库通过表空间在数据文件间分配数据。模式和表空间之间没有关系:一个表空间可以包含来自不同模式的对象,而一个模式的对象可以包含在不同的表空间中。

模式包括以下主要对象类型:

  • 表以行形式存储数据。表是关系数据库中最重要的模式对象。
  • 索引为表或表集群的每个被索引行包含一个条目,并提供对行的直接、快速访问。
  • 分区是大型表和索引的片段。每个分区有自己的名称,并且可以选择拥有自己的存储特性。
  • 视图是一个或多个表或其他视图中数据的定制化呈现。您可以将它们视为已存储的查询。视图实际上并不包含数据。
  • 序列可供多个用户共享以生成整数。通常,您使用序列来生成主键值。
  • 维度定义列集对之间的父子关系,其中列集的所有列必须来自同一个表。但是,一个列集(称为级别)中的列可以来自与另一个列集中的列不同的表。您可以使用维度对数据(如客户、产品和时间)进行分类。
  • 同义词是其他模式对象的别名。因为同义词只是一个别名,所以除了在数据字典中的定义之外,它不需要任何存储。
  • PL/SQL 是 SQL 的 Oracle 过程化扩展。PL/SQL 子程序是一个命名的 PL/SQL 块,您可以使用一组参数调用它。PL/SQL 包将逻辑上相关的 PL/SQL 类型、变量和子程序分组。

15.Database System Files

图片.png

注释

Oracle AI 数据库使用多个驻留在数据库服务器上的数据库系统文件。这些文件不同于数据文件,数据文件是属于数据库容器的物理文件。

以下文件是数据库启动所必需的:

  • 控制文件存储有关数据文件和联机重做日志文件的元数据(例如,它们的名称和状态)。数据库实例需要此信息才能打开数据库。控制文件还包含在数据库未打开时必须可访问的元数据。每个多租户容器数据库(CDB)都有一个唯一的控制文件,尽管允许有多个相同的副本。可插拔数据库(PDB)没有单独的控制文件。
  • 参数文件定义了数据库实例启动时的配置方式。您可以使用初始化参数文件(pfile)或服务器参数文件(spfile)。
  • 联机重做日志文件在数据库发生变化时存储这些更改,并用于数据恢复。这些文件是 CDB 的一部分。

注意:Oracle 建议您在单独的位置维护控制文件和联机重做日志文件的多个副本,以避免单点故障。这称为多路复用。有关详细信息,请参阅多个控制文件和联机重做日志文件的多个副本。

数据库还使用以下驻留在 CDB 外部的系统文件:

  • 自动诊断存储库(ADR)是一个基于文件的存储库,用于存储数据库诊断数据,例如跟踪文件、转储文件、告警日志、健康监视器报告等。它在多个实例和多个产品之间具有统一的目录结构。数据库、Oracle 自动存储管理(Oracle ASM)、监听器、Oracle Clusterware 以及其他 Oracle 产品或组件将所有诊断数据存储在 ADR 中。每个产品的每个实例将其诊断数据存储在 ADR 内自己的主目录中。
  • (可选)备份文件用于数据库恢复。当介质故障或用户错误损坏或删除了原始文件时,您通常需要恢复备份文件。
  • (可选)归档重做日志文件包含数据库实例生成的数据更改的持续历史记录。您可以使用这些文件和数据库备份来恢复丢失的数据文件。
  • (可选)密码文件使具有 SYSDBA、SYSOPER、SYSBACKUP、SYSDG、SYSKM、SYSRAC 和 SYSASM 角色的用户能够远程连接到数据库实例并执行管理任务。
  • (可选)密钥库(以前称为钱包)是安全的软件容器,用于存储身份验证和签名凭证。Oracle AI 数据库支持软件密钥库、Oracle Key Vault 以及其他兼容 PKCS#11 的密钥管理设备。
  • (可选)块更改跟踪文件包含已更改的块,以提高增量备份的性能。在增量备份期间,恢复管理器(RMAN)使用此文件来识别需要备份的已更改块,而不是扫描所有数据块来识别哪些块已更改。
  • (可选)闪回数据库使用闪回日志来访问数据块的历史版本以及来自归档重做日志的一些信息。这使您能够将数据库恢复到最近过去的某个时间点的状态。闪回数据库要求您为数据库配置快速恢复区,因为闪回日志只能存储在那里。仅当闪回日志可用时,您才能使用闪回数据库,因此您必须预先设置好数据库以创建闪回日志。

16.Automatic Diagnostic Repository (ADR)

图片.png

注释

自动诊断存储库(ADR)是一个系统级的跟踪和日志记录中央存储库,用于存储数据库诊断数据。它包括以下项目:

  • 后台跟踪文件存储来自数据库后台进程的信息。当进程检测到内部错误时,该进程会将有关错误的信息转储到其跟踪文件中。写入跟踪文件的一些信息供数据库管理员使用,而其他信息则供 Oracle 支持服务使用。通常,数据库后台进程跟踪文件的文件名包含 Oracle 系统标识符(SID)、后台进程名称和操作系统进程号。RECO 进程跟踪文件的示例为 mytest_reco_10355.trc。
  • 前台跟踪文件存储来自服务器进程的信息。当进程检测到内部错误时,该进程会将有关错误的信息转储到其跟踪文件中。服务器进程跟踪文件的文件名包含 Oracle SID、字符串 ora 和操作系统进程号。服务器进程跟踪文件名的示例为 mytest_ora_10304.trc。
  • 转储文件是一种特殊类型的跟踪文件,包含有关某个状态或结构的详细时间点信息。转储文件通常是响应事件而一次性输出的诊断数据,而跟踪文件往往是诊断数据的持续输出。
  • 健康监视器报告包括来自健康监视器框架的诊断检查结果。健康检查能够检测文件损坏、物理和逻辑块损坏、还原和重做损坏、数据字典损坏等。健康检查会生成包含检查结果的报告,并在许多情况下提供解决问题的建议。
  • 事件包包含用于将诊断数据上传到 Oracle 支持的信息。包是在 ADR 中存储的元数据集合,指向诊断数据文件以及 ADR 内外的其他文件。创建包时,您需要选择一个或多个要添加到包中的问题。然后,支持工作台会自动将与所选问题相关的问题信息、事件信息和诊断数据(例如跟踪文件和转储)添加到包中。
  • 事件转储包含 Oracle AI 数据库在事件发生时收集的诊断数据。数据库会向为该事件创建的事件目录写入一个或多个转储。事件转储的文件名中也包含事件编号。
  • 告警日志文件是按时间顺序记录的消息和错误日志。Oracle 建议您定期查看告警日志。

17.Backup Files

图片.png
注释

您可以创建以下类型的备份:

  • 逻辑备份包含表、存储过程和其他逻辑数据。您可以使用 Oracle AI 数据库实用程序(如数据泵导出)提取逻辑数据,并将其存储在磁盘上的二进制文件中。逻辑备份可以补充物理备份。
  • 物理备份是物理数据库文件的副本。您可以使用恢复管理器(RMAN)或操作系统实用程序进行物理备份。

使用 RMAN 时,您可以将以下类型的备份格式存储在磁盘上:

  • 映像副本是数据文件、控制文件或归档重做日志文件的逐位磁盘副本。您可以使用操作系统实用程序或 RMAN 创建物理文件的映像副本,并使用任一工具恢复它们。映像副本对磁盘非常有用,因为您可以增量更新它们并在原地进行恢复。
  • 备份集是 RMAN 创建的一种专有格式。它包含一个或多个数据文件、归档重做日志文件、控制文件或服务器参数文件中的数据。备份集的最小单元是一个称为备份片的二进制文件。备份集是 RMAN 可以将备份写入顺序设备(如磁带机)的唯一形式。备份集的一个优点是 RMAN 使用未使用块压缩来节省备份数据文件的空间。备份集仅包含数据文件中已用于存储数据的那些块。备份集还可以被压缩、加密、发送到磁带。它们可以使用数据文件副本无法实现的先进未使用空间压缩。

RMAN 还可以与媒体管理库(MML)或系统备份到磁带(SBT)软件接口,这些软件可以创建备份到磁带、Oracle 数据库备份云服务或零数据丢失恢复一体机(通常称为恢复一体机)。

18.Process Monitor Process (PMON)

图片.png
注释

进程监视器进程(PMON)定期扫描所有进程,以发现任何异常终止的进程。PMON 将清理工作委托给清理主进程(CLMN),后者定期执行终止进程和会话的清理工作。CLMN 将任务委托给清理工作进程(CLnn)。

PMON 作为操作系统进程运行,而非线程。除了数据库实例之外,PMON 还在 Oracle 自动存储管理(Oracle ASM)实例和 Oracle ASM 代理实例上运行。

19.Process Manager Process (PMAN)

图片.png

注释

进程管理器进程(PMAN)负责监督多个后台进程,包括共享服务器、池化服务器和作业队列进程。PMAN 根据需要监视、生成和停止以下类型的进程:

  • 调度器和共享服务器进程
  • 用于数据库常驻连接池的连接代理和池化服务器进程
  • 作业队列进程
  • 可重启的后台进程

PMAN 作为操作系统进程运行,而非线程。除了数据库实例之外,PMAN 还在 Oracle 自动存储管理(Oracle ASM)实例和 Oracle ASM 代理实例上运行。

20.Listener Registration Process (LREG)

图片.png
注释

监听器注册进程(LREG)将有关实例、服务、处理程序和端点的信息通知给监听器。

LREG 可以作为线程或操作系统进程运行。除了数据库实例之外,LREG 还在 Oracle 自动存储管理(Oracle ASM)实例和 Oracle 实时应用集群(Oracle RAC)上运行。

21.System Monitor Process (SMON)

图片.png

注释

系统监视器进程(SMON)执行许多数据库维护任务,包括以下内容:

  • 根据还原空间使用统计信息,通过对还原段进行联机、脱机和收缩来维护还原表空间。作为还原维护的一部分,SMON 还帮助清理较大的已终止事务,例如,当 PMON 检测到拥有事务的进程已终止并开始清理时。SMON 可能会征用并行查询进程来帮助并行回滚这些事务。
  • 当数据字典处于瞬时不一致状态时,对其进行清理。
  • 维护用于支持 Oracle 闪回特性的系统更改号(SCN)到时间的映射表。

SMON 能够容受后台活动期间发生的内部和外部错误。SMON 可以作为线程或操作系统进程运行。在 Oracle 实时应用集群(Oracle RAC)数据库中,一个实例的 SMON 进程可以为其他已失败的实例执行实例恢复。

22.Database Writer Process (DBWn)

图片.png
注释

数据库写入器进程(DBWn)读取数据库缓冲区缓存并将修改后的缓冲区写入数据文件。它还处理检查点、文件打开同步以及已写入块记录的日志记录。当配置了数据库智能闪存缓存(闪存缓存)时,DBWn 也会读取该缓存。

在许多情况下,DBWn 写入的块分散在磁盘各处,因此这些写入往往比日志写入器进程(LGWR)执行的顺序写入要慢。DBWn 尽可能执行多块写入以提高效率。多块写入中写入的块数因操作系统而异。

初始化参数 DB_WRITER_PROCESSES 指定了数据库写入器进程的数量。可以有 1 到 100 个数据库写入器进程。前 36 个数据库写入器进程的名称为 DBW0-DBW9 和 DBWa-DBWz。第 37 到第 100 个数据库写入器进程的名称为 BW36-BW99。数据库会为 DB_WRITER_PROCESSES 参数选择合适的默认设置,或根据 CPU 数量和处理器组调整用户指定的设置。

23.Checkpoint Process (CKPT)

图片.png

注释

检查点进程(CKPT)在特定时间通过触发数据库写入器进程(DBWn)来启动检查点请求,以读取数据库缓冲区缓存并将修改后的缓冲区写入数据文件。在单个检查点请求完成后,CKPT 更新数据文件头和控制文件,以记录最近的检查点。

CKPT 每三秒检查一次内存使用量是否超过初始化参数 PGA_AGGREGATE_LIMIT 的值,如果超过,则采取相应措施。

CKPT 可以作为线程或操作系统进程运行。除了数据库实例之外,CKPT 还在 Oracle 自动存储管理(Oracle ASM)实例上运行。

24.Manageability Monitor Process (MMON) and Manageability Monitor Lite Process (MMNL)

图片.png

注释

可管理性监视器进程(MMON)和可管理性监视器轻量级进程(MMNL)执行与自动工作负载存储库(AWR)相关的任务。AWR 是一个历史性能数据存储库,包含系统、会话、单个 SQL 语句、段和服务的累积统计信息。它提供问题检测和自动调优功能。AWR 驻留在 SYSAUX 表空间中。AWR 报告可以在 CDB 根或任何 PDB 中生成。有关 AWR 如何在多租户容器数据库(CDB)中工作的更多信息,请参阅关于在 CDB 中使用可管理性特性。

MMON 从系统全局区(SGA)收集内存统计信息,对其进行过滤,并每隔 60 分钟(或您选择的其他时间间隔)在 AWR 中创建这些统计信息的快照。它还执行自动数据库诊断监视器(ADDM)分析,并为超过阈值的度量发出警报。

MMNL 收集 会话统计信息(例如用户 ID、状态、机器及其正在处理的 SQL)并将其存储在活动会话历史(ASH)缓冲区中,该缓冲区是 SGA 中 共享池的一部分。具体来说,MMNL 每秒对 VSESSION 和 VSESSION_WAIT 视图进行采样,然后将该数据记录在 ASH 缓冲区内的 V$ACTIVE_SESSION_HISTORY 视图中。MMNL 不会对非活动会话进行采样。ASH 是内存中的一个循环缓冲区,因此在需要时,较新的信息会覆盖较早的信息。当 ASH 缓冲区变满或 MMON 拍摄快照时,MMNL 会将 ASH 缓冲区中的内容刷新(清空)到 AWR 中的 DBA_HIST_ACTIVE_SESS_HISTORY 视图中。由于空间资源宝贵,MMNL 仅每十个条目中刷新一个。MMNL 还负责计算度量值。

MMON 和 MMNL 都可以作为线程或操作系统进程运行。除了数据库实例之外,MMON 和 MMNL 还在 Oracle 自动存储管理(Oracle ASM)实例上运行。

25.Recoverer Process (RECO)

图片.png

注释

恢复器进程(RECO)负责解决分布式数据库系统中因网络或系统故障而挂起的分布式事务。分布式数据库系统是一组数据库服务器的集合,对应用程序而言可视为单一数据源。

节点的 RECO 进程自动连接到涉及存疑分布式事务的其他数据库。当 RECO 重新建立数据库之间的连接时,它会自动解决所有存疑事务,并从每个数据库的待定事务表中删除与已解决事务相对应的所有行。

RECO 可以作为线程或操作系统进程运行。

26.Log Writer Process (LGWR)

图片.png

注释

服务器进程将数据块的更改写入数据库缓冲区缓存,并将重做数据写入重做日志缓冲区。日志写入器进程(LGWR)将重做日志条目按顺序从重做日志缓冲区写入联机重做日志。如果数据库配置了多路复用重做日志,则 LGWR 会将相同的重做日志条目写入重做日志文件组的所有成员。

LGWR 处理那些速度非常快或必须协调的操作。它将可从并发操作中受益的操作委托给日志写入器工作进程(LGnn),这些进程编号为 LG00-LG99。这些操作包括将重做信息从日志缓冲区写入重做日志文件,以及将写入完成的消息通知给正在等待的服务器进程。

重做传输工作进程(TTnn),编号为 TT00-TTzz,负责将重做信息从当前的联机重做日志和备用重做日志传输到配置为异步(ASYNC)重做传输的远程备用目的地。

LGWR 可以作为线程或操作系统进程运行。除了数据库实例之外,LGWR 还在 Oracle 自动存储管理(Oracle ASM)实例上运行。在 Oracle 实时应用集群(Oracle RAC)配置中,每个数据库实例都有自己的一组重做日志文件。

27.Archiver Process (ARCn)

图片.png

注释

归档进程(ARCn)仅在数据库处于 ARCHIVELOG 模式且启用了自动归档时才存在,在这种情况下,ARCn 会自动归档联机重做日志文件。日志写入器进程(LGWR)在联机重做日志组被归档之前,不能重用或覆盖该组。

数据库会根据需要启动多个 ARCn 进程,以确保已填满的联机重做日志的归档不会落后。可能的进程包括 ARC0-ARC9 和 ARCa-ARCt(共 31 个可能的目的地)。

初始化参数 LOG_ARCHIVE_MAX_PROCESSES 指定了数据库初始调用的 ARCn 进程数量。如果您预计归档工作负载很重(例如在批量加载数据期间),可以增加 ARCn 进程的最大数量。同时也可以有多个归档日志目标位置。Oracle 建议为每个目标位置至少配置一个 ARCn 进程。

ARCn 可以作为线程或操作系统进程运行。

28.Job Queue Coordinator Process (CJQ0)

图片.png
注释

作业队列协调器进程(CJQ0)从数据字典中选择需要运行的作业,并生成作业队列工作进程(Jnnn)来执行这些作业。Oracle Scheduler 会根据需要自动启动和停止 CJQ0。初始化参数 JOB_QUEUE_PROCESSES 指定了可为运行作业创建的最大进程数量。CJQ0 仅根据待运行作业数量和可用资源启动所需数量的作业队列进程。

Jnnn 进程负责运行由作业协调器分配的作业。当工作进程选择作业进行处理时,它们会执行以下操作:

  • 收集运行作业所需的所有元数据(例如,程序参数和权限信息)。
  • 以作业所有者的身份启动一个数据库会话,启动一个事务,然后开始运行作业。
  • 在作业完成后提交并结束事务。
  • 关闭会话。

当作业完成后,工作进程会执行以下操作:

  • 如果需要,重新安排作业。
  • 更新作业表中的状态,以反映作业是已完成还是计划再次运行。
  • 向作业日志表中插入一条条目。
  • 更新运行计数,并在必要时更新失败和重试计数。
  • 执行清理。
  • 寻找新的工作。(如果没有,它们将进入休眠状态。)

CJQ0 和 Jnnn 都可以作为线程或操作系统进程运行。

29.Recovery Writer Process (RVWR)

图片.png
注释

当您使用闪回数据库时,恢复写入器进程(RVWR)会从系统全局区(SGA)中的闪回缓冲区读取闪回数据,并将其写入闪回日志。也就是说,只要您拥有所需的闪回日志,它就可以将事务从数据库的当前状态回退到过去的某个时间点。

RVWR 可以作为线程或操作系统进程运行。

30.Flashback Data Archiver Process (FBDA)

图片.png

注释

当您使用闪回数据库时,闪回数据归档进程(FBDA)会在表的整个生命周期内跟踪和存储其事务变更。通过这种方式,您可以闪回表,将它们恢复到过去某个时间点的状态。

当修改已跟踪表的事务提交时,FBDA 会读取数据库缓冲区缓存中的还原块以及数据文件中的还原段。然后,它会筛选出与标记为归档的对象相关的内容,并将这些还原信息复制到数据文件中的闪回数据归档(表空间)中。FBDA 维护当前行的元数据,并跟踪已归档的数据量。

FBDA 自动管理闪回数据归档的空间、组织(分区表空间)和保留策略。此外,FBDA 还会跟踪已跟踪事务归档的进度。

FBDA 可以作为线程或操作系统进程运行。

31.Space Management Coordinator Process (SMCO)

图片.png
注释

可选的空間管理協調器进程(SMCO)负责调度各种空间管理任务,包括主动空间分配和空间回收。SMCO 动态生成空间管理工作进程(Wnnn)来执行这些任务。启动后,工作进程充当自治代理。完成任务后,工作进程会自动从队列中选取另一项任务。在空闲较长时间后,该进程会自行终止。

Wnnn 工作进程(命名为 W001、W002 等)代表空间管理以及 Oracle AI 数据库内存选项执行任务。

对于空间管理,Wnnn 进程在后台执行空间管理任务,包括以下内容:

  • 基于空间使用增长分析,为本地管理的表空间和 SecureFiles 段预分配空间。
  • 创建和管理临时表空间元数据,并回收孤立的临时段中的空间。
  • 回收已删除段中的空间。
  • 执行快速摄取延迟插入。

对于 Oracle AI 数据库内存选项,Wnnn 进程执行以下任务:

  • 为优先级为低/中/高/关键的内存启用对象进行预填充,并为内存协调器后台进程(IMCO)重新填充内存对象。
  • 响应引用内存启用对象的查询和 DML,为 IMCO 前台进程启动内存填充和重新填充任务。

SMCO 和 Wnnn 都可以作为线程或操作系统进程运行。

32.Dispatcher Process (Dnnn) and Shared Server Process (Snnn)

图片.png
注释

在共享服务器环境中,调度器进程(Dnnn)将多个传入的网络会话请求定向到共享服务器进程(Snnn)池。您可以为单个数据库实例创建多个调度器进程。

Oracle Net 监听器进程建立与调度器的连接。当客户端进程发出需要共享服务器进程的连接请求时,监听器会返回调度器的地址,以便客户端进程在连接建立后可以直接与调度器通信。

调度器将客户端请求放入数据库实例系统全局区(SGA)的大池中的请求队列里。下一个可用的共享服务器进程拾取该请求并进行处理。请求完成后,共享服务器进程将响应放入大池中调用方调度器的响应队列,然后响应队列将响应发送给调度器。调度器将完成的请求返回给客户端进程。

Snnn 和 Dnnn 都可以作为线程或操作系统进程运行。除了数据库实例之外,Dnnn 也在共享服务器环境中运行。

参考:

https://docs.oracle.com/en/database/oracle/oracle-database/26/administration.html
https://docs.oracle.com/en/database/oracle/oracle-database/26/dbiad/db_dbserver.html
https://docs.oracle.com/en/database/oracle/oracle-database/26/dbiad/db_dbinstance.html
https://docs.oracle.com/en/database/oracle/oracle-database/26/dbiad/db_sga.html
https://docs.oracle.com/en/database/oracle/oracle-database/26/dbiad/db_pga.html
https://docs.oracle.com/en/database/oracle/oracle-database/26/dbiad/db_backgroundprocesses.html
https://docs.oracle.com/en/database/oracle/oracle-database/26/dbiad/db_sharedpool.html
https://docs.oracle.com/en/database/oracle/oracle-database/26/dbiad/db_largepool.html
https://docs.oracle.com/en/database/oracle/oracle-database/26/dbiad/db_dbbuffercache.html
https://docs.oracle.com/en/database/oracle/oracle-database/26/dbiad/db_inmemoryarea.html
https://docs.oracle.com/en/database/oracle/oracle-database/26/dbiad/db_cdb.html
https://docs.oracle.com/en/database/oracle/oracle-database/26/dbiad/db_appcontainer.html
https://docs.oracle.com/en/database/oracle/oracle-database/26/dbiad/db_datafiles.html
https://docs.oracle.com/en/database/oracle/oracle-database/26/dbiad/db_tablespaces.html
https://docs.oracle.com/en/database/oracle/oracle-database/26/dbiad/db_schemas.html
https://docs.oracle.com/en/database/oracle/oracle-database/26/dbiad/db_dbfiles.html
https://docs.oracle.com/en/database/oracle/oracle-database/26/dbiad/db_adr.html
https://docs.oracle.com/en/database/oracle/oracle-database/26/dbiad/db_backupfiles.html
https://docs.oracle.com/en/database/oracle/oracle-database/26/dbiad/db_PMON.html
https://docs.oracle.com/en/database/oracle/oracle-database/26/dbiad/db_PMAN.html
https://docs.oracle.com/en/database/oracle/oracle-database/26/dbiad/db_LREG.html
https://docs.oracle.com/en/database/oracle/oracle-database/26/dbiad/db_SMON.html
https://docs.oracle.com/en/database/oracle/oracle-database/26/dbiad/db_DBWn.html
https://docs.oracle.com/en/database/oracle/oracle-database/26/dbiad/db_CKPT.html
https://docs.oracle.com/en/database/oracle/oracle-database/26/dbiad/db_MMON_MMNL.html
https://docs.oracle.com/en/database/oracle/oracle-database/26/dbiad/db_RECO.html
https://docs.oracle.com/en/database/oracle/oracle-database/26/dbiad/db_LGWR.html
https://docs.oracle.com/en/database/oracle/oracle-database/26/dbiad/db_ARCn.html
https://docs.oracle.com/en/database/oracle/oracle-database/26/dbiad/db_CJQ0.html
https://docs.oracle.com/en/database/oracle/oracle-database/26/dbiad/db_RVWR.html
https://docs.oracle.com/en/database/oracle/oracle-database/26/dbiad/db_FBDA.html
https://docs.oracle.com/en/database/oracle/oracle-database/26/dbiad/db_SMCO.html
https://docs.oracle.com/en/database/oracle/oracle-database/26/dbiad/db_Dnnn_Snnn.html

欢迎关注我的公众号《 IT小Chen


请使用浏览器的分享功能分享到微信等