使用这个新特性,
(1) oracle可以自动调整sql内存区。
(2) the sort_area_size等参数 is ignored by all the
sessions running。
在oracle9i中,pga_aggregate_target参数仅对专用服务器模式下(dedicated
server)的专属连接有效,对共享服务器(shared
server)连接无效;从oracle10g开始pga_aggregate_target对专用服务器连接和共享服务器连接同时生效。
1.pga_aggregate_target-此参数用来指定所有session总计可以使用最大pga内存。这个参数可以被动态的更改,取值范围从10m
-- (4096g-1 )bytes。
2。workarea_size_policy-此参数用于开关pga内存自动管理功能,该参数有两个选项:auto 和
manual,当设置为auto时,数据库使用oracle9i提供的自动pga管理功能,当设置为manual时,则仍然使用oracle9i前手工管理的方式。
缺省的,oracle9i中workarea_size_policy被设置为auto。
单个sql操作能够使用的pga内存按照以下原则分配:
1.对于串行操作
min(5% pga_aggregate_target,100mb)
2.对于并行操作
30% pga_aggregate_target /dop (dop=degree of parallelism
并行度)
启用了自动pga调整之后,oracle仍然需要遵循以下原则:
untunable memory size + tunable memory size <=
pga_aggregate_target
对于pga_aggregate_target参数的设置,oracle提供这样一个建议方案
1.对于oltp系统
pga_aggregate_target = (
> * 80%) * 20%
2.对于dss系统
pga_aggregate_target = (
> * 80%) * 50%
一段描述
在9i之前,我们主要是通过设置sort_area_size、hash_area_size等参数值(通常都叫做*_area_size)来管理PGA的使用,不过严格说来,是对PGA中的UGA中的私有SQL区域进行管理,这块内存区域又有个名称叫做SQL工作区域。但是,这里有个问题,就是这些参数都是针对某个session而言的,也就是说设置的参数值对所有连进来的session都生效。在数据库实际运行过程中,总有些session需要的PGA多,而有些session需要的PGA少。如果都设置一个很小的*_area_size,则会使得某些SQL语句运行时由于需要将临时数据交换到磁盘而导致效率低下。而如果都设置一个很大的值,又有可能一方面浪费空间,另一方面,消耗过多内存可能导致操作系统其他组件所需要的内存短缺,而引起数据库整体性能下降。所以如何设置*_area_size的值一直都是DBA很头疼的一个问题。
而从9i起所引入的一个新的特性可以有效的解决这个问题,这个特性就是自动PGA管理。DBA可以根据数据库的负载情况估计所有session大概需要消耗的PGA的内存总和,然后把该值设置为初始化参数pga_aggregate_target的值即可。Oracle会按照每个session的需要为其分配PGA,同时会尽量维持整个PGA的内存总和不超过该参数所定义的值。这样的话,oracle就能尽量避免整个PGA的内存容量异常增长而影响整个数据库的性能。从而,就有效的解决了设置*_area_size所带来的问题。
本文发布于:2024-02-04 19:08:58,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170714403358648.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |