一、 System Global Area
Oracle 19c SGA
系统全局区域 (SGA) 是包含数据和控制信息的内存区域
Oracle 数据库实例。所有服务端和后台进程共享 SGA 。启动数据库实例时,会显示为 SGA 分配的内存量。
SGA 包括以下数据结构 :
Shared pool:
该组件缓存各种可以在用户之间共享的结构 ; 例如,共享池存储已解析的存储
SQL 、 PL/SQL 代码、系统参数、数据字典信息。共享池几乎涉及到数据库中发生的所有操作。例如,如果用户执行 SQL 语句, Oracle 数据库将访问共享池。
Flashback buffer:
该组件是 SGA 中的一个可选组件。当 Flashback 数据库被启用时,后台进程 Recovery Writer process (RVWR) 会启动。 RVWR 会周期性地将修改后的数据块从 buffer cache 拷贝到 flashback buffer 中,然后将 flashback 数据库中的数据按顺序写入到 flashback 数据库日志中,并循环重用。
Database buffer cache:
该组件是存储从数据文件中读取的数据块副本的内存区域。缓冲区是一个主内存地址,缓冲区管理器在其中临时缓存当前或最近使用的数据块。所有并发连接到数据库实例的用户共享对缓冲区缓存的访问。
Database Smart Flash cache:
数据库缓冲区缓存的可选内存扩展是否适用于 Solaris 上运行的数据库
甲骨文 Linux 。它为数据库块提供了一个二级缓存。对于读密集型在线事务处理 (OLTP) 工作负载和数据仓库 (DW) 环境中的临时查询和批量数据修改,它可以提高响应时间和总体吞吐量。数据库智能闪光高速缓存驻留在一个或多个闪存盘设备上,这些设备是使用闪存的固态存储设备。数据库智能闪存缓存是一种通常比额外的主存更经济的技术。
Redo log buffer:
该组件是 SGA 中的一个循环缓冲区,保存有关对数据库所做更改的信息。该信息存储在重做条目中。重做条目包含重构所需的信息
通过数据操作语言 (DML) 、数据定义语言 (DDL) 或内部操作对数据库进行的更改 ( 或重做 ) 。如果需要,重做条目用于数据库恢复。
Large pool:
该组件是一个可选的内存区域,用于比共享池更大的内存分配。大池可以为共享服务器的用户全局区域 (UGA) 和 Oracle XA 接口 ( 用于事务与多个数据库交互 ) 、语句并行执行时使用的消息缓冲区、用于恢复的缓冲区提供大量内存分配
管理器 (RMAN) I/O 奴隶和延迟插入。
In-Memory Area:
该组件是一个可选组件,它允许对象 ( 表、分区和其他类型 ) 以一种称为 columnar 格式的新格式存储在内存中。这种格式使扫描、连接和聚合的执行速度比传统的磁盘上格式快得多,从而为 OLTP 和 DW 环境提供了快速的报告和 DML 性能。这个特性对于分析应用程序特别有用,因为分析应用程序操作几行返回许多行,而 OLTP 操作几行返回许多列。
Memoptimize Pool:
该组件是一个可选组件,为基于键的查询提供高性能和可伸缩性。
Memoptimize Pool 包含两部分, Memoptimize buffer area 和 hash index 。快速查找使用 memoptimization 池中的哈希索引结构,提供对给定表块的快速访问 (memoptimization 为读启用 ) ,永久固定在缓冲区缓存中,以避免磁盘 I / O 。 memoptimization 池中的缓冲区完全独立于数据库缓冲区缓存。散列索引是在配置 Memoptimized 行存储时由数据库创建的。
Shared I/O pool (SecureFiles):
该组件用于安全文件大对象 (lob) 上的大型 I/O 操作。 lob 是一组设计用来保存大量数据的数据类型。 SecureFile 是 LOB 存储参数,支持重复数据删除、加密和压缩。
Streams pool:
该组件用于 Oracle Streams 、 Data Pump 和 GoldenGate 集成捕获和应用流程。的
Streams pool 存储缓冲的队列消息,并为 Oracle Streams 捕获进程和应用进程提供内存。除非您特别配置它,否则流池的大小从 0 开始。当使用 Oracle Streams 时,池的大小会根据需要动态增长。
Java pool:
该组件用于 Java 虚拟机 (JVM) 中所有特定于会话的 Java 代码和数据。 Java 池内存的使用方式不同,这取决于 Oracle 数据库运行的模式。
Fixed SGA:
该组件是一个内部管理区域,包含关于数据库和数据库实例的状态的一般信息,以及进程之间通信的信息。
二、 Program Global Area
Oracle 19c PGA
PGA (Program Global Area) 是一个非共享内存区域,它包含服务器和后台进程专用的数据和控制信息。 Oracle 数据库创建服务器进程来代表客户端程序处理到数据库的连接。在专用服务器环境中,为每个启动的服务器和后台进程创建一个 PGA 。每个 PGA 由堆栈空间、哈希区、位图合并区和用户全局区 (UGA) 组成。当使用 PGA 的关联服务器或后台进程终止时, PGA 将被释放。
在共享服务器环境中,多个客户端用户共享服务器进程。 UGA 被移到大池中,只给 PGA 留下堆栈空间、散列区域和位图合并区域。
在专用服务器会话中, PGA 由以下组件组成 :
SQL 工作区域 : 排序区域由对数据进行排序的函数使用,例如 Order BY 和 GROUP BY 。
会话内存 : 这个用户会话数据存储区域分配给会话变量,例如登录信息和数据库会话所需的其他信息。 OLAP 池管理 OLAP 数据页,它相当于数据块。
私有 SQL 区域 : 该区域保存有关已解析 SQL 语句的信息和其他用于处理的特定于会话的信息。当服务器进程执行 SQL 或 PL/SQL 代码时,该进程使用私有 SQL 区域存储绑定变量值、查询执行状态信息和查询执行工作区。同一个或不同会话中的多个私有 SQL 区域可以指向 SGA 中的单个执行计划。持久区域包含绑定变量值。运行时区域包含查询执行状态信息。
堆栈空间 : 堆栈空间是分配给保存会话变量和数组的内存。
哈希区 : 用于对表进行哈希连接。
位图合并区域 : 该区域用于合并多个位图索引扫描得到的数据。
-the end-
