Oracle内存结构

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Oracle内存结构 1.概述 Oracle数据库:每个Oracle都由一个数据库实例和一系列物理文件组成。  即,Oracle数据库由一系列后台进程、内存及文件组成。  当启动一个数据库时,Oracle会分配一个被称为系统全局区SGA的共享内存区,同时会启动多个后台进程,他们共同构成了一个Oracle实例。

Oracle内存结构

1.概述

Oracle数据库:每个Oracle都由一个数据库实例和一系列物理文件组成。 
即,Oracle数据库由一系列后台进程、内存及文件组成。 
当启动一个数据库时,Oracle会分配一个被称为系统全局区SGA的共享内存区,同时会启动多个后台进程,他们共同构成了一个Oracle实例。

2.Oracle内存

2.1 Oracle内存作用

当用户请求数据库中的数据时,Oracle实例会先检测内存中是否存在相应的数据块(因为从内存中获取数据往往比磁盘快得多),当内存中无法找到相应数据时,才会去磁盘提取数据。Oracle内存具有以下作用:

  • 缓存数据:用户请求数据库数据,首先检测内存中是否由数据,因为内存比磁盘速度快。
  • 缓存共享的SQL火PL/SQL块。
  • 管理重做日志。

可以看出,Oracle数据库需要大量内存来管理数据库,内存越大,则访问速度越快。

2.2 Oracle内存结构

Oracle会在内存中存储如下信息:

  • 已经执行过的PL/SQL或SQL代码;
  • 已经连接的会话信息,包括当前活动的及非活动的回话;
  • 程序执行过程中所需要的信息,比如某个查询状态;
  • 需要在Oracle进程间共享并进行通信的信息。
  • 数据文件内数据的缓存,例如数据块及重做日志项。

Oracle内存部分分为两种结构:

  • 系统全局区(System Global Area):这个区域的数据会被所有的服务器进程和后台进程所共享。
  • 程序全局区(Program Global Area):每个服务进程和后台进程私有的内存区域,即每个进程都具有自己的PGA。

如下图: 
这里写图片描述

注:依赖于服务器的连接方式不同,Oracle中用户全局区UGA,用于存储会话状态的内存。如果通过专用服务器连接到Oracle,UGA内存在PGA内存中分配;如果是共享服务器连接,UGA在SGA中进行内存分配。数据库创建时,默认使用专用服务器连接。

下面介绍系统全局区和程序全局区。

2.2.1 系统全局区

系统全局区是共享内存机构,用于提供查询性能,允许大量并发的数据库活动。当Oracle启动时,会分配制定的SGA,SGA由一组不同结构的内存组件组成,是可读写的。包含的内存数据接口如下:

  • 数据库缓冲区高速缓存(保护从数据库文件中读取的数据块的副本)。
  • 共享池:包含库高速缓存,存储已经执行过的SQL或PL/SQL,数据字典高速缓存。
  • 重做日志缓冲区:缓存重做日志项,指定条件满足时将缓冲区的数据写入到磁盘中。
  • Java池:给出实例化Java对象的对空间。
  • 大池:存储大内存的配置,比如RMAN备份缓冲区。
  • 流池:支持Oracle流功能。

2.2.1.1 数据库缓冲区高速缓存

数据库缓冲区高速缓存(简称库高速缓存):保存从物理数据文件中读出的数据库的副本。所有实例的用户共享该数据缓存区。其目的如下:

  • 优化物理IO;
  • 将频繁访问的块保持在高速缓存中。

高速缓冲区处理数据块的写入与读入,Oracle使用高效的LRU算法(最近最少使用)来管理高速缓存中的缓冲区。缓冲区一般具有以下几个独立的状态:

  • 未使用的缓冲区:不包含任何有用数据的缓冲区,数据库可以使用他们保存从磁盘读出的数据。
  • 脏缓冲区:包含从磁盘读取并经过修改的、但是还未写入到磁盘数据文件中的数据。
  • 干净缓冲区:此缓冲区之前被使用过,现在包含某个数据块在某个时间点的读一致性版本,块包含干净的数据,不需要执行检查点操作。

2.2.1.2 共享池

共享池,包括库缓存、数据字典缓存、并行执行消息缓存区,用于系统控制的各种内存结构。

2.2.3 程序全局区PGA

程序全局区PGA:每个服务器进程独占,一般用于服务器连接配置,不能为多个进程共享

PGA内存划分:

  • 私有SQL区域:用于保存SQL的绑定变量信息及运行时的内存结构,如SQL的执行工作区及客户端的游标数据。
  • 运行时区域:在会话发布select、insert、delete语句时创建,执行结束后,Oracle自动释放运行时区域。

这里写图片描述

原文地址 https://blog.csdn.net/qq_36743482/article/details/81222801
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
2月前
|
Java
JVM运行时数据区(内存结构)
1)虚拟机栈:每次调用方法都会在虚拟机栈中产生一个栈帧,每个栈帧中都有方法的参数、局部变量、方法出口等信息,方法执行完毕后释放栈帧 (2)本地方法栈:为native修饰的本地方法提供的空间,在HotSpot中与虚拟机合二为一 (3)程序计数器:保存指令执行的地址,方便线程切回后能继续执行代码
27 3
|
3月前
|
存储 算法 Java
聊聊jvm的内存结构, 以及各种结构的作用
【10月更文挑战第27天】JVM(Java虚拟机)的内存结构主要包括程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区和运行时常量池。各部分协同工作,为Java程序提供高效稳定的内存管理和运行环境,确保程序的正常执行、数据存储和资源利用。
69 10
|
6月前
|
存储 算法 安全
Java面试题:Java内存模型及相关知识点深度解析,Java虚拟机的内存结构及各部分作用,详解Java的垃圾回收机制,谈谈你对Java内存溢出(OutOfMemoryError)的理解?
Java面试题:Java内存模型及相关知识点深度解析,Java虚拟机的内存结构及各部分作用,详解Java的垃圾回收机制,谈谈你对Java内存溢出(OutOfMemoryError)的理解?
82 0
|
2月前
|
存储 Oracle 关系型数据库
【赵渝强老师】Oracle的物理存储结构
Oracle的物理存储结构包括数据文件、联机重做日志文件、控制文件、归档日志文件、参数文件、告警日志文件、跟踪文件和备份文件。这些文件在硬盘上存储数据库的各种数据和日志信息,确保数据库的正常运行和故障恢复。视频讲解和详细说明见原文。
|
5月前
|
Oracle 关系型数据库 BI
ORACLE Apex: EBS多组织结构 理解与配置
【8月更文挑战第11天】在Oracle Apex中理解和配置与EBS多组织结构相关内容需掌握:1) EBS多组织结构概念及组成部分,如法律实体、业务单位与库存组织;2) Oracle Apex与EBS集成的目的与方式,包括提供友好界面及自定义业务流程;3) 在Apex中配置多组织结构应用,涉及数据访问控制、页面报表设计及业务流程集成。整体而言,需精通EBS架构与Apex开发技术,以实现高效灵活的企业解决方案。
118 2
|
5月前
|
存储 安全 Java
JVM内存结构
这篇文章详细介绍了Java虚拟机(JVM)的内存结构,包括类的加载过程、类加载器的双亲委派机制、沙箱安全机制、程序计数器、Java栈、Java堆、本地方法和本地方法栈等关键组件及其作用。
JVM内存结构
|
6月前
|
存储 运维 Java
Java面试题:JVM的内存结构有哪些主要部分?请简述每个部分的作用
Java面试题:JVM的内存结构有哪些主要部分?请简述每个部分的作用
73 9
|
5月前
|
Oracle 关系型数据库
分布式锁设计问题之Oracle RAC保证多个节点写入内存Page的一致性如何解决
分布式锁设计问题之Oracle RAC保证多个节点写入内存Page的一致性如何解决
|
6月前
|
存储 设计模式 监控
Java面试题:简述JVM的内存结构,包括堆、栈、方法区等。栈内存优化的方法有 哪些?
Java面试题:简述JVM的内存结构,包括堆、栈、方法区等。栈内存优化的方法有 哪些?
53 0
|
6月前
|
存储 算法 Java
Java面试题:解释JVM的内存结构,并描述堆、栈、方法区在内存结构中的角色和作用,Java中的多线程是如何实现的,Java垃圾回收机制的基本原理,并讨论常见的垃圾回收算法
Java面试题:解释JVM的内存结构,并描述堆、栈、方法区在内存结构中的角色和作用,Java中的多线程是如何实现的,Java垃圾回收机制的基本原理,并讨论常见的垃圾回收算法
83 0

热门文章

最新文章

推荐镜像

更多