win7如何调整虚拟内存pga内存的自动调整

PGA的设置与调整 - tianshibaijia - ITeye技术网站
PGA,即程序全局区(Program Global Area),是Oracle体系机构的重要组成部分。Oracle 数据库对系统内存的总开销即是PGA+SGA。SGA主
要由库缓存(共享SQL区和PL/SQL区)和数据字典缓存组成。而PGA包含客户端连接服务器所派生的服务器进程的集合,每个服务器进程都拥有存放
数据和控制信息的私有内存区域。客户端进程和服务器端进程一一对应,由服务器端进程完成用户的请求,并将数据返回给客户端进程。
一、PGA的主要特性及结构1、主要特性
不同于SGA,此部分为非共享的内存
服务器进程启动或创建时分配,结束时释放,只能被一个进程使用(在系统运行时,排序,连接等操作可能需要进一步的PGA分配)
PGA的内容随服务器的模式(专用模式/共享服务器模式)不同而不用
所有服务器进程分配的PGA总和通常被称为PGA合计(Aggregated PGA),该值由由参数:pga_aggregate_target 决定
2、PGA的结构
PGA包括了以下几个结构:
排序区(Sort)
游标状态区(Cursor)
会话信息区(Session)
堆栈区(Stack)
PGA=UGA+排序区+散列区+位图合并区
与PGA相关的另一概念即是UGA(User Global Area),即用户全局区,与特定的会话相关联。
专用服务器连接模式,UGA在PGA中分配。
  共享服务器连接模式,UGA在SGA中的Large Pool中分配。
  如果采用专用服务器连接模式,PGA中包含UGA,其他区域用来排序,散列和位图合并。
4、导致排序的常用操作(耗用sort_area_size)
ORDER BY,GROUP BY,ROLLUP,DISTINCT
MINUS,INTERSECT,UNION
MIN(),MAX(),COUNT()
批量数据装载
二、PGA的管理模式与设置  1、PGA分两种管理模式:
手动PGA内存管理:用户指定排序区和散列区所使用的内存,每个连接使用相同的内存。
自动PGA内存管理:告诉Oracle可以使用的PGA的总量,由Oraclce根据系统负载决定具体分配。即PGA内存可以动态扩大和回收
9iR1时默认为手动PGA内存管理,9iR2以后默认为自动PGA内存管理。
  2、PGA内存管理模式设置(参数workarea_size_policy)
设为MANUAL,使用手动管理方式。
   设为AUTO,并且pga_aggregate_target不为0时,启用自动内存管理。
3、PGA相关的参数
bitmap_merge_area_size --&位图合并区分配的值
create_bitmap_area_size --&创建位图分配的值
hash_area_size --&主要用于hash join时分配的大小
sort_area_size --&排序所用的内存总量,影响one-pass,multi-pass,optimal
sort_area_retained_size --&排序后在内存中保存排序信息的内存总量
这几个参数在Oracle 9i之前被使用,在Oracle 9i可以对这几个参数进行手动分配,亦可以由系统自动分配。
当使用workarea_size_policy为AUTO且pga_aggregate_target非零值时,上述四个参数建议根据系统自动负荷自动调整
SQL& show parameter area_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
bitmap_merge_area_size integer 1048576
create_bitmap_area_size integer 8388608
hash_area_size integer 131072
sort_area_size integer 65536
workarea_size_policy string AUTO
pga_aggregate_target
a.决定了所有session总计可使用最大PGA内存值,该参数可动态修改。连接数少时则实际分配的PGA内存通常小于target值,当连接
数多的时候则实际分配的PGA内存会超过target值。target值为尽可能保持的目标值。
b.全局PGA分配以及私有工作区分配受限于该参数
c.该参数在9i中仅支持专有服务器模式,在10g之后既支持专有服务器模式也支持共享服务器模式
d.pga_aggregate_target被分为可调整区和不可调整区,可调整区为SQL工作区,其余为不可调整区
e.当少量用户连接到数据库时,则每个用户享有相对较多的PGA内存,而当大量用户连接时则每个用户分配相对较少的PGA内存。
f.单个串行查询(非并行查询)可能包括多个排序/散列操作,每个排序/散列操作最多使用5%的PGA内存。
h.单个并行查询最多可用到30%的PGA内存,无论有多少并行进程。
SQL& select name,value,display_value
2 from v$parameter where name in ('pga_aggregate_target','workarea_size_policy');
NAME VALUE DISPLAY_VALUE
-------------------- -------------------- -------------------------
pga_aggregate_target 0M
workarea_size_policy AUTO AUTO三、PGA 的分配原则
PGA_AGGREGATE_TARGET的值应该基于Oracle实例可利用内存的总量来设置。假定当前服务器可分配物理内存为4GB,且仅一个实例运行在
该服务器,则可以考虑分配80%的可用内存给Oracle实例,即3.2G。剩下的内存分配给操作系统和其它应用程序。此时必须在内存中划分
SGA和PGA区域。
在OLTP系统中,典型PGA内存设置应该是总内存的较小部分(例如20%),剩下80%分配给SGA。
OLTP:PGA_AGGREGATE_TARGET = (total_mem * 80%) * 20%
在DSS系统中,由于会运行一些很大的查询,典型的PGA内存最多分配70%的内存。
DSS:PGA_AGGREGATE_TARGET = (total_mem * 80%) * 50%
在这个例子中,总内存4GB,DSS系统,你可以设置PGA_AGGREGATE_TARGET为1600MB,OLTP则为655MB。
四、PGA的调整建议
&p&对于PGA的监控与调整,可以通过下列视图作为参考
v$pga_target_advice
v$pga_target_advice_histogram
1、查看v$pgastat视图获得PGA的相关信息
SQL&select*fromv$
NAMEVALUEUNIT
aggregatePGAtargetparameterbytes
aggregatePGAautotargetbytes
globalmemoryboundbytes
totalPGAinusebytes
totalPGAallocatedbytes
maximumPGAallocatedbytes
totalfreeablePGAmemorybytes
processcount19
maxprocessescount42
PGAmemoryfreedbacktoOSbytes
totalPGAusedforautoworkareas4829184bytes
maximumPGAusedforautoworkareasbytes
totalPGAusedformanualworkareas0bytes
maximumPGAusedformanualworkareas531456bytes
overallocationcount1
bytesprocessedbytes
extrabytesread/writtenbytes
cachehitpercentage98percent
recomputecount(total)1473108
该视图可以显示各种不同排序工作区的使用情况,
OPTIMAL_EXECUTIONS是不需要通过临时表空间交换的操作的次数。
ONEPASS_EXECUTIONS是需要进行一次临时表空间交换的操作次数。
MULTIPASSES_EXECUTIONS是需要多次临时表空间交换的操作次数。
原则上,如果100%的操作都是内存操作,是最佳的选择。如果内存不足,某些大型操作是ONEPASS的,也是可以接受的。
出现MULTIPASSES的操作会引起性能的急剧下降,此时应考虑调整PGAtarget
/**************************************************/
/*Author:RobinsonCheng*/
/*Blog:http://blog.csdn.net/robinson_0612*/
/*MSN:robinson_*/
/**************************************************/
SQL&SELECTLOW_OPTIMAL_SIZE/1024low_kb,(HIGH_OPTIMAL_SIZE+1)/1024high_kb,
2optimal_executionsopt_exec,onepass_executionsonepass_exec,multipasses_executionsmultipass_exec
3FROMv$sql_workarea_histogram
4WHEREtotal_executions!=0;
LOW_KBHIGH_KBOPT_EXECONEPASS_EXECMULTIPASS_EXEC
LOW_KBHIGH_KBOPT_EXECONEPASS_EXECMULTIPASS_EXEC
3、从v$pga_target_advice获取pga设置的建议值
SQL&selectpga_target_for_estimate/pgamb,
2pga_target_factorp_tr_fct,
3estd_pga_cache_hit_percentagee_p_c_hit_prct,
4estd_overalloc_counte_or_cnt
5fromv$pga_target_
PGAMBP_TR_FCTE_P_C_HIT_PRCTE_OR_CNT
142.5.75996
&spanstyle="font-family:SimS"&4、通过V$SYSSTAT查看排序区的情况
SQL&colprofileformata40
SQL&SELECTnameprofile,cnt,decode(total,0,0,round(cnt*100/total,4))percentage
2FROM(SELECTname,valuecnt,(sum(value)over())totalFROMV$SYSSTATWHEREnamelike'workareaexec%');
PROFILECNTPERCENTAGE
workareaexecutions-optimal9
workareaexecutions-onepass11.001
workareaexecutions-multipass00
SQL&SELECTround(m.value/(m.value+d.value),4)*100||'%'memory_disk_sort_ratio
2FROM(SELECTvalueFROMv$sysstatWHERENAME='sorts(memory)')m,
3(SELECTvalueFROMv$sysstatWHERENAME='sorts(disk)')d;
MEMORY_DISK_SORT_RATIO
100%&/span&
五、PGA的调整命令系统级更改:
  ALTER SYSTEM SET WORKAREA_SIZE_POLICY = {AUTO | MANAUL};
  ALTER SYSTEM SET PGA_AGGREGATE_TARGET=;
  ALTER SYSTEM SET SORT_AREA_SIZE = 65536 SCOPE = SPFILE;--&使用AUTO方式时该参数不起作用
  ALTER SYSTEM SET HASH_AREA_SIZE = 65536 SCOPE = SPFILE;--&使用AUTO方式时该参数不起作用
  会话级更改
  ALTER SESSION SET WORKAREA_SIZE_POLICY = {AUTO | MANAUL};
  ALTER SESSION SET SORT_AREA_SIZE = 65536;--&使用AUTO方式时该参数不起作用
  ALTER SESSION SET HASH_AREA_SIZE = 65536;--&使用AUTO方式时该参数不起作用
tianshibaijia
浏览: 347659 次
mono死了?mono的开发团队从novel分离出来建立了一个 ...
[color=blue][/color]你很不错的一篇文档
沙舟狼客 写道User_Java 写道票是死的。权当商品了,放 ...
如果只是分表就能解决的问题,博主又极大的藐视了下 铁路的售票系 ...oracle 10g 修改SGA,PGA大小_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
oracle 10g 修改SGA,PGA大小
上传于||文档简介
&&转至-EnchanterBlue-ChinaUnix博客
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢访问量:614
注册日期:
阅读量:5863
阅读量:12276
阅读量:381662
阅读量:1073603
51CTO推荐博文
前接天需要改一下Oracle的内存参数,本来oracle&装机时候已经配置好了sga&和pga的大小了,但是有好多问题随之出现。linux&用的是16G内存,sga&内存12G,pga&4G,所以linux&系统很慢。
改打开连接数:
SQL&show&parameter&open_&---显示参数值
SQL&alter&system&set&open_cursors&=&1000;&---修改参数值为1000
SQL&&----提交
修改成功。
(转)Oracle&调整SGA、PGA大小
博客分类:&Oracle
SQL&&show&parameter&
SQL&&alter&system&set&sga_max_size=4096M&scope=
System&altered.
SQL&&alter&system&set&sga_target=4096M&scope=
System&altered.
如果是RAC环境,需要这样增加sid='*':
alter&system&set&sga_target=20G&scope=spfile&sid='*';
重启使更改生效:
SQL&&shutdown&
Database&closed.
Database&dismounted.
ORACLE&instance&shut&down.
SQL&&startup
ORACLE&instance&started.
Total&System&Global&Area&&bytes
Fixed&Size&&&&&&&&&&&&&&&&&&2026296&bytes
Variable&Size&&&&&&&&&&&&&&bytes
Database&Buffers&&&&&&&&&&bytes
Redo&Buffers&&&&&&&&&&&&&&&&bytes
Database&mounted.
Database&opened.
SQL&&show&parameter&
NAME&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&TYPE&&&&&&&&VALUE&
-----------&------------------------------
lock_sga&&&&&&&&&&&&&&&&&&&&&&&&&&&&&boolean&&&&&FALSE
pre_page_sga&&&&&&&&&&&&&&&&&&&&&&&&&boolean&&&&&FALSE
sga_max_size&&&&&&&&&&&&&&&&&&&&&&&&&big&integer&4G
sga_target&&&&&&&&&&&&&&&&&&&&&&&&&&&big&integer&4G
SQL&&show&parameter&pga;
不用重启DB,直接在线修改。&
SQL&&alter&system&set&workarea_size_policy=auto&scope=&
System&altered.
SQL&&alter&system&set&pga_aggregate_target=512m&scope=&
System&altered.&
SQL&&show&parameter&workarea&
NAME&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&TYPE&&&&&&&&VALUE&
------------------------------------&-----------&------------------------------&
workarea_size_policy&&&&&&&&&&&&&&&&&string&&&&&&AUTO&--这个设置成AUTO&
SQL&&show&parameter&pga&
NAME&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&TYPE&&&&&&&&VALUE&
------------------------------------&-----------&------------------------------&
pga_aggregate_target&&&&&&&&&&&&&&&&&big&integer&
SELECT&*&FROM&V$PGASTAT;
aggregate&PGA&auto&target&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&bytes&&&&--当前可用于自动分配了的PGA大小,应该比PGA_AGGREGATE_TARGET&小
over&allocation&count&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&1118&&&&--实例启动后,发生的分配次数,如果这个值大于0,就要考虑增加pga的值
1&查看&SGA大小&&show&parameter&sga_max_size&&db_cache_size的尺寸受&SGA的影响为能大于SGA
2&查看&show&parameter&shared_pool_size&尺寸
一般来说&shared_pool_size+db_cache_size=SGA_MAX_SIZE*70%左右
经过计算再修改db_cache_size
sql&alter&system&set&db_cache_size=&大小M&&scope=spfile&sid='数据库SID';
sql&shutdown&immediate
sql&startup
sql&show&parameter&db_cache_size
就可以看到修改后的效果了
[oracle@oracle_db&~]$&sqlplus&/&as&sysdba
SQL*Plus:&Release&10.2.0.4.0&-&Production&on&Wed&Aug&5&21:56:47&2015
Copyright&(c)&,&Oracle.&&All&Rights&Reserved.
Connected&to:
Oracle&Database&10g&Enterprise&Edition&Release&10.2.0.4.0&-&64bit&Production
With&the&Partitioning,&OLAP,&Data&Mining&and&Real&Application&Testing&options
SQL&&show&parameter&
&&&&&TYPE &VALUE
------------------------------------&-----------&------------------------------
&&&&&boolean &FALSE
pre_page_sga
&&&&&boolean &FALSE
sga_max_size
&&&&&big&integer&12G
sga_target
&&&&&big&integer&12G
SQL&&alter&system&set&sga_max_size=10240M&scope=
System&altered.
SQL&&alter&system&set&sga_target=10240M&scope=
System&altered.
SQL&&shutdown&
Database&closed.
Database&dismounted.
ORACLE&instance&shut&down.
SQL&&startup
ORACLE&instance&started.
Total&System&Global&Area&1.0737E+10&bytes
Fixed&Size
&&&&2101808&bytes
Variable&Size
Database&Buffers &&bytes
Redo&Buffers
Database&mounted.
Database&opened.
SQL&&&show&parameter&
&&&&&TYPE &VALUE
------------------------------------&-----------&------------------------------
&&&&&boolean &FALSE
pre_page_sga
&&&&&boolean &FALSE
sga_max_size
&&&&&big&integer&10G
sga_target
&&&&&big&integer&10G
SQL&&show&parameter&pga;
SQL&&alter&system&set&workarea_size_policy=auto&scope=&
System&altered.
SQL&&alter&system&set&pga_aggregate_target=2048m&scope=
System&altered.
SQL&&&show&parameter&workarea&
&&&&&TYPE &VALUE
------------------------------------&-----------&------------------------------
workarea_size_policy
&&&&&string &AUTO
SQL&&show&parameter&workarea&
&&&&&TYPE &VALUE
------------------------------------&-----------&------------------------------
workarea_size_policy
&&&&&string &AUTO
SQL&&show&parameter&pga;
SQL&&show&parameter&
&&&&&TYPE &VALUE
------------------------------------&-----------&------------------------------
&&&&&boolean &FALSE
pre_page_sga
&&&&&boolean &FALSE
sga_max_size
&&&&&big&integer&10G
sga_target
&&&&&big&integer&10G
SQL&&SQL&&
最后的结果是改成sga&10G&+&pga&2G&,系统内存&4G,swap&分区&内存32G。
改后效果并不是很明显,需要后续观察本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)可调整内存
Tunable Memory Size
pga内存调整还分为可调整内存(tunable memory size)和不可调整内存(untunable memory size)
可调整内存是由sql工作区使用的,剩下部分是不可调整内存
基于5个网页-
在 Solaris(TM) 上,通过 /etc/system 中的可调项来调整内存。
In Solaris(TM), you do this through the tunables in /etc/system.
它通过创建可随机调整大小的长整数数组导致内存分配。
It causes memory allocation by creating randomly sized arrays of long integers.
PLM 使用微分区技术重新调整资源,可用于管理内存、专用处理器分区以及共享处理器分区。
PLM is able to manage memory, dedicated processor partitions, and shared processor partitions, using micro-partitioning technology to readjust the resources.
$firstVoiceSent
- 来自原声例句
请问您想要如何调整此模块?
感谢您的反馈,我们会尽快进行适当修改!
请问您想要如何调整此模块?
感谢您的反馈,我们会尽快进行适当修改!查看: 808|回复: 4
如何调整pga内存的自动调整
论坛徽章:0
linux + oracle 11.2g
目标:要让pga内存自动调整
修改方式:
alter system set pga_aggregate_target=200m scope=
workarea_size_policy为auto
show parameter area
可以看到sort_area_size, hash_area_size等还是有值的,那我的设置是否已生效了呢?
论坛徽章:107
不是问题,只要你workarea_size_policy为auto,那些*area_size就不起作用
论坛徽章:0
zergduan 发表于
不是问题,只要你workarea_size_policy为auto,那些*area_size就不起作用
那我再问一下,在oracle11g中引入了memory_target的参数,
这样一来,SGA及PGA都可以做到自动调节,
那按你的意思是只要workarea_size_policy为auto,而不管pga_aggregate_target是否有值,是吧?
既然物理内存、SGA、PGA自动调节,那只要workarea_size_policy为auto就可以了,是吧?
认证徽章论坛徽章:8
rich_ying 发表于
那我再问一下,在oracle11g中引入了memory_target的参数,
这样一来,SGA及PGA都可以做到自动调节,
要想打开相应内存区域的自动调整,只需设置相应*_target参数为非零值即可。
workarea_size_policy只是负责pga部分自动调整,当pga_aggregate_target设置为非零值时,自动设置为auto。
认证徽章论坛徽章:8
rich_ying 发表于
那我再问一下,在oracle11g中引入了memory_target的参数,
这样一来,SGA及PGA都可以做到自动调节,
要想打开相应内存区域的自动调整,只需设置相应*_target参数为非零值即可。
workarea_size_policy只是负责pga部分自动调整,当pga_aggregate_target设置为非零值时,自动设置为auto。
itpub.net All Right Reserved. 北京皓辰网域网络信息技术有限公司版权所有    
 北京市公安局海淀分局网监中心备案编号: 广播电视节目制作经营许可证:编号(京)字第1149号}

我要回帖

更多关于 pga内存 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信