Oracle 内存结构
PGA(Program Global Area):进程全局区
是包含一个服务器进程的数据和控制信息的私有的内存区域。
UGA(User Global Area):
用户全局区,就是你的会话信息。
采用专用服务器模式时,UGA会在PGA中分配。若采用共享服务器连接时,UGA会在SGA中分配。
手动分配PGA内存管理:
PGA受数据库初始化参数WORKAREA_SIZE_POLICY的影响,而且可以在会话级别修改。AUTO表示自动内存管理,Manual表示手动管理。
PGA中除了会话中PL/SQL表和其他变量分配的内存外,有些参数对PGA大小影响最大:
SORT_AREA_SIZE:用于对信息排序的RAM总量,若分配的大小不足以在内存中排序,则会用到临时表空间进行排序。
SORT_AREA_RETAINED_SIZE:排序完成后用于保存已排序的内存总量。比如SORT_AREA_SIZE为512K,SORT_AREA_RETAINED_SIZE为256K,那么服务器进程最初查询数据会用512K的内存区排序数据,但排序完成后,排序去会收缩为256K,剩下的数据会被写到临时表空间中。
HASH_AREA_SIZE:服务器进程在内存中存储散列表所用的内存量。
SORT_AREA_SIZE- SORT_AREA_RETAINED_SIZE这部分内存一般从PGA中分配。
而SORT_AREA_RETAINED_SIZE会在UGA中分配。
在使用 *_area_size 参数时,需要记住以下重要的几点:
1.这些参数控制着SORT,HASH和BITMAP MERGE操作所用的最大内存量。
2.这些设置并非对会话的限制,它们只是对一个操作的限制,一个查询中可以有多个排序操作。
3.这些内存区都是根据需要来分配的,比如把排序区设置为1GB,并不是你要分配1GB的RAM,而是说Oracle进程为一个排序/散列操作最多分配1GB的内存。
自动PGA内存管理
从9i开始,又引进了一种新的方法来管理PGA内存,即自动PGA内存管理。
当自动PGA内存管理时,PGA_AGGREGATE_TARGET会控制实例为完成数据排序和散列的所有工作区共分配多少内存。
警告:
在9i版本中,若使用共享服务器模式,则无法使用自动PGA内存管理,而是使用SORT_AREA_SIZE和HASH_AREA_SIZE参数来确定为各个操作分配多少RAM。
1.PGA是一个上限目标,而不是启动数据库时预分配的内存大小。
2.串行会话会使用PAG_AGGREGATE_TARGET的很少一部分,一个排序/散列操作只会用到%5左右,但经过实际测试,Oracle为了防止磁盘的排序,排序/散列操作往往会超出%5的比例,而操作完成后,分配给当前的进程PGA内存会下降到%5;
3.随着服务器上负载量的增加,分配给各个工作区的PGA内存量会减少。
4.一个并行查询最多可以使用PAG_AGGREGATE_TARGET的%30,也就是说每个平行进程能使用的内存量是0.3*PGA_AGGREGATE_TARGET的量。
手动和自动内存管理的选择
默认情况下,我倾向于自动PGA内存管理。
这样,Oracle会自动根据工作负载来调整每个会话的PGA大小,用户越多,每个用户使用的RAM就越少,用户越少,每个用户能使用的RAM就越多。这就像有一位DBA整天坐在控制台前,不断根据数据库中的完成工作量来设置SORT_AREA_SZIE,HASH_AREA_SIZE参数。
手动内存管理适用于大型批处理作业,它们在特殊的时刻运行,例如凌晨2点要做一个大型的批处理,要完成大型的散列连接,建立索引等工作,对于这样一个作业,它应该使用机器上所有的资源,尚若如此,就应该使用alter session在你的会话中禁用自动内存管理(而不影响其他会话),并根据需要设置SORT_AREA_SZIE,HASH_AREA_SIZE参数。
相关推荐
PGA导致oracle内存泄露,经历1个月的时间,终于搞定该问题,对于学习ORACLE 内存泄露是一次比较好的总结。
Oracle 学习总结 Oracle 是一种关系数据库管理系统,由 Larry Ellison 和 Bob Miner 于 1977 年创立。它是一种对象关系数据库管理系统,支持多种编程语言,包括 Java、Python、C++ 等。 一、创建 Oracle 数据库...
本文将根据"oracle学习总结(适合刚学习oracle的人)"这一主题,深入探讨Oracle数据库的基础知识,帮助初学者建立起对Oracle的基本理解。 1. **Oracle简介**:Oracle数据库是由美国甲骨文公司开发的一款产品,它...
这篇笔记总结将深入探讨Oracle的核心概念、关键功能以及常见操作,旨在帮助读者理解和掌握Oracle数据库的关键知识点。 一、Oracle数据库基础 Oracle数据库采用SQL(结构化查询语言)作为其主要的数据交互方式,支持...
9i引入了workarea_size_policy,当设置为auto时,排序在PGA内存中进行,而手动模式下,sort_area_size决定排序内存,临时表空间主要用于磁盘排序,确保大数据量操作的顺利完成。 12. **分页查询**:针对表T,按字段...
以下是对"Oracle 日常巡检项总结"的详细阐述: 1. **系统资源监控**:巡检时,首先要关注的是服务器的CPU、内存、磁盘I/O和网络带宽的使用情况。过高或不稳定的资源利用率可能会影响数据库的性能,需要及时调整资源...
"Oracle DBA 面试题总结" Oracle DBA 面试题总结是 Oracle 数据库管理员需要掌握的重要知识点的汇总。本文将从 SQL 调优、执行计划、索引、绑定变量、执行计划稳定性、排序相关内存等方面对 Oracle DBA 面试题进行...
#### 四、总结 理解Oracle中的等待事件对于优化数据库性能至关重要。通过识别和解决这些等待事件,不仅可以显著提升数据库性能,还可以提高系统的稳定性和响应能力。在实际应用中,应综合运用多种工具和技术来进行...
### Oracle优化总结 在本文档中,我们将对提供的部分文本进行深入解读,并提炼出与Oracle数据库性能优化相关的关键知识点。这些知识点将涵盖不同层面的技术细节,包括但不限于系统架构选择、SQL执行效率提升、内存...
Oracle的内存结构分为SGA(System Global Area)和PGA(Program Global Area)。优化内存配置可以减少磁盘I/O: 1. SGA包括共享池、数据缓冲区高速缓存、重做日志缓冲区等,调整其大小以适应系统需求。 2. PGA用于每...
在内存结构上,Oracle有两个主要的内存区域:系统全局区(SGA)和程序全局区(PGA)。SGA由共享池(包含库缓存和数据字典缓存)、数据缓冲区和日志缓冲区组成,这些区域被所有数据库进程共享。PGA则是在服务器进程...
以下是对标题"ORACLE调优文档总结"和描述中所述知识点的详细说明: 1. **数据库参数设置**: Oracle数据库的性能很大程度上取决于其配置参数。例如,`SGA (System Global Area)` 包含了共享池、数据缓冲区高速缓存...
本文主要总结了Oracle的一些核心知识点,包括数据文件、日志文件、控制文件、表空间、段、区、数据块、模式以及Oracle内存结构。 1. **数据文件**:数据文件是Oracle数据库存储数据的主要载体,每个数据库至少有一...
以上就是对Oracle数据库常用优化方法的总结,每一种方法都需要根据实际环境进行细致的分析和实践,才能找到最适合的优化策略。在日常运维中,我们应持续学习和探索,以应对不断变化的业务需求和挑战。
- 使用V$视图来监控数据库性能,如V$SESSION、V$PGA Aggregate Target等。 - AWR(Automatic Workload Repository)报告分析。 9. **Oracle并发控制**: - 了解行级锁定、多版本并发控制(MVCC)和乐观锁策略。 ...