Oracle19c 结构(学习一下)
1、数据库服务器
Oracle数据库至少包含一个数据库实例和一个数据库。数据库实例处理内存和进程。数据库由称为数据文件的物理文件组成,可以是非容器数据库或多租户容器数据库。Oracle数据库在其运行期间也使用多个数据库系统文件。
单实例数据库体系结构由一个数据库实例和一个数据库组成。数据库和数据库实例之间存在一对一的关系。可以在同一台服务器计算机上安装多个单实例数据库。每个数据库都有单独的数据库实例。此配置对于在同一台计算机上运行不同版本的Oracle数据库非常有用。
Oracle Real Application Clusters(Oracle RAC)数据库体系结构由在不同服务器计算机上运行的多个实例组成。它们都共享同一个数据库。服务器计算机集群在一端显示为单个服务器,在另一端显示为最终用户和应用程序。此配置旨在实现高可用性,可伸缩性和高端性能。
监听器是数据库服务器进程。它接收客户端请求,建立与数据库实例的连接,然后将客户端连接移交给服务器进程。侦听器可以在数据库服务器上本地运行或远程运行。典型的Oracle RAC环境是远程运行的。
2、数据库实例
数据库实例包含一组Oracle数据库后台进程和内存结构。主存储器结构是系统全局区域(SGA)和程序全局区域(PGA)。后台进程对数据库中存储的数据(数据文件)进行操作,并使用内存结构进行工作。数据库实例仅存在于内存中。
Oracle数据库还创建服务器进程以代表客户端程序处理与数据库的连接,并为客户端程序执行工作; 例如,解析和运行SQL语句,以及检索结果并将结果返回给客户端程序。这些类型的服务器进程也称为前台进程。
3、系统全局区
系统全局区域(SGA)是包含一个Oracle数据库实例的数据和控制信息的内存区域。所有服务器和后台进程共享SGA。启动数据库实例时,将显示为SGA分配的内存量。SGA包括以下数据结构:
共享池:缓存可在用户之间共享的各种构造; 例如,共享池存储已解析的SQL,PL SQL代码,系统参数和数据字典信息。共享池几乎涉及数据库中发生的每个操作。例如,如果用户执行SQL语句,则Oracle数据库将访问共享池。
闪回缓冲区:是SGA中的可选组件。启用闪回数据库后,将启动名为Recovery Writer Process(RVWR)的后台进程。RVWR定期将已修改的块从缓冲区高速缓存复制到闪回缓冲区,并将闪回数据库数据从闪回缓冲区顺序写入闪回数据库日志,这些日志将循环重用。
数据库缓冲区缓存:存储区域是否存储从数据文件中读取的数据块的副本。缓冲区是主存储器地址,缓冲区管理器临时缓存当前或最近使用的数据块。并发连接到数据库实例的所有用户共享对缓冲区缓存的访问权限。
数据库智能闪存缓存:是在Solaris或Oracle Linux上运行的数据库的数据库缓冲区缓存的可选内存扩展。它为数据库块提供2级缓存。它可以改善数据仓库(DW)环境中读取密集型联机事务处理(OLTP)工作负载和即席查询以及批量数据修改的响应时间和总体吞吐量。Database Smart Flash Cache驻留在一个或多个闪存磁盘设备上,这些设备是使用闪存的固态存储设备。数据库智能闪存缓存通常比额外的主存储器更经济,并且比磁盘驱动器快一个数量级。
重做日志缓冲区: SGA中的循环缓冲区,用于保存有关对数据库所做更改的信息。此信息存储在重做条目中。重做条目包含通过数据操作语言(DML),数据定义语言(DDL)或内部操作重建(或重做)对数据库所做的更改所需的信息。如有必要,重做条目用于数据库恢复。
大型池:是一个可选的内存区域,用于大于适用于共享池的内存分配。大型池可以为共享服务器和Oracle XA接口的用户全局区域(UGA)提供大内存分配(在事务与多个数据库交互时使用),并行执行语句时使用的消息缓冲区,Recovery Manager的缓冲区( RMAN)I O从属和延迟插入。
内存区域:是一个可选组件,它使对象(表,分区和其他类型)能够以称为柱状格式的新格式存储在内存中。此格式使扫描,连接和聚合的执行速度比传统的磁盘格式快得多,从而为OLTP和DW环境提供快速报告和DML性能。此功能对于在返回多行而不是OLTP的几列上运行的分析应用程序特别有用,OLTP在返回多列的几行上运行。
Memoptimize Pool:是一个可选组件,可为基于键的查询提供高性能和可伸缩性。Memoptimize Pool包含两个部分,memoptimize缓冲区和哈希索引。快速查找使用memoptimize池中的哈希索引结构,可以快速访问缓冲区缓存中永久固定的给定表(启用MEMOPTIMIZE FOR READ)的块,以避免磁盘I O. memoptimize池中的缓冲区与数据库缓冲区缓存完全分开。哈希索引是在配置Memoptimized Rowstore时创建的,并由Oracle数据库自动维护。
共享I O池(SecureFiles):用于SecureFile大对象(LOB)上的大型I O操作。LOB是一组旨在容纳大量数据的数据类型。SecureFile是一个LOB存储参数,允许重复数据删除,加密和压缩。
流池:由Oracle Streams,Data Pump和GoldenGate集成捕获和应用流程使用。Streams池存储缓冲的队列消息,它为Oracle Streams捕获进程和应用进程提供内存。除非您专门配置它,否则Streams池的大小从零开始。使用Oracle Streams时,池大小会根据需要动态增长。
Java池:用于Java虚拟机(JVM)中所有特定于会话的Java代码和数据。Java池内存以不同的方式使用,具体取决于运行Oracle数据库的模式。
修复了SGA:内部管理区域,包含有关数据库和数据库实例状态的一般信息,以及进程间通信的信息。
4、程序全局区
程序全局区域(PGA)是一个非共享内存区域,包含专门供服务器和后台进程使用的数据和控制信息。Oracle数据库创建服务器进程以代表客户端程序处理与数据库的连接。在专用服务器环境中,为每个启动的服务器和后台进程创建一个PGA。每个PGA由堆栈空间,散列区域,位图合并区域和用户全局区域(UGA)组成。当使用它的关联服务器或后台进程终止时,将释放PGA。
在共享服务器环境中,多个客户端用户共享服务器进程。UGA被移动到大型池中,使PGA只有堆栈空间,散列区域和位图合并区域。
在专用服务器会话中,PGA由以下组件组成:
SQL工作区:排序区域由订购数据的函数使用,例如ORDER BY和GROUP BY。
会话存储器:该用户会话数据存储区域被分配用于会话变量,例如登录信息,以及数据库会话所需的其他信息。OLAP池管理OLAP数据页,它们等同于数据块。
私有SQL区域:此区域包含有关已解析的SQL语句和其他特定于会话的信息以供处理的信息。当服务器进程执行SQL或PL SQL代码时,该进程使用私有SQL区域来存储绑定变量值,查询执行状态信息和查询执行工作区。相同或不同会话中的多个私有SQL区域可以指向SGA中的单个执行计划。持久区域包含绑定变量值。运行时区域包含查询执行状态信息。游标是私有SQL区域中特定区域的名称或句柄。您可以将游标视为客户端上的指针和服务器端的状态。由于游标与私有SQL区域紧密相关,因此这些术语有时可互换使用。
堆栈空间:堆栈空间是分配用于保存会话变量和数组的内存。
散列区:此区域用于执行表的散列连接。
位图合并区域:此区域用于合并从多个位图索引的扫描中检索的数据。