【深入解析--eygle】 学习笔记
1.2.3 PGA的管理:
sys@felix 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
自动化SQL执行内存管理(Automated SQL Execution Memory Management),也称为自动PGA管理,使用这个新特性,Oracle可以在一个总体PGA使用限制下自动管理和调整SQL内存区,从而大大简化了DBA的工作,同时也 高了数据库的性能。
为实现自动的PGA管理,Oracle引入了几个新的初始化参数:
(1)PGA_AGGREGATE_TARGET 此参数用来指定所有session 总计可以使用最大PGA内存。这个参数可以被动态的更改,取值范围从10M ~(4096G-1 )bytes。
(2)WORKAREA_SIZE_POLICY此参数用于开关PGA内存自动管理功能,该参数有两个选项:AUTO 和 MANUAL,当 设 置为AUTO时,数据库使用自动PGA管理功能,当设置为MANUAL时,则仍然使用之前手工管理的方式。
缺省的,WORKAREA_SIZE_POLICY参数被设置为AUTO。
sys@felix SQL>show parameterWORKAREA_SIZE_POLIC
NAME TYPE VALUE
---------------------------------------------------------- --------
workarea_size_policy string AUTO
此外需要注意的是,在不同版本中,自动PGA管理的范畴不同:
(1)在Oracle9i中,PGA_AGGREGATE_TARGET参数仅对专用服务器模式下(DedicatedServer)的专属连接有效,但是对共享服务器(Shared Server)连接无效
(2)从Oracle10g开始PGA_AGGREGATE_TARGET对专用服务器连接和共享服务器连接同时生效。
1.2.4 参数的设置与内存分配
工作区性能期望实现如下目标:
workarea execution - optimal >= 90%
workarea execution - multipass = 0%
生产系统的PGA性能指标脚本:
SELECT NAME,
VALUE,
100 *
(VALUE / DECODE((SELECT SUM(VALUE)
FROM v$sysstat
WHERE NAME LIKE'workarea executions%'),
0,
NULL,
(SELECT SUM(VALUE)
FROM v$sysstat
WHERE NAME LIKE'workarea executions%'))) pct
FROMv$sysstat
WHERE NAMELIKE 'workarea executions%';

sys@felix SQL>select description,dest fromx$messages where description like 'SQL Memory%';
DESCRIPTION DEST
-------------------------------------------------- ----------
SQL Memory Management Calculation CKPT
15:26:04 sys@felix SQL>
sys@felix SQL>select * from v$pgastat;
NAME VALUE UNIT
---------------------------------------- ---------- ------------------------
aggregate PGA target parameter 146800640 bytes
aggregate PGA auto target 22099968 bytes
global memory bound 29360128 bytes
total PGA inuse 122360832 bytes
total PGA allocated 144107520 bytes
maximum PGA allocated 163160064 bytes
total freeable PGA memory 11141120 bytes
process count 32
max processes count 36
PGA memory freed back to OS 374669312 bytes
total PGA used for auto workareas 0 bytes
maximum PGA used for auto workareas 6313984 bytes
total PGA used for manual workareas 0 bytes
maximum PGA used for manual workareas 0 bytes
over allocation count 0
bytes processed 232915968 bytes
extra bytes read/written 0 bytes
cache hit percentage 100 percent
recompute count (total) 6004
19 rows selected.
1.2.6 PGA调整建议
伴随自动PGA调整功能的引入,Oracle同时引入相应的动态性能视图用于优化建议,PGA的优化建议通过v$pga_target_advice 和 v$pga_target_advice_histogra提供。v$pga_target_advice视图通过对不同PGA设置进行评估,给出在不同设置下的PGA命中率和OverAlloc等信息。
15:32:23 sys@felix SQL>select PGA_TARGET_FOR_ESTIMATE/1024/1024 PGAMB, PGA_TARGET_FACTOR,
15:37:08 2 ESTD_PGA_CACHE_HIT_PERCENTAGE, ESTD_OVERALLOC_COUNT
15:37:08 3 from v$pga_target_advice;
PGAMB PGA_TARGET_FACTOR ESTD_PGA_CACHE_HIT_PERCENTAGE ESTD_OVERALLOC_COUNT
---------- ----------------- ----------------------------- --------------------
17.5 .125 85 4
3