oracle 10g中需要设置workarea_size_policy为auto,并设置pga_aggregate_target参数来实现pga的内存管理。
oracle 10g中需要设置workarea_size_policy为auto,并设置pga_aggregate_target参数来实现pga的内存管理。
pga_aggregate_target参数可以根据经验值进行设置,评估pga的简单方法可以查看awr报告中的pga命中率(pga cache hit%),以及分析direct path read temp和direct path write temp等待事件是否比较高,这些等待表示pga设置参数有限而导致大量临时表空间操作出现的等待事件。当然还有复杂的评估pga的方法,以后再看吧。
注意,9i的shared server连接需要明确设置sort_area_size 和 hash_area_size,也就是说不能用自动管理模式。10g则无此限制。
pga_aggregate_target是一个上限(理论上的最大值,pl/sql就很容易超过),oracle启动时并不分配那么多,你甚至可以设置大于物理mem的大小(生产库不要这么做呀,要设置pga_aggregate_target+sga提醒一下自己。
v$pgastat:
几个重要参数的说明:
aggregate pga target parameter 设置的pga的目标参数值
aggregate pga auto target 在自动管理模式下,oracle工作区可使用的pga
total pga inuse 当前实例使用的pga
total pga allocated 当前实例实际分配的pga
maximum pga allocated 可分配的最大pga
over allocation count oracle分配的pga超过pga_aggregate_target的次数.这个参数可以判断pga_aggregate_target是否设置的太小.
cache hit percentage 自从instance启动后的pga命中率,如果所有的操作都在mem中进行没有在temp里运行的话应该是100%