主要总结下pga分配算法,详细概念单总结 简单理解pga,pga就是一个操作系统进程,或线程(WIN上)的专用内存 pmon,smon这些后台进程都有自己的pga pga早期手动 管理 组成由sort_area_size,hash_area_size,bitmap_merge_size,create_bitmap_area_size(这些都叫工作
主要总结下pga分配算法,详细概念单总结
简单理解pga,pga就是一个操作系统进程,或线程(WIN上)的专用内存
pmon,smon这些后台进程都有自己的pga
pga早期手动管理组成由sort_area_size,hash_area_size,bitmap_merge_size,create_bitmap_area_size(这些都叫工作区)
手动缺点,不好回收和共享,会造成PGA内存过度消耗
PAG自动(9i开始支持)
1.pga_aggregate_target来指定所有session总计可以使用的最大pga内存(10M-4096G)
2.workarea_size_policy控制pag自动管理功能开启或关闭,auto表示开启(default), manual表示关闭,9i auto只支持专用连接,共享连接不支持
10g都支持
_pga_max_size:控制pga最大大小
9i-10r1中,单个sql操作内存使用现在
1.对于串行操作,单sql操作pga分配原则,min(5%*pga_aggregate_target,100mb)
########5%*pga_aggregate_targe实际由_smm_max_size控制]
2.并行操作使用pga按 30%*pga_aggregate_target/dop(dop=并行度)
9I _pga_max_size与_smm_max_size
_pga_max_size>5%*pga_aggregate_target,_smm_max_size=5%*pga_aggregate_target’
_pga_max_size<5%*pga_aggregate_target,_smm_max_size=50*_pga_max_size
used_pga_mb=min(5%*pga_aggregate_target,50*_pga_max_size,_smm_max_size)
10r2,11g原则
1.串行操作
pga_aggregate_target<=500MB,_smm_max_size=20%*pga_aggregate_target
pga_aggregate_target between 500m and 1000M ,_smm_max_size=100M
pga_aggregate_target between 1001m and 2.5g,_smm_max_size=10%*pga_aggregate_target
pga_aggregate_target >2.5g,_smm_max_size=0.25GB
2.并行操作
50*pag_aggregate_target/dop
dop<=5时,_smm_max_size生效
dop>5时,_smm_px_max_size生效
_newsort_enabled 控制算法规则,true用10g新算法,false用9i算法
SQL> set linesize 132
SQL> column name format a30
SQL> column value format a25
SQL> SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc describ
2 FROM SYS.x$ksppi x, SYS.x$ksppcv y
3 WHERE x.indx = y.indx AND x.ksppinm LIKE ‘%&par%’
4
SQL> /
Enter value for par: newsort
old 3: WHERE x.indx = y.indx AND x.ksppinm LIKE ‘%&par%’
new 3: WHERE x.indx = y.indx AND x.ksppinm LIKE ‘%newsort%’
NAME VALUE
—————————— ————————-
DESCRIB
————————————————————————————————————————————
_newsort_enabled TRUE
controls whether new sorts can be used as system sort
设置建议
1.oltp系统 pag_aggregate_target=*80%*20%
2.dss系统 pag_aggregate_target=*80%*50%
分析:留20%给os,其他80%给pga+sga,oltp ,pga占 80%中20%,dss占80%中50%
#查看某个process使用情况
select pid,spid,username ,pga_used_mem,pga_alloc_mem,pga_freeable_mem,pga_max_mem,program from v$process where spid=&spid
SQL> select pid
,spid,username ,pga_used_mem,pga_alloc_mem,pga_freeable_mem,pga_max_mem,program from v$process where spid=&spid;
Enter value for spid: 25510
old 1: select pid,spid,username ,pga_used_mem,pga_alloc_mem,pga_freeable_mem,pga_max_mem,program from v$process where spid=&spid
new 1: select pid,spid,username ,pga_used_mem,pga_alloc_mem,pga_freeable_mem,pga_max_mem,program from v$process where spid=25510
PID SPID USERNAME PGA_USED_MEM PGA_ALLOC_MEM
———- ———————— ————— ———— ————-
PGA_FREEABLE_MEM PGA_MAX_MEM PROGRAM
—————- ———– ————————————————
33 25510 oracle 0 2664666
983040 8431834oracle@dmk01(PZ98)