[ORACLE] Oracle Database 19c 架构
1.数据库服务器 Database Server
2. 数据库实例 Database Instance
3.系统全局区 System Global Area
4.程序全局区 Program Global Area
5.后台进程 Background processes
程序全局区域(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):此区域用于合并从多个位图索引的扫描中检索到的数据。
6.共享池 shared pool
•库⾼速缓存 (Library cache):是⼀种共享池内存结构,⽤于存储可执⾏的 SQL和PL/SQL代码。该缓存包含共享的SQL和PL/SQL区域以及控制结构,例如锁和库缓存句柄。当执⾏SQL语句时,数据库尝试重⽤以前执⾏的代码。如果库⾼速缓存中存在SQL语句的已解析表示形式并且可以共享,则数据库将重⽤代码。此操作称为软解析或库⾼速缓存命中。否则,数据库必须构建应⽤程序代码的新的可执⾏版本,这称为硬解析或库⾼速缓存未命中。
•保留池 (Reserved pool):是共享池中的⼀个内存区域,Oracle数据库可使⽤ 该内存区域来分配连续的⼤块内存。数据库从共享池中按照Chunk⽅式分配内存。Chunk允许将⼤型对象(超过5 KB)加载到缓存中,⽽⽆需单个连续区域。这样,数据库减少了由于碎⽚⽽耗尽连续内存的可能性。
•数据字典⾼速缓存 (Data dictionary cache):存储有关数据库对象的信息(即字典数据)。此缓存也称为⾏缓存,因为它将数据保存为⾏⽽不是缓冲区。
•服务器结果缓存 (Server result cache):是共享池中的⼀个内存池,并保存结果集。服务器结果缓存包含SQL查询结果缓存和PL/SQL函数结果缓存,它们共享相同的基础结构。SQL查询结果缓存存储查询和查询⽚段的结果。⼤多数应⽤程序都受益于这种性能改进。PL/SQL函数结果缓存存储函数结果集。结果缓存的良好候 选者是经常调⽤的函数,这些函数依赖于相对静态的数据。
•其他组件 (Other components):包括队列,锁存器,信息⽣命周期管理 (ILM) 位图表,活动会话历史记录 (ASH) 缓冲区和其他次要内存结构。排队是共享 的内存结构(锁),⽤于序列化对数据库资源的访问。它们可以与会话或事务相关 联。例如:控制⽂件事务,数据⽂件,实例恢复,介质恢复,事务恢复,作业队列等。锁存器⽤作低级序列化控制机制,⽤于保护SGA中的共享数据结构免于同时访问。例如:⾏⾼速缓存对象,库⾼速缓存pin和⽇志⽂件并⾏写⼊。
7. ⼤池Large Pool
- ⽤户全局区域 (UGA):共享服务器和Oracle XA接⼝的会话内存(⽤于事务与多个数据库交互)
- I/O 缓冲区 (I/O Buffer Area):I/O服务器进程,并⾏查询操作中使⽤的消息缓冲区,Recovery Manager (RMAN) I/O从属进程的缓冲区,以及存储⾼级排队内存表。
- 延迟插⼊池 (Deferred Inserts Pool):快速提取功能可将数据库中定义为MEMOPTIMIZE FOR WRITE的表进⾏⾼频单⾏数据插⼊。快速摄取的插⼊物也称 为延迟插⼊物。它们初在⼤缓冲池中缓冲,然后在每个对象每个会话每次写⼊1MB或60秒后由空间管理协调器 (SMCO) 和Wxxx从属后台进程异步写⼊磁盘。在SMCO后台进程进⾏扫描之前,任何会话(包括写⼊的会话)都⽆法读取该缓冲池中缓冲的任⼀数据,即使已提交的会话。该池在⼤型池中被初始化是在第⼀⾏数据 插⼊memoptimized 表时进⾏。当有⾜够的空间时,将从⼤型池中分配2G。如果⼤型池中没有⾜够的空间,则会在内部发现并⾃动清除ORA-4031,然后使⽤⼀半的 请求内存⼤⼩重试分配。如果⼤型池中仍然没有⾜够的空间,则使⽤512M和256M 重试分配,然后禁⽤该功能,直到重新启动实例。初始化池后,⼤⼩将保持不变。它不能增⻓或收缩。
- 可⽤内存
⼤型池与共享池中的保留空间不同,共享池中的保留空间与从共享池分配的其他 内存使⽤相同的近少使⽤ (LRU) 列表。⼤池没有LRU列表。内存已分配,在使⽤完之前⽆法释放。
来⾃⽤户的请求是单个API调⽤,属于⽤户的SQL语句。在专⽤服务器环境中,⼀个服务器进程处理单个客户端进程的请求。每个服务器进程都使⽤系统资源,包括CPU周期和内存。在共享服务器环境中,将发⽣以下操作:
- 客户端应⽤程序向数据库实例发送请求,并且分派进程接收该请求。
- 分派进程将请求放在⼤池中的请求队列上。
- 下⼀个可⽤的共享服务器进程将处理该请求。共享服务器进程检查公共请求 队列中是否有新请求,并以先进先出的⽅式接收新请求。⼀个共享服务器进 程在队列中接收⼀个请求。
- 共享服务器进程对数据库进⾏所有必要的调⽤以完成请求。⾸先,共享服务器进程访问共享池中的库缓存以验证请求的项⽬;例如,它检查表是否存在,⽤户是否具有正确的特权等等。接下来,共享服务器进程访问缓冲区⾼速缓存以检索数据。如果数据不存在,则共享服务器进程将访问磁盘。不同的共享服务器进程可以处理每个数据库调⽤。因此,解析查询,获取第⼀⾏,获取下⼀⾏以及关闭结果集的请求可能分别由不同的共享服务器进程处理。由于不同的共享服务器进程可能会处理每个数据库调⽤,因此⽤户全局区域 (UGA) 必须是共享内存区域,因为UGA包含有关每个客户端会话的信 息。反过来说,UGA包含有关每个客户端会话的信息,并且必须对所有共享服务器进程可⽤,因为任何共享服务器进程都可以处理任何会话的数据库调⽤。
- 请求完成后,共享服务器进程将响应放置在⼤型池中的呼叫分派进程的响应队列上。每个分派进程都有⾃⼰的响应队列。
- 响应队列将响应发送到分派进程。
- 分派进程将完成的请求返回到适当的客户端应⽤程序。
8. 数据库⾼速缓冲区 Database Buffer Cache
⾼速缓存中的缓冲区由复杂算法管理,该算法使⽤近少使⽤ (LRU) 列表和 Touch Count算法的组合。LRU有助于确保近使⽤的块倾向于保留在内存中,以 ⼤程度地减少磁盘访问。
数据库⾼速缓冲区包括以下内容:
- 默认池 (Default pool):是通常缓存块的位置。默认块⼤⼩为8 KB。除⾮您⼿动配置单独的池,否则默认池是唯⼀的缓冲池。其他池的可选配置对默认池⽆效。
- 保留池 (Keep pool):适⽤于经常访问但由于空间不⾜⽽在默认池中过期的块。保留缓冲池的⽬的是在内存中保留指定的对象,从⽽避免I/O操作。
- 回收池 (Recycle pool):⽤于不经常使⽤的块。回收池可防⽌指定的对象占⽤缓存中不必要的空间。
- ⾮默认缓冲池 (Non-default buffer pools):适⽤于使⽤2 KB,4 KB,16 KB 和32 KB⾮标准块⼤⼩的表空间。每个⾮默认块⼤⼩都有其⾃⼰的池。Oracle数据库以与默认池相同的⽅式管理这些池中的块。
- 数据库智能闪存缓存 (Flash cache):使您可以使⽤闪存设备来增加缓冲区缓 存的有效⼤⼩,⽽⽆需添加更多主内存。闪存缓存可以通过将数据库缓存的需频繁 访问的数据存储到闪存中⽽不是从磁盘读取数据来提⾼数据库性能。当数据库请求 数据时,系统⾸先在数据库缓冲区⾼速缓存中查找。如果找不到数据,则系统将在 数据库智能闪存缓存中查找。如果它在那⾥找不到数据,则只会在磁盘存储中查 找。您必须在Oracle Real Application Clusters环境中的所有实例上配置闪存缓存, 或者不配置任何节点的闪存存储。
- 最近最少使⽤列表(LRU):包含指向脏缓冲区和⾮脏缓冲区的指针。LRU 列表有⼀个热端和⼀个冷端。冷缓冲区是近未使⽤过的缓冲区。热缓冲区经常被 访问并且近已经被使⽤。从概念上讲,只有⼀个LRU,但是对于数据并发,数据 库实际上使⽤了多个LRU。
- 检查点队列 (Checkpoint queue):检查点队列是⼀个链表结构,是由缓冲区 头部结构构成;当数据块被修改后,缓冲区通过此链表结构来跟踪数据块的修改。链表的顺序是根据早应⽤于该数据块的RBA(Redo Block Address)地址排序得到的。
- Flash缓冲区 (Flash Buffer Area):由DEFAULT Flash LRU链和KEEP Flash LRU链组成。如果没有数据库智能闪存缓存,则当进程尝试访问某个块并且该块在 缓冲区缓存中不存在时,该块将⾸先从磁盘读⼊内存(物理读取)。当内存中缓冲 区⾼速缓存已满时,将根据近少使⽤ (LRU) 机制将缓冲区从内存中逐出。使⽤ Database Smart Flash Cache,当⼲净的内存中缓冲区过期时,该缓冲区的内容将通过Database Writer进程 (DBWn) 在后台写⼊闪存中,并且缓冲区头作为元数据保留在内存中DEFAULT闪存或KEEP闪存LRU列表,具体取决于FLASH_CACHE对象属性的值。KEEP闪存LRU列表⽤于将缓冲区头保留在单独的列表上,以防⽌常规缓冲区头替换它们。因此,属于指定为KEEP的对象的闪存缓冲区标头倾向于在闪存缓存中保留更⻓时间。如果将FLASH_CACHE对象属性设置为NONE,则系统不会在闪存缓存或内存中保留相应的缓冲区。当再次访问已过期的内存缓冲区时,系统将检查闪存缓存。如果找到了缓冲区,它将从闪存缓存中读回它,这仅花费从磁 盘读取的时间的⼀⼩部分。跨实时应⽤程序群集 (RAC) 的闪存缓存缓冲区的⼀致性 与缓存融合的维护⽅式相同。因为闪存⾼速缓存是扩展⾼速缓存,并且直接路径I/O 完全绕过了缓冲区⾼速缓存,所以此功能不⽀持直接路径I/O。请注意,系统不会将 脏缓冲区放⼊闪存缓存中,因为它可能必须将缓冲区读取到内存中才能对它们进⾏ 检查点,因为写⼊闪存缓存不会计⼊检查点。
9 内存中列式存储区 In-Memory Area
In-Memory存储区是⼀个可选的SGA组件,其中包含内存中列存储(IM列存 储),该存储区使⽤针对快速扫描进⾏了优化的列格式将表和分区存储在内存中。IM 列存储使数据能够以传统的⾏格式(在缓冲区⾼速缓存中)和列格式同时在SGA中填充。数据库透明地将在线事务处理 (OLTP) 查询(例如主键查找)发送到缓冲区⾼速缓存,并将分析和报告查询发送到IM列存储。在获取数据时,Oracle数据库还可以从同⼀查询中的两个内存区域读取数据。双格式体系结构不会使内存需求加倍。缓冲区⾼速缓存经过优化,可以以⽐数据库⼩得多的⼤⼩运⾏。
您应该仅在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_salary * 12。IMCU中的第三⾏下映 射到IMEU中的第三⾏下。
In-Memory区细分为两个池:⼀个1MB列式数据池,⽤于存储填充到内存中的实 际列格式数据 (IMCU和IMEU),以及⼀个64K元数据池,⽤于存储有关对象的元数 据。填充到IM列存储中。这两个库的相对⼤⼩由内部启发算法确定。In-Memory区中 的⼤部分内存都分配给1MB池。内存区域的⼤⼩由初始化参数INMEMORY_SIZE(默认值为0)控制,并且⼩⼤⼩必须为100MB。从Oracle Database 12.2开始,您可以通过ALTER SYSTEM命令将INMEMORY_SIZE参数增加⾄少128MB,来动态增加内存 区域的⼤⼩。请注意,⽆法动态缩⼩内存区域的⼤⼩。
In-Memory表在⾸次访问表数据或数据库启动时会获取在IM列存储中分配的IMCU。通过从磁盘格式转换为新的内存列式格式,可以创建表的内存副本。每次实例重新启动时都会完成此转换,因为IM列存储副本仅驻留在内存中。完成此转换后,表 的内存版本逐渐可⽤于查询。如果对表进⾏了部分转换,则查询能够使⽤部分内存版本并转到磁盘进⾏其余操作,⽽不必等待整个表都被转换。
为了响应查询和数据操作语⾔ (DML),服务器进程扫描列数据并更新SMU元数据。后台进程将磁盘中的⾏数据填充到IM列存储中。In-Memory协调进程 (IMCO) 是启动后台填充和重新填充列式数据的后台进程。空间管理协调进程 (SMCO) 和空间管理⼯作进程 (Wnnn) 是后台进程,它们代表IMCO实际填充和重新填充数据。DML块更改将写⼊缓冲区⾼速缓存,然后再写⼊磁盘。然后,后台进程根据元数据失效和查询请求将磁盘中的⾏数据重新填充到IM列存储中。
您可以启⽤ In-Memory 快速启动功能,以将IM列存储中的列数据以压缩列格式写回到数据库中的表空间。此功能使数据库启动更快。请注意,此功能不适⽤于 IMEU,它们总是从IMCU动态填充。
10 数据库数据⽂件 Database Data Files
数据库是⼀组存储⽤户数据和元数据的物理⽂件。元数据由有关数据库服务器的结构,配置和控制信息组成。您可以将数据库设计为多租户容器数据库 (CDB) 或⾮容器数据库 (non-CDB)(20c中只⽀持多租户结构)。
CDB由⼀个CDB根容器(也称为根),唯⼀的⼀个种⼦可插⼊数据库(种⼦ PDB),零个或多个⽤户创建的可插拔数据库(简称为PDB)以及零个或多个应⽤程序容器组成。整个CDB称为系统容器。对于⽤户或应⽤程序,PDB在逻辑上显示为单 独的数据库。
CDB根容器名为CDB $ ROOT,包含多个数据⽂件,控制⽂件,重做⽇志⽂件, 闪回⽇志和归档的重做⽇志⽂件。数据⽂件存储与所有PDB共享的Oracle提供的元数 据和普通⽤户(每个容器中已知的⽤户)。
种⼦PDB名为PDB $ SEED,是系统提供的PDB模板,其中包含可⽤于创建新 PDB的多个数据⽂件。
常规PDB包含多个数据⽂件,这些⽂件包含⽀持应⽤程序所需的数据和代码。例 如,⼈⼒资源应⽤程序。⽤户仅与PDB交互,⽽不与种⼦PDB或根容器交互。您可以在CDB中创建多个PDB。多租户体系结构的⽬标之⼀是每个PDB与应⽤程序具有⼀对 ⼀的关系。
应⽤程序容器是CDB中⽤于存储应⽤程序数据的PDB的可选集合。创建应⽤程序 容器的⽬的是拥有独⼀的主应⽤程序定义。CDB中可以有多个应⽤程序容器。
数据库分为称为表空间的逻辑存储单元,这些逻辑存储单元共同存储所有数据库 数据。每个表空间由⼀个或多个数据⽂件构成。根容器和常规PDB具有SYSTEM, SYSAUX,USERS,TEMP和UNDO表空间(在常规PDB中为可选)。种⼦PDB具有 SYSTEM,SYSAUX,TEMP和可选的UNDO表空间。
11.数据库系统⽂件 Database System Files
12.应⽤容器 Application Containers
13.⾃动诊断资料库 Automatic Diagnostic Repository -- ADR
14 备份⽂件 Backup Files
15 进程监控进程 (PMON)
进程管理进程 (PMAN) 是⼀个后台进程,可根据需要监视,产⽣和停⽌以下各项:
•分派器和共享服务器进程
•数据库驻留连接池的连接代理和池化服务器进程
•作业队列流程
•可重启后台程序
16 进程管理进程 (PMAN)
17 监听器注册进程 (LREG)
18、系统监控进程 (SMON)
系统监视器进程 (SMON) 是后台进程,它执⾏许多数据库维护任务,其中包括:
•创建和管理临时表空间元数据,并回收孤⽴的临时段使⽤的空间
•通过基于Undo表空间使⽤情况统计信息来对undo段进⾏上线,下线和收缩来 维护undo表空间
•处于暂时和不⼀致状态时清理数据字典
•维护系统更改号(SCN)到时间的映射表,⽤于⽀持Oracle闪回功能
SMON对后台活动期间引发的内部和外部错误可迅速恢复。SMON可以作为线程或操作系统进程运⾏。在Oracle Real Application Clusters (RAC) 数据库中,⼀个实例的SMON进程可以对失败的其他实例执⾏实例恢复。
19 数据库写⼊进程 (DBWn)
数据库写⼊进程(DBWn)是⼀个后台进程,主要将数据块写⼊磁盘。它还处理检查点,⽂件打开同步,以及记录块写⼊记录。配置闪存后,DBWn还将写⼊数据库智能闪存 (闪存) 缓冲区。
在许多情况下,DBWn写⼊的块分散在整个磁盘上。因此,写操作往往⽐⽇志写 程序 (LGWR) 执⾏的顺序写要慢。如果可能,DBWn将执⾏多块写⼊,以提⾼效率。多块写⼊中写⼊的块数因操作系统⽽异。
DB_WRITER_PROCESSES初始化参数指定数据库写⼊进程的数量。可能有1到 100个数据库写⼊进程。前36个数据库写⼊进程的名称为DBW0-DBW9和DBWaDBWz。第37⾄第100个数据库写⼊器进程的名称是BW36-BW99。数据库为DB_WRITER_PROCESSES参数选择适当的默认设置,或者根据CPU和处理器组的数量来调整⽤户指定的设置。
20 检查点进程 (CKPT)
检查点进程 (CKPT) 是⼀个后台进程,该进程在特定时间通过向数据库写⼊进程 (DBWn) 传递消息来启动检查点请求,以开始写⼊脏缓冲区。完成单个检查点请求后,CKPT会更新数据⽂件头和控制⽂件以记录新的检查点。
CKPT每三秒钟检查⼀次,以查看内存量是否超过了PGA_AGGREGATE_LIMIT初 始化参数的值,如果是,则采取措施。
CKPT可以作为线程或操作系统进程运⾏。除数据库实例外,CKPT还可以在 Oracle⾃动存储管理 (ASM) 实例上运⾏。
21 可管理性监视进程 (MMON)和可管理性监视精简进程 (MMNL)
可管理性监视进程 (MMON) 和可管理性监视精简进程 (MMNL) 是后台进程,它们执⾏与⾃动⼯作负载存储库 (AWR) 相关的任务。AWR是历史性能数据的存储库, 其中包括系统,会话,单个SQL语句,段和服务的累积统计信息。它⽤于问题检测和 ⾃我调优。
MMON从SGA收集各种内存统计信息,对其进⾏过滤,然后每60分钟在⾃动⼯ 作负载存储库 (AWR) 中创建这些统计信息的快照。60分钟是默认值,可以更改。它还执⾏⾃动数据库诊断监视器 (ADDM) 分析,并为超出其阈值的指标发出警报。
MMNL收集会话统计信息(例如⽤户ID,状态,主机以及它正在执⾏的SQL), 并将其存储在活动会话历史记录 (ASH) 缓冲区中。具体地说,MMNL每秒在SGA中对V $ SESSION和V $ SESSION_WAIT视图进⾏采样,然后将该数据记录在V $ ACTIVE_SESSION_HISTORY视图中。不采样⾮活动会话。ASH被设计为内存中的滚动缓冲区,因此,较早的信息将在需要时被覆盖。当ASH缓冲区已满或MMON拍摄快照时,MMNL将ASH缓冲区刷新(清空)到AWR的DBA_HIST_ACTIVE_SESS_HISTORY图中。由于空间昂贵,因此每10个条⽬中只有⼀个被刷新。MMNL还计算指标。
MMON和MMNL都可以作为线程或操作系统进程运⾏。除了数据库实例之外, MMON和MMNL还可以在⾃动存储管理(ASM)实例上运⾏。
22 恢复进程 (RECO)
恢复进程 (RECO) 是⼀个后台进程,⽤于解决由于分布式数据库中的⽹络或系统 故障⽽导致挂起的分布式事务。
RECO可以作为线程或操作系统进程运⾏。
23 ⽇志写⼊进程 (LGWR)
24 归档进程 (ARCn)
归档进程 (ARCn) 是后台进程,仅当数据库处于ARCHIVELOG模式并启⽤⾃动归档时才存在,在这种情况下ARCn会⾃动归档联机重做⽇志⽂件。⽇志写⼊进程 (LGWR) 在归档之前不能重⽤和覆盖联机重做⽇志⽂件组。
数据库将根据需要启动多个归档程序进程,以确保已填充的联机重做⽇志的归档不会落后。可能的过程包括 ARC0-ARC9 和 ARCa-ARCt(31个可能的⽬的地)。
LOG_ARCHIVE_MAX_PROCESSES初始化参数指定数据库初调⽤的ARCn进 程数。如果您预计归档⼯作量很⼤,例如在批量加载数据期间,则可以增加归档进程的⼤数量。归档进程也可以有多个归档⽇志⽬的地。建议每个⽬的地⾄少有⼀个归档进程。
ARCn可以作为线程或操作系统进程运⾏。
25 作业队列协调进程 (CJQ0)
26 恢复写⼊进程 (RVWR)
Recovery Writer进程 (RVWR) 是⼀个后台进程,⽤于闪回整个数据库。 也就是说,如果您具有必需的闪回⽇志,它将撤消从数据库当前状态到过去某个时间的事务。 启⽤闪回或有保证的还原点时,RVWR将闪回数据写⼊快速恢复区域中的闪回数据库⽇志中。
RVWR可以作为线程或操作系统进程运⾏。
27 闪回数据归档进程 (FBDA)
闪回数据存档进程 (FBDA) 是后台进程,提供了在表的整个⽣命周期内跟踪和存储表中事务性更改的功能。 这样,您可以及时向后闪回表,以恢复表的状态。
提交修改跟踪表的事务时,FBDA会检查是否正在⽣成新的Undo,过滤与标记为存档的对象相关的内容,并将Undo信息复制到闪回数据存档表空间中。 FBDA维护当 前⾏上的元数据,并跟踪已存档的数据量。
FBDA还负责⾃动管理闪回数据存档的空间,组织(分区表空间)和保留时间。 FBDA还跟踪已跟踪交易的归档进度。
FBDA可以作为线程或操作系统进程运⾏。
28 空间管理协调进程 (SMCO)
空间管理协调进程 (SMCO) 是⼀个后台进程,⽤于调度各种空间管理任务的执⾏,包括主动空间分配和空间回收。 SMCO动态产⽣空间管理从属进程 (Wnnn) 来实 现这些任务。请注意,内存中协调进程 (IMCO) 是启动后台填充和重新填充列数据的后台进程。
Wnnn从属进程代表空间管理和Oracle的In-Memory选项执⾏⼯作。
•Wnnn进程是由SMCO动态⽣成的从属进程,⽤于在后台执⾏空间管理任务。 这些任务包括根据空间使⽤量增⻓分析将空间预分配到本地管理的表空间和 SecureFiles段中,以及从删除的段中回收空间。这些任务还包括快速摄取延迟插⼊。启动后,从属进程将充当⾃治代理。完成任务执⾏后,它将⾃动从队列 中拾取另⼀个任务。该进程在⻓时间闲置后会⾃⾏终⽌。
•Wnnn进程填充并重新填充启⽤In-Memory功能的对象。内存中协调进程 (IMCO) 会启动后台填充和重新填充柱状数据。 IMCO后台进程和前台进程将 利⽤Wnnn从属进程进⾏填充和再填充。 IMCO使⽤Wnnn进程预填充优先级为 LOW/MEDIUM/HIGH/CRITICAL的启⽤In-Memory的对象,并重新填充InMemory的对象。 Wnnn从属进程上运⾏的内存填充和重新填充任务也从前台进程启动,以响应引⽤了启⽤In-Memory对象的查询和DML操作。
SMCO和Wnnn都可以作为线程或操作系统进程运⾏。
29 分派进程 (Dnnn) 和 共享服务器进程 (Snnn)
在共享服务器体系结构中,客户端连接到分派进程 (Dnnn),该进程为每个连接创建虚电路。 当客户端将数据发送到服务器时,分派进程将数据接收到虚电路中,并将活动电路放置在公共队列中,以由空闲的共享服务器进程 (Snnn) 进⾏处理。 然后, Snnn从虚电路读取数据并执⾏完成请求所需的数据库⼯作。 当Snnn必须将数据发送到客户端时,Snnn将数据写回到虚电路中,⽽Dnnn会将数据发送到客户端。 Snnn完成客户端请求后,它将虚电路释放回Dnnn,并可以⾃由处理其他客户端。
Snnn和Dnnn都可以作为线程或操作系统进程运⾏。 除数据库实例外,Dnnn还在 共享服务器上运⾏。
refer to :https://www.cnblogs.com/sandata/