Oracle 10g中需要设置workarea_size_policy为AUTO,并设置pga_aggregate_target参数来实现PGA的内存管理。
- SQL> show parameter pga
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- pga_aggregate_target big integer 169M
- SQL> show parameter workarea
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- workarea_size_policy string AUTO
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<MEM ,别挑战ORACLE的极限)。一个SESSION可能有多个sort,hash的workarea,每一个workarea最多会用到5%或100M(由两个隐藏参数控制),因此如果预计每个sort,hash的workarea是5M,应该设置PGA_AGGREGATE_TARGET成100M。但是,随着用户的增加或工作量的增大,给每个workarea的容量可能会减少,因为有总量PGA_AGGREGATE_TARGET的限制,比如需要100个workarea,那么每个只能分配到1M。parallel query会用到最多30%(由隐藏参数控制)的PGA_AGGREGATE_TARGET,每一个parallel query的PIECE会分配相应的30%,也就是parallel query可能会用到30M,10个PARALLEL,那么每个用3M。这也就是建议用auto管理的原因,一个系统通常workload,session是随时间变化的,早上可能3个用户,中午可能300个用户,所以用固定sort,hash的参数是不合时宜的.自动管理才可以实现在用户并发少的时候分配更多的内存,www.linuxidc.com在并发多的时候照顾大众,分配少的内存。ORACLE 9.2以后有了PGA advisory。这一段中所说的5%,30%不知是否正确,没有时间看oracle文档,在此
提醒一下自己。
v$pgastat:
- SQL> set pagesize 200
- SQL> select name||" "|| to_char(decode( unit,
- 2 "bytes", value/1024/1024,
- 3 value ),"999,999,999.9")||" "||
- 4 decode( unit, "bytes", "mbytes", unit )
- 5 from v$pgastat;
-
- NAME||""||TO_CHAR(DECODE(UNIT,"BYTES",VALUE/1024/1024,VALUE),"999,999,999.9")||""||DECODE(UN
- --------------------------------------------------------------------------------------------
- aggregate PGA target parameter 169.0 mbytes
- aggregate PGA auto target 124.3 mbytes
- global memory bound 33.8 mbytes
- total PGA inuse 30.9 mbytes
- total PGA allocated 65.4 mbytes
- maximum PGA allocated 82.2 mbytes
- total freeable PGA memory .0 mbytes
- process count 24.0
- max processes count 33.0
- PGA memory freed back to OS .0 mbytes
- total PGA used for auto workareas .0 mbytes
- maximum PGA used for auto workareas .6 mbytes
- total PGA used for manual workareas .0 mbytes
- maximum PGA used for manual workareas .0 mbytes
- over allocation count .0
- bytes processed 23.5 mbytes
- extra bytes read/written .0 mbytes
- cache hit percentage 100.0 percent
- recompute count (total) 817.0
几个重要参数的说明:
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%Oracle 内存管理SGAOracle 删除指定字段重复的记录相关资讯 Oracle教程
- Oracle中纯数字的varchar2类型和 (07/29/2015 07:20:43)
- Oracle教程:Oracle中查看DBLink密 (07/29/2015 07:16:55)
- [Oracle] SQL*Loader 详细使用教程 (08/11/2013 21:30:36)
| - Oracle教程:Oracle中kill死锁进程 (07/29/2015 07:18:28)
- Oracle教程:ORA-25153 临时表空间 (07/29/2015 07:13:37)
- Oracle教程之管理安全和资源 (04/08/2013 11:39:32)
|
本文评论 查看全部评论 (0)