`

Oracle PGA参数

阅读更多
转自:http://www.cnblogs.com/RicCC/archive/2008/01/06/1027524.html

PGA: 程序全局区,服务器进程使用的内存区域,包括特定服务器进程的数据和控制信息,例如使用的操作系统资源等。
UGA: 用户全局区,特定Session使用的内存区域,例如Session的SQL工作区、登陆认证信息等。Session的SQL工作区大小对查询性能的影响比较关键,shared server模式时UGA从SGA的large pool(如果有设置)或者shared pool(没有设置large pool)中分配,dedicated server模式时UGA从PGA中分配。
CGA: 调用全局区,存放调用过程中需要的数据,例如parse调用、executive调用、fetch调用等。调用过程中实际需要的数据,例如SQL Area、Sort Area等位于UGA中,CGA存放的只是调用过程中的临时处理数据,例如I/O缓存、临时堆栈空间等。CGA位于PGA中(PGA是集中管理这些资源的地方),在调用开始时创建,调用执行过程中动态分配,调用结束后释放。

WORKAREA_SIZE_POLICY = { AUTO | MANUAL }
{ ALTER SYSTEM | ALTER SESSION } SET WORKAREA_SIZE_POLICY = { AUTO | MANUAL }
设为AUTO时,内存使用比较多的SQL操作,例如sort, group-by, hash-join, bitmap merge和bitmap create等,由Oracle自动分配;设为MANUAL时,这些操作将使用相应的*_AREA_SIZE参数设置的内存值。
*_AREA_SIZE作用于每个Session,分配的过小,很多Session可能没有足够的内存而效率低下,分配过多,大量Session可能浪费掉很多内存空间,9i开始的PGA自动管理功能改善了这个状况。使用PGA_AGGREGATE_TARGET设置整个PGA大小,Oracle将为每个Session按照实际需要为其分配PGA,并尽量维持PGA总量不超过PGA_AGGREGATE_TARGET值。

PGA_AGGREGATE_TARGET = integer [K | M | G]
ALTER SYSTEM
设定总的PGA内存大小。Oracle将尽量保证PGA内存总合不超过这个值,但不是绝对的,为了避免磁盘操作,有时可能会超过这个值。可以设置为总的内存数减去SGA的剩余值。
将该初始化参数设置为大于0的值,Oracle自动将WORKAREA_SIZE_POLICY设为AUTO;将该初始化参数设置为0,Oracle自动将WORKAREA_SIZE_POLICY设为MANUAL。设置了PGA_AGGREGATE_TARGET之后,会忽略所有*_AREA_SIZE设置。

HASH_AREA_SIZE = Integer
ALTER SESSION
单位为字节数。

SORT_AREA_SIZE = Integer
ALTER SESSION, ALTER SYSTEM ... DEFERRED
单位为字节数。如果没有设置SORT_AREA_RETAINED_SIZE,分配的内存在排序结束,开始返回记录之前释放,如果设置了SORT_AREA_RETAINED_SIZE,分配的内存在最后一条记录返回后释放。位图索引上的插入、更新也会用到SORT_AREA_SIZE(因为扫描完索引之后必须对各个位图进行排序,然后再合并成一个位图)。

SORT_AREA_RETAINED_SIZE = Integer
ALTER SESSION, ALTER SYSTEM ... DEFERRED
单位为字节数。指在UGA中保留的排序内存大小,排序操作结束,返回最后一条记录之后释放排序内存,只是释放给UGA,而不是操作系统。

BITMAP_MERGE_AREA_SIZE,CREATE_BITMAP_AREA_SIZE,位图索引创建、更新时使用的内存配置。

_pga_max_size: Maximum size of the PGA memory for one process。ALTER SYSTEM。默认值200M。
查看_pga_max_size值的方法:
select ksppinm "Name", ksppstvl/1024/1024 ||'M' "Value", ksppdesc "Desc"
from x$ksppi x, x$ksppcv y
where x.indx = y.indx and ksppinm ='_pga_max_size';

_smm_max_size: Maximum work area size in auto mode (serial)。{ALTER SESSION | ALTER SYSTEM}。
网上有很多描述_smm_max_size默认值的说法,其实都不对,追究其算法也没多少意义,反正如果你没有手动设置过_smm_max_size的值,一旦设置_pga_max_size或者PGA_AGGREGATE_TARGET,Oracle就会自动计算出_smm_max_size的值,如果手动设置过_smm_max_size则不会变化,Oracle自动计算出的_smm_max_size值,跟PGA_AGGREGATE_TARGET和_pga_max_size都有关系。查看_smm_max_size值的方法如下:
select ksppinm "Name", ksppstvl/1024 ||'M' "Value", ksppdesc "Desc"
from x$ksppi x, x$ksppcv y
where x.indx = y.indx and ksppinm ='_smm_max_size';

使用PGA_AGGREGATE_TARGET让Oracle自动分配PGA时,为了防止单个Session占用过多内存而导致整个服务器性能下降,这两个隐藏参数控制了单个进程的最大内存使用量。
这两个参数为隐藏参数,Oracle官方不进行技术支持,如果系统中存在大量的HASH JOIN、SORT等耗费内存的操作,可以考虑、测试这些参数对系统性能的影响,但注意其副作用。
没有使用并行查询时,单个Session SQL工作区内存使用最大值为min( 5%*PGA_AGGREGATE_TARGET , 50%*_pga_max_size , _smm_max_size)。

设置_pga_max_size: Alter System Set "_pga_max_size"=1024M。
设置_smm_max_size: Alter System Set "_smm_max_size"=307200,单位是K,只能以这种单位进行设置,数字后面不能使用K、M、G这些单位字符了。

监控、改善PGA设置
监控PGA的视图:v$sql_workarea_active、v$sql_workarea、v$sesstat、v$process、v$sysstat、v$sql_workarea_histogram等。
使用下面的视图查看Oracle建议的评估设置:
Select pga_target_for_estimate/1024/1024 ||'M' "Estimate PGA Target"
       ,estd_pga_cache_hit_percentage "Cache Hit(%)"
       ,estd_extra_bytes_rw/1024/1024 ||'M' "Extra Read/Write"
       ,estd_overalloc_count "Over alloc count"
From v$pga_target_advice
选出的4个列中,Over alloc count指示Oracle SQL工作区内存分配的三种情况:optimal完全可以在内存中完成操作;onepass需要进行一次磁盘交换;multipass需要进行多次磁盘交换。第四列的值就是需要进行磁盘交换的数量。
PGA_AGGREGATE_TARGET的值最好选择: Over alloc count为0、Cache Hit(%)尽可能高、Extra Read/Write尽可能低的Estimate PGA Target值。
分享到:
评论

相关推荐

    Oracle PGA详解

    2. **PGA参数配置**:`pga_aggregate_target`是用于设置PGA总目标大小的关键参数。正确设置此参数对于平衡资源使用和避免内存争用至关重要。 3. **查询优化与PGA消耗**:大型排序操作、哈希连接和位图合并等操作会...

    修改oracle初始化参数,包括Process,Session,SGA,PGA

    ##### 查看SGA和PGA参数 ```sql SQL> show parameter sga_target; SQL> show parameter pga_aggregate_target; ``` 这两个命令可以帮助我们了解当前`SGA`和`PGA`的目标大小。 ##### 修改SGA和PGA参数 如果需要调整`...

    Oracle系统参数优化

    Oracle系统参数优化是数据库性能调优的关键环节,它涉及到如何有效地配置和调整Oracle数据库的内存结构,以最大化系统性能和稳定性。在Oracle数据库中,内存主要分为两大区域:System Global Area (SGA) 和 Program ...

    Oracle内存参数调优技术详解

    Oracle 内存参数调优技术详解 Oracle 内存参数调优技术是指在 Oracle 实例中调整内存参数以提高数据库性能的技术。 Oracle 实例由内存结构和进程结构两部分组成。内存结构包括 SGA(系统全局区)和 PGA(程序全局区...

    ORACLE数据库参数设置技术手册

    Oracle内存结构包括SGA(System Global Area)和PGA(Program Global Area),它们是数据库运行时存储数据和控制信息的关键区域。了解这些内存组件的工作原理和大小设置对整体性能至关重要。 4.1 BUFFER_POOL_KEEP...

    oracle SGA PGA UGA 内存

    Oracle数据库的内存结构主要包括三个关键部分:System Global Area (SGA), Program Global Area (PGA), 和 User Global Area (UGA)。这些区域都是用于存储和处理数据库操作的数据和信息。 1. **System Global Area ...

    oracle参数设置.doc

    本文档详细介绍了如何针对这种情况对Oracle进行参数设置,以便更有效地利用有限的内存资源。 首先,Oracle的SGA(System Global Area)和PGA(Program Global Area)是数据库运行的核心组成部分。SGA主要用于存储...

    ORACLE内存参数调整PPT教案.pptx

    在调整 ORACLE 内存参数时,需要注意一些重要的参数,如共享池的大小、缓冲区高速缓存的大小、SGA 的大小、PGA 的大小等。这些参数的调整需要根据实际情况选择合适的值,以确保数据库的性能和效率。 此外,调整 ...

    Oracle参数优化

    除了上述参数,还有其他如`pga_aggregate_target`(PGA总目标)、`large_pool_size`(大池)和`java_pool_size`(Java池)等参数,它们分别用于管理PGA(程序全局区)、大对象操作和Java执行环境。这些参数的优化...

    Oracle内存结构研究-PGA篇

    Oracle 内存结构研究 - PGA 篇 Oracle 内存结构研究 - PGA 篇是 Oracle 中最重要的内存结构之一,PG 即...PGA 是 Oracle 内存结构中非常重要的一部分,理解 PGA 的管理模式和相关参数对 Oracle 的性能优化非常重要。

    ORACLE初始化参数详解

    Oracle数据库系统在运行时依赖于一系列的初始化参数来配置其行为和性能。这些参数定义了数据库的内存结构、磁盘空间使用、系统资源限制、数据文件管理等多个方面,是优化Oracle数据库性能的关键因素。以下是对Oracle...

    查看oracle系统参数的一些语句

    ### Oracle系统参数查询知识点 #### 一、概览 Oracle数据库是业界广泛使用的数据库管理系统之一。为了确保数据库的高效运行及优化性能,管理员通常需要监控并调整一系列系统参数。通过SQL语句查询这些参数,可以...

    Oracle初始化参数的配置

    ### Oracle初始化参数的配置详解 在Oracle数据库的安装与配置过程中,初始化参数的设定是至关重要的一步,它直接影响着数据库的性能、稳定性和安全性。本文将深入探讨如何对Oracle初始化参数文件进行有效的配置,...

    oracle学习(内存参数设置)

    Oracle 学习(内存参数设置) oracle学习(内存参数设置)是指在Oracle数据库中设置内存参数来优化数据库性能的过程。Oracle数据库的内存结构主要由SGA(System Global Area)和PGA(Private Global Area)组成。...

    oracle实例的内存(SGA和PGA)进行调整,优化数据库性

    ### Oracle实例内存优化详解:SGA与PGA的调整策略 #### 概述 在Oracle数据库管理系统中,优化数据库性能往往涉及到对其内部结构的理解与微调,尤其是针对内存资源的合理分配。本文将深入探讨Oracle实例的内存管理...

    ORACLE内存参数调整.pptx

    Oracle数据库的内存结构主要包括两个主要部分:System Global Area (SGA) 和 Program Global Area (PGA)。SGA 是一组共享内存区域,用于存储数据库的缓存数据和各种进程间通信的信息,而PGA 则是每个数据库连接独立...

    linux安装oracle内核参数调整说明

    ### Linux安装Oracle内核参数调整详解 #### 一、引言 在Linux环境下部署Oracle数据库时,为了确保数据库系统的稳定性和高性能,往往需要对Linux内核的一些关键参数进行合理的调整。这些参数涉及到文件系统、内存...

    Oracle数据库内存参数调优技术的个人总结.txt

    在IT领域,尤其是在数据库管理与优化方面,Oracle数据库内存参数的调整是一项至关重要的技能。本文将根据提供的文件信息,深入探讨“Oracle数据库内存参数调优技术的个人总结”中的核心知识点,包括理解Oracle数据库...

    参数性能设置优化【ORACLE DB 】.zip

    参数性能设置优化是提升Oracle DB效率的重要手段,涉及到多个层面,包括内存管理、I/O优化、并行执行、SQL调优等。下面将详细阐述这些关键知识点。 一、内存管理 1. SGA(System Global Area):这是Oracle数据库...

Global site tag (gtag.js) - Google Analytics