1、pga_aggregate_target
从Oracle9i开始,Oracle引入了自动PGA管理的新特型,PGA_AGGREGATE_TARGET参数用于控制PGA的总体期望目标,但是在Oracle9i中,PGA_AGGREGATE_TARGET参数仅对专用服务器模式下(Dedicated Server)的专属连接有效,对共享服务器(Shared Server)连接无效;从Oracle10g开始PGA_AGGREGATE_TARGET对专用服务器连接和共享服务器连接同时生效。
if ( 数据库版本 >= 10gR1 )
then
if (workarea_size_policy=auto)
then
pga_aggregate_target 有效
else
sort_area_size 有效
end if
else -- 数据库版本 < 10gr1
if ( shared server 连接方式 )
then
sort_area_size 有效
else -- dedicated server连接方式
if (workarea_size_policy=auto)
then
pga_aggregate_target 有效
else
sort_area_size有效
end if
end if
end if
PGA的效率 v$sql_workarea_histogram
select
case
when low_optimal_size < 1024*1024
then to_char(low_optimal_size/1024,'999999') ||
'kb <= pga < ' ||
(high_optimal_size+1)/1024|| 'kb'
else to_char(low_optimal_size/1024/1024,'999999') ||
'mb <= pga < ' ||
(high_optimal_size+1)/1024/1024|| 'mb'
end ||': '||
optimal_executions||'--'||
onepass_executions||'--'||
multipasses_executions as mystat
from
v$sql_workarea_histogram
where total_executions <> 0
order by low_optimal_size
按PGA 的workarea去分析. 2mb <= pga < 4mb: 2571--756--0 表示workarea在 2m-4m 之间的在内存里运行的有2571次,756次需要用到一次disk,0次多次用到disk。
PGA的建议 v$pga_target_advice
select
trunc(pga_target_for_estimate/1024/1024)||'mb'
pga_target_for_estimate,
to_char(pga_target_factor * 100,'999.9') ||'%'
pga_target_factor,
trunc(bytes_processed/1024/1024) bytes_processed,
trunc(estd_extra_bytes_rw/1024/1024) estd_extra_bytes_rw,
to_char(estd_pga_cache_hit_percentage,'999') || '%'
estd_pga_cache_hit_percentage,
estd_overalloc_count
from
v$pga_target_advice
当前的pga_aggregate_target 是209715200,即200m,从结果上看命中率98%,说明目前的设置尚可。
本文介绍了Oracle数据库中PGA_AGGREGATE_TARGET参数的作用及其在不同版本和连接模式下的有效性,并提供了如何通过v$sql_workarea_histogram和v$pga_target_advice视图来评估PGA使用情况的方法。
850

被折叠的 条评论
为什么被折叠?



