ITPub博客

Oracle9i自动PGA管理的新特性特性管理自动内存PGAOracle调整参数PGA_AGGREGATE_TARGET

原创 Linux操作系统 作者:aikangyan 时间:2007-12-27 18:39:22 0 删除 编辑
在Oracle9i之前,PGA的计算和控制都是比较复杂的事情,从Oracle9i开始,Oracle提供了一种SQL内存管理的新方法:自动化 SQL执行内存管理(AutomatedSQLExecutionMemoryManagement),使用这个新特性,Oracle可以自动调整SQL 内存区,而不用关闭数据库,这一改进大大简化了DBA的工作,同时也提高了Oracle数据库的性能。

   为实现自动的PGA管理,Oracle引入了几个新的初始化参数:

   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.

   需要注意的是,在Oracle9i中,PGA_AGGREGATE_TARGET参数仅对专用服务器模式下 (DedicatedServer)的专属连接有效,但是对共享服务器(SharedServer)连接无效;从Oracle10g开始 PGA_AGGREGATE_TARGET对专用服务器连接和共享服务器连接同时生效。

   PGA_AGGREGATE_TARGET参数同时限制全局PGA分配和私有工作区内存分配:

   1.对于串行操作,单个SQL操作能够使用的PGA内存按照以下原则分配:MIN(5%PGA_AGGREGATE_TARGET,100MB)

   2.对于并行操作30%PGA_AGGREGATE_TARGET/DOP(DOP=DegreeOfParallelism并行度)

   要理解PGA的自动调整,还需要区分可调整内存(TUNABLEMEMORYSIZE)与不可调整内存(UNTUNABLEMEMORYSIZE)。可调整内存是由SQL工作区使用的,其余部分是不可调整内存。

   启用了自动PGA调整之后,Oracle仍然需要遵循以下原则:

   UNTUNABLEMEMORYSIZE+TUNABLEMEMORYSIZE<=PGA_AGGREGATE_TARGET

   数据库系统只能控制可调整部分的内存分配,如果可调整的部分过小,则Oracle永远也不会强制启用这个等式。

   另外,PGA_AGGREGATE_TARGET参数在CBO优化器模式下,对于SQL的执行计划会产生影响。Oracle在评估执行计划时 会根据PGA_AGGREGATE_TARGET参数评估在Sort,HASH-JOIN或Bitmap操作时能够使用的最大或最小内存,从而选择最优的 执行计划。

   对于PGA_AGGREGATE_TARGET参数的设置,Oracle提供这样一个建议方案1.对于OLTP系统 PGA_AGGREGATE_TARGET =(*80%)*20%2.对于DSS系统 PGA_AGGREGATE_TARGET =(*80%)*50%

   也就是说,对于一个单纯的数据库服务器,通常我们需要保留20%的物理内存给操作系统使用,剩余80%可以分配给Oracle使用。 Oracle使用的内存分为两部分SGA和PGA,那么PGA可以占用Oracle消耗总内存的20%(OLTP系统)至50%(DSS系统)。

   这只是一个建议设置,更进一步的我们应该根据数据库的具体性能指标来调整和优化PGA的使用。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12379366/viewspace-7692/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 系统参数
请登录后发表评论 登录
全部评论

注册时间:2007-12-12

  • 博文量
    81
  • 访问量
    41613