PGA与SGA的分配
_______________________________________________________________
SGA:
共享池:200MB
缓冲区高速缓存:24MB
大型池:9MB
Java池:32MB
SAG总容量:264.933
SAG的最大大小:305.069
PGA:
总记PGA目标:240MB
分配的当前PGA:8914KB
分配的最大PGA(自启动以来)9081KB
高速缓存命中百分比:100%
PGA和SGA的和应小于系统内存总量前去操作系统和其他应用程序所需内存后得到的值。
_______________________________________________________________
二、名词解释:
_______________________________________________________________
SGA:System Global Area是Oracle Instance的基本组成部分,在实例启动时分配;
系统全局域SGA主要由三部分构成:共享池、数据缓冲区、日志缓冲区。
共享池:Shared Pool用于缓存最近被执行的SQL语句和最近被使用的数据定义,
主要包括:Library cache(共享SQL区)和Data dictionary cache(数据字典缓冲区)
共享SQL区是存放用户SQL命令的区域,数据字典缓冲区存放数据库运行的动态信息
缓冲区高速缓存:Database Buffer Cache用于缓存从数据文件中检索出来的数据块,可以大大提高查询和更新数据的性能
大型池:Large Pool是SGA中一个可选的内存区域,它只用于shared server环境
Java池:ava Pool为Java命令的语法分析提供服务
PGA:Program Global Area是为每个连接到Oracle database的用户进程保留的内存。
_______________________________________________________________
三、分析与调整:
_______________________________________________________________
1、系统全局域:
SGA与操作系统、内存大小、cpu、同时登录的用户数有关。可占OS系统物理内存的1/2到1/3,当然,如果服务器上只有oracle的话,
可以分配的更大一些,如果还有其他服务,如IIS等,那就要分的小一些。
1、共享池:
修改共享池的大小,ALTER SYSTEM SET SHARED_POOL_SIZE = 64M;
查看共享SQL区的使用率:
select(sum(pins-reloads))/sum(pins) "Library cache" from v$librarycache;--动态性能表
这个使用率应该在90%以上,否则需要增加共享池的大小。
查看数据字典缓冲区的使用率:
select (sum(gets-getmisses-usage-fixed))/sum(gets) "Data dictionary cache" from v$rowcache;--动态性能表
这个使用率也应该在90%以上,否则需要增加共享池的大小。
2、缓冲区高速缓存:
它的大小要根据数据量来决定:
SGA=((db_block_buffers * block size)+(shared_pool_size+large_pool_size+java_pool_size+log_buffers)+1MB
查看数据库数据缓冲区的使用情况:
SELECT name,value FROM v$sysstat order by name WHERE name IN('DB BLOCK GETS','CONSISTENT GETS','PHYSICAL READS');
计算出来数据缓冲区的使用命中率=1-(physical reads/(db block gets+consistent gets)),这个命中率应该在90%以上,否则需要
增加数据缓冲区的大小。
select sum(pins) "请求存取数",sum(reloads) "不命中数",sum(reloads)/sum(pins) from v$librarycache
其中,pins,显示在库高速缓存中执行的次数;reload,显示在执行阶段库高速缓存不命中的数目,一般sum(reloads)/sum(pins)的
值应接近于零.如果大于1%就应该增加shared_pool_size的值, 来提高数据字典高速缓存可用的内存数量,减少不命中数.
通过动态性能表v$rowcache来查询数据字典高速缓存的活动:
select sum(gets) "请求存取数",sum(getmisses) "不命中数" from v$rowcache
其中,gets,显示请求相应项的总数; getmisses,显示造成高速缓存不命中的数据请求数.
Hit ratio与wait events:
select value from $pgastat where name ='cache hit percentage'
Hit ratio与wait events是此消彼涨,在执行类似于
select col1,col2,.. from tab1 a where exists (
select 1 from tab2 where a.col3 = b.col3
)
where ....
的语句的时候,如果tab1的记录很多的话,你会发现系统的hit ratio会有很大的提高,wait events是否会改观呢.
3、日志缓冲区
SELECT name, value FROM v$sysstat WHERE name IN ('redo entries','redo log space requests')查看日志缓冲区的使用情况。
查询出的结果可以计算出日志缓冲区的申请失败率:
申请失败率=requests/entries,申请失败率应该接近于0,否则说明日志缓冲区开设太小,需要增加ORACLE数据库的日志缓冲区。
3、大型池:
可以减轻共享池的负担
可以为备份、恢复等操作来使用
不使用LRU算法来管理
其大小由数据库的‘共享模式/db模式’如果是共享模式的话,要分配的大一些
指定Large Pool的大小,ALTER SYSTEM SET LARGE_POOL_SIZE=64M
3、Java池:
在安装和使用Java的情况下使用
其大小由JAVA_POOL_SIZE指定
show parameter share_pool_size;
其中:
1 查看PGA
show parameter pga;
2 修改PGA
alter system set pga_aggregate_target=90M scope=both;
pga_aggregate_target是一个动态参数,可以在运行时修改,因此这里的scope设置为both,新的内存大小马上生效,并且还将修改保存在Oracle的启动文件里。
http://space.itpub.net/8554499/viewspace-592271
2. 排序在内存还是在磁盘中进行?
在内存执行的排序速度要比在磁盘执行的排序速度快14000倍。如果是专用连接,排序内存根据INIT.ORA的sort_area_size进行分配,如果是共享服务器连接,排序内存根据large_pool_size进行分配。sort_area_size的增大可以减少磁盘排序,但是过大将使ORACLE性能降低,因为所用的连接回话都会分配到一个sort_area_size大小的内存,所以,为了提高有限的查询速度,可能会浪费大量的内存。增加sort_multiblock_read_count的值使每次读取更多的内容,减少运行次数,提高性能。
3.怎么设置sort_area_size:每隔一段时间增加sort_area_size,并监控内存排序和磁盘排序数量。当sort_area_size的值的增加不在导致磁盘排序减少时,就合适了。
OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观、易懂的查询结果。
OLTP是传统的关系型数据库的主要应用模式,主要面对基本的、日常的事务处理;比如数据库记录的增、删、改、查。
分享到:
相关推荐
SGA+PGA最好不要超过总内存的70%,内存详细调整方案,供学习。
Oracle数据库系统是企业级数据管理的重要工具,其中的SGA(System Global Area)和PGA(Program Global Area)是两个核心概念,对于理解Oracle数据库的工作原理至关重要。本文将深入探讨这两个概念,以及它们在...
在Oracle数据库管理中,了解和优化程序全局区(PGA)和系统全局区(SGA)的内存分配至关重要,这直接关系到数据库服务器性能的高效运行。以下是对PGA、SGA以及如何合理配置数据库服务器内存的深入解析。 ### PGA...
Oracle 数据库的 System Global Area (SGA) 是一个共享内存区域,它包含了数据库运行所需的各种组件,例如数据缓冲区缓存、重做日志缓冲区、共享 SQL 区域等。当需要调整 SGA 大小以优化数据库性能时,需要遵循一定...
Oracle数据库的内存结构主要包括三个关键部分:System Global Area (SGA), Program Global Area (PGA), 和 User Global Area (UGA)。这些区域都是用于存储和处理数据库操作的数据和信息。 1. **System Global Area ...
### Oracle PGA详解:深入理解与优化策略 #### PGA概述与重要性 在Oracle数据库系统中,PGA(Program Global Area)是每个服务器进程所拥有的专用内存区,它为每个会话提供私有数据结构和控制信息。PGA的重要性...
OracleSGA和PGA管理
这一特性允许数据库根据实际的处理需求动态地调整内存区域的大小,如sort_area_size、pga_aggregate_target、large_pool_size、sga_max_size和db_cache_size。这些内存区域分别服务于排序操作、PL/SQL程序执行、大...
### 修改Oracle初始化参数:Process, Session, SGA, PGA 在Oracle数据库管理中,正确配置初始化参数对于确保系统的稳定性和性能至关重要。本文将详细介绍如何修改与监控`Process`, `Session`, `SGA`, 和 `PGA` 相关...
oracle11g10g安装备份基础维护
### Oracle实例内存优化详解:SGA与PGA的调整策略 #### 概述 在Oracle数据库管理系统中,优化数据库性能往往涉及到对其内部结构的理解与微调,尤其是针对内存资源的合理分配。本文将深入探讨Oracle实例的内存管理...
看第四步.2、如果配置了网络服务名,则 在路径D:\oracle\product\10.2.0\db_1\network\admin\listener.o ra下 找到listener.ora。 修改为: 代码如下: # listener.ora Network Configuration File: D:\oracle\product\...
- SGA和PGA的合理调整对于优化Oracle数据库性能至关重要。 - 定期监控和分析SGA各部分的使用率可以帮助我们更好地理解系统的工作负载,并据此做出调整决策。 - 在实际操作中,需要综合考虑系统的实际需求、硬件配置...
Oracle SGA,全称为System Global Area,是Oracle数据库实例的核心组成部分,主要负责存储...同时,合理规划SGA大小,避免内存碎片,以及适时地使用pga_aggregate_target参数,都可以帮助提高Oracle数据库的整体性能。
根据系统类型、DB版本和OS内存自动计算Oralce建议的memory_target、SGA和PGA大小
Oracle9i数据库系统引入了动态SGA(System Global Area)和PGA(Program Global Area)的特性,这使得数据库实例能够更有效地管理和优化内存资源。在Oracle9i之前,SGA和PGA的配置往往需要手动调整,以适应不同工作...