<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21.1pt;"><span style="font-size: small;"><strong><span style="">一、</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">概念:</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21.1pt;"><span style="font-size: small;"><strong><span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">指程序全局区,是服务器进程(</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">ServerProcess</span>
</span>
</strong>
<strong><span style="">)使用的一块包含数据和控制信息的内存区域,</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">是非共享的内存,在服务器进程启动或创建时分配,并为服务器进程所专用。</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21.1pt;"><span style="font-size: small;"><strong><span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">的分配以及所存储的信息随</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Oracle</span>
</span>
</strong>
<strong><span style="">的工作状态(专有模式和共享模式)不同而不同,但不管如何</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">通常可分为固定</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">和可变</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">区域,如果服务器工作在专有服务器模式下,那么可变</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">就将分配在</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">自有区域内,如果工作在共享服务器模式下,那么可变</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">将分配在</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">SGA</span>
</span>
</strong>
<strong><span style="">(程序全局区)内,而在</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">自有区域内保留指向可变区域的地址指针。</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21.1pt;"><span style="font-size: small;"><strong><span style="">再细分的话,那么可变</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">区域有可以分为会话内存和私有</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">SQL</span>
</span>
</strong>
<strong><span style="">区,在会话内存中存放会话登录信息以及其他一些信息,对共享服务器模式这部分信息是共享的,而专有服务器模式这部分是私有的。私有</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">SQL</span>
</span>
</strong>
<strong><span style="">区存放绑定变量信息和查询状态以及查询工作区等信息,同样对于共享服务器模式这部分区域分配于</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">SGA</span>
</span>
</strong>
<strong><span style="">中。</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21.1pt;"><span style="font-size: small;"><strong><span style="">私有</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">SQL</span>
</span>
</strong>
<strong><span style="">区的分配</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Oracle</span>
</span>
</strong>
<strong><span style="">是通过游标(</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Cursor</span>
</span>
</strong>
<strong><span style="">)来完成,其实</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">的主要内存消耗就来自</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Cursor</span>
</span>
</strong>
<strong><span style="">,但是游标的打开和释放,</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Oracle</span>
</span>
</strong>
<strong><span style="">是不负责的,这部分工作完全交由用户程序来处理。但是</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Oracle</span>
</span>
</strong>
<strong><span style="">通过</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">OPEN_CURSORS</span>
</span>
</strong>
<strong><span style="">参数来控制打开游标的最大值。私有</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">SQL</span>
</span>
</strong>
<strong><span style="">区有可以再细分成永久区域和运行时区域,由于这部分区域完全由用户程序来使用和分配,因此这部分区域也称为</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">UGA</span>
</span>
</strong>
<strong><span style="">(用户全局区)。</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21.1pt;"><span style="font-size: small;"><strong><span style="">在永久区域中包含绑定变量等信息,这部分内存只有在游标被关闭时才会释放。在运行时区域中,存放</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">SQL</span>
</span>
</strong>
<strong><span style="">运行时所需要的信息,它在执行请求时首先创建,</span>
<span style="font-family: Times New Roman;"> </span>
</strong>
<strong><span style="">其中包含了查询执行状态信息,</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">SQL WorkAreas</span>
</span>
</strong>
<strong><span style="">(分组,排序,连接操作所使用的内存区域),对于</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Insert/Update/Delete</span>
</span>
</strong>
<strong><span style="">等操作这部分区域在执行完毕后就会释放,对于查询操作则是在结果集返回后或者查询被取消后返回。</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21.1pt;"><span style="font-size: small;"><strong><span style="">在</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">UGA</span>
</span>
</strong>
<strong><span style="">区域中还存在一个子区域称为</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">CGA</span>
</span>
</strong>
<strong><span style="">(全局调用区),这部分区域用于运行时执行一些低层操作时分配使用,比如</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">SQL</span>
</span>
</strong>
<strong><span style="">分析,</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Direct I/O Buffer</span>
</span>
</strong>
<strong><span style="">分配等。</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21.1pt;"><span style="font-size: small;"><strong><span style="">二、</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">管理:</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21.1pt;"><span style="font-size: small;"><strong><span style="">在</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">9i</span>
</span>
</strong>
<strong><span style="">之前</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Oracle</span>
</span>
</strong>
<strong><span style="">通过</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">*_area_size</span>
</span>
</strong>
<strong><span style="">等参数对</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">进行管理,这些参数主要有</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">sort_zrea_size</span>
</span>
</strong>
<strong><span style="">、</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">hash_area_size</span>
</span>
</strong>
<strong><span style="">、</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">bitmap_merge_size</span>
</span>
</strong>
<strong><span style="">、</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">create_bitmap_area_size</span>
</span>
</strong>
<strong><span style="">等。在</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Oracle</span>
</span>
</strong>
<strong><span style="">中可以通过</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">show parameter area_size</span>
</span>
</strong>
<strong><span style="">命令查看这些设置。</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21.1pt;"><span style="font-size: small;"><strong><span style="">从</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">9i</span>
</span>
</strong>
<strong><span style="">开始</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Oracle</span>
</span>
</strong>
<strong><span style="">提供了一种新的</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">内存管理方式,即自动内存管理,从而大大简化了</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Oracle</span>
</span>
</strong>
<strong><span style="">内存管理,通过这个功能</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Oracle</span>
</span>
</strong>
<strong><span style="">可以在总的内存使用限制下,实现</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">的自动管理与分配。</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21.1pt;"><span style="font-size: small;"><strong><span style="">在</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">9i</span>
</span>
</strong>
<strong><span style="">之后</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Oracle</span>
</span>
</strong>
<strong><span style="">通过</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA_AGGREGATE_TARGET</span>
</span>
</strong>
<strong><span style="">参数来控制</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">内存自动管理的最大内存使用上限,通过</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">WORKAREA_SIZE_POLICY</span>
</span>
</strong>
<strong><span style="">参数来管理自动内存管理的开启,当该参数设置为</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">AUTO</span>
</span>
</strong>
<strong><span style="">时将开启自动内存管理,设置为</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">MANUAL</span>
</span>
</strong>
<strong><span style="">时将使用手动管理。在</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">9i</span>
</span>
</strong>
<strong><span style="">中</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA_AGGREGATE_TARGET</span>
</span>
</strong>
<strong><span style="">参数只对专有服务器模式有效,对共享服务器模式将会自动失效,但是从</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">10G</span>
</span>
</strong>
<strong><span style="">开始</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA_AGGREGATE_TARGET</span>
</span>
</strong>
<strong><span style="">参数对这两种模式都会生效。</span>
</strong>
</span>
</p>
<p class="MsoNormal" style=""><strong><span lang="EN-US"><span><span style="font-family: Times New Roman;"><span style="font-size: small;">1、</span>
<span style='font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal;'> </span>
</span>
</span>
</span>
</strong>
<span style="font-size: small;"><strong><span style="">自动</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">管理实现原理:</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21.1pt;"><strong><span lang="EN-US"><span style="font-family: Times New Roman;"><span style="font-size: small;"><span> </span>
Oracle</span>
</span>
</span>
</strong>
<span style="font-size: small;"><strong><span style="">中对自动</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">管理采用反馈环(</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">FeedBack Loop</span>
</span>
</strong>
<strong><span style="">)算法来实现。当进程开始</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">SQL</span>
</span>
</strong>
<strong><span style="">执行时,首先通过</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Local Memory Manager</span>
</span>
</strong>
<strong><span style="">注册一个</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">ActiveWorkArea Profile</span>
</span>
</strong>
<strong><span style="">,工作区</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Profile</span>
</span>
</strong>
<strong><span style="">是进城与内存管理器之间通信的唯一接口,活动</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Profile</span>
</span>
</strong>
<strong><span style="">通过</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Local Memory Manager</span>
</span>
</strong>
<strong><span style="">来维护,存储在</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">SGA</span>
</span>
</strong>
<strong><span style="">中,有了这些</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Profile</span>
</span>
</strong>
<strong><span style="">,后台的</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Global Memory Manager</span>
</span>
</strong>
<strong><span style="">就可以计算出一个在一定上限内并能提供较好性能的</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Global Memory Bound</span>
</span>
</strong>
<strong><span style="">,这个值用于限制单个进程使用的</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">内存上限,</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Global Memory Manager</span>
</span>
</strong>
<strong><span style="">每个</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">3</span>
</span>
</strong>
<strong><span style="">秒钟更新一次</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Global Memory Bound</span>
</span>
</strong>
<strong><span style="">,</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Local Memory Manager</span>
</span>
</strong>
<strong><span style="">得到</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Global Memory Bound</span>
</span>
</strong>
<strong><span style="">后会计算出每个</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Active Statement</span>
</span>
</strong>
<strong><span style="">所要分配的</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">内存,称为</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Expect Size</span>
</span>
</strong>
<strong><span style="">,然后每个</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Active Statement</span>
</span>
</strong>
<strong><span style="">将会得到子所分得的</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Expect Size</span>
</span>
</strong>
<strong><span style="">,并在该内存中进行运算。</span>
</strong>
</span>
</p>
<p class="MsoNormal" style=""><strong><span lang="EN-US"><span><span style="font-family: Times New Roman;"><span style="font-size: small;">2、</span>
<span style='font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal;'> </span>
</span>
</span>
</span>
</strong>
<strong><span style="font-size: small;"><span style="">参数设置与内存分配:</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 39.1pt;"><span style="font-size: small;"><strong><span style="">在启用自动管理的</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Oracle</span>
</span>
</strong>
<strong><span style="">服务器中,实际内存的分配与</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA_AGGREGATE_TARGET</span>
</span>
</strong>
<strong><span style="">参数以及一些隐含参数的设置有关。主要有两种分配方式(以</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Oracle10gR2</span>
</span>
</strong>
<strong><span style="">和</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">11G</span>
</span>
</strong>
<strong><span style="">为例):</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 39.1pt;"><span style="font-size: small;"><strong><span style="">(</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">1</span>
</span>
</strong>
<strong><span style="">)、串行操作按照</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">min(5%*PGA_AGGREGATE_TARGET,100M)</span>
</span>
</strong>
<strong><span style="">方式分配;</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 39.1pt;"><span style="font-size: small;"><strong><span style="">(</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">2</span>
</span>
</strong>
<strong><span style="">)、并行操作按照</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">50%*PGA_AGGREGATE_TARGET/DOP</span>
</span>
</strong>
<strong><span style="">方式分配,其中</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">DOP</span>
</span>
</strong>
<strong><span style="">为并行度。</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 39.1pt;"><span style="font-size: small;"><strong><span style="">对于串行操作</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">5%*PGA_AGGREGATE_TARGET</span>
</span>
</strong>
<strong><span style="">这部分结果值受到</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">_smm_max_szie</span>
</span>
</strong>
<strong><span style="">隐含参数制约,该参数制定了自动管理下最大工作区限制,即</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">5%*PGA_AGGREGATE_TARGET</span>
</span>
</strong>
<strong><span style="">的内存大小不能超过</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">_smm_max_szie</span>
</span>
</strong>
<strong><span style="">值。具体限制如下:</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: Times New Roman;"><strong><span lang="EN-US"><span><span style="font-size: small;"> </span>
</span>
</span>
</strong>
<strong><span style="font-size: 9pt;" lang="EN-US">PGA_AGGREGATE_TARGET<=500M, _smm_max_szie=20%* PGA_AGGREGATE_TARGET</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><strong><span style="font-size: 9pt;" lang="EN-US"><span style="font-family: Times New Roman;"><span> </span>
PGA_AGGREGATE_TARGET[500M,1000M], _smm_max_szie=100M</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><strong><span style="font-size: 9pt;" lang="EN-US"><span style="font-family: Times New Roman;"><span> </span>
PGA_AGGREGATE_TARGET[1001M,2256M] ,_smm_max_szie=10%* PGA_AGGREGATE_TARGET</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><strong><span style="font-size: 9pt;" lang="EN-US"><span style="font-family: Times New Roman;"><span> </span>
PGA_AGGREGATE_TARGET>2560M, _smm_max_szie=250M</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><strong><span style="font-size: 9pt;" lang="EN-US"><span><span style="font-family: Times New Roman;"> </span>
</span>
</span>
</strong>
<span style="font-size: small;"><strong><span style="">对于并行那个操作,当</span>
</strong>
<strong><span lang="EN-US"><span style="font-family: Times New Roman;">DOP<=5</span>
</span>
</strong>
<strong><span style="">时</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">_smm_max_szie</span>
</span>
</strong>
<strong><span style="">会生效,当</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">DOP</span>
</span>
</strong>
<strong><span style="">超过</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">5</span>
</span>
</strong>
<strong><span style="">时将取决于另一个参数</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">_smm_px_max_size</span>
</span>
</strong>
<strong><span style="">。</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: small;"><strong><span style="">另外对于串行操作分配规则</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">min(5%*PGA_AGGREGATE_TARGET,100M)</span>
</span>
</strong>
<strong><span style="">中的</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">100M</span>
</span>
</strong>
<strong><span style="">,这个值取决于另一个隐含参数</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">_pga_max_size</span>
</span>
</strong>
<strong><span style="">,该参数制定了串行操作</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">的上限值(最大不能超过该值的</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">1/2</span>
</span>
</strong>
<strong><span style="">,其实这个值就是</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Global Memory Bound</span>
</span>
</strong>
<strong><span style="">),</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Oracle9iR2</span>
</span>
</strong>
<strong><span style="">中该值缺省为</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">200M</span>
</span>
</strong>
<strong><span style="">,因此在</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Oracle9i</span>
</span>
</strong>
<strong><span style="">中缺省的串行操作最大将被分配</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">100M</span>
</span>
</strong>
<strong><span style="">。但是在</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Oracle10GR2</span>
</span>
</strong>
<strong><span style="">中这个参数和</span>
</strong>
</span>
<strong><span style="font-size: 9pt;" lang="EN-US"><span style="font-family: Times New Roman;">PGA_AGGREGATE_TARGET</span>
</span>
</strong>
<strong><span style=""><span style="font-size: small;">相关,当改变</span>
</span>
</strong>
<strong><span style="font-size: 9pt;" lang="EN-US"><span style="font-family: Times New Roman;">PGA_AGGREGATE_TARGET</span>
</span>
</strong>
<strong><span style="">参数后</span>
<span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">_pga_max_size</span>
</span>
</strong>
<strong><span style=""><span style="font-size: small;">将自动改变,但是当</span>
</span>
</strong>
<strong><span style="font-size: 9pt;" lang="EN-US"><span style="font-family: Times New Roman;">PGA_AGGREGATE_TARGET>5G</span>
</span>
</strong>
<strong><span style="">后</span>
<span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">_pga_max_size</span>
</span>
</strong>
<span style="font-size: small;"><strong><span style="">参数将不再变化,在</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">1-5G</span>
</span>
</strong>
<strong><span style="">范围内</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">_pga_max_size</span>
</span>
</strong>
<strong><span style="">值将会按照</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">20%*</span>
</span>
</strong>
</span>
<strong><span style="font-size: 9pt;" lang="EN-US"><span style="font-family: Times New Roman;">PGA_AGGREGATE_TARGET</span>
</span>
</strong>
<span style="font-size: small;"><strong><span style="">设置增长。</span>
</strong>
<strong></strong>
</span>
</p>
<p class="MsoNormal" style=""><strong><span lang="EN-US"><span><span style="font-family: Times New Roman;"><span style="font-size: small;">3、</span>
<span style='font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal;'> </span>
</span>
</span>
</span>
</strong>
<span style="font-size: small;"><strong><span style="">设置</span>
</strong>
<strong><span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">参数:</span>
</strong>
<strong></strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21.1pt; text-indent: 10.35pt;"><span style="font-size: small;"><strong><span style="">可以通过</span>
</strong>
<strong><span lang="EN-US"><span style="font-family: Times New Roman;">alter system set </span>
</span>
</strong>
</span>
<strong><span style="font-size: 9pt;" lang="EN-US"><span style="font-family: Times New Roman;">PGA_AGGREGATE_TARGET</span>
</span>
</strong>
<span style="font-size: small;"><strong><span style="">命令来设置</span>
</strong>
<strong><span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">,对于</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA_AGGREGATE_TARGET</span>
</span>
</strong>
<strong><span style="">的设置</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Oracle</span>
</span>
</strong>
<strong><span style="">提供如下建议对于</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">OLTP</span>
</span>
</strong>
<strong><span style="">系统</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA_AGGREGATE_TARGET<=</span>
</span>
</strong>
<strong><span style="">(总内存</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">*80%</span>
</span>
</strong>
<strong><span style="">)</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">*20%</span>
</span>
</strong>
<strong><span style="">;对于</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">DSS</span>
</span>
</strong>
<strong><span style="">系统</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA_AGGREGATE_TARGET<=</span>
</span>
</strong>
<strong><span style="">(总内存</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">*80%</span>
</span>
</strong>
<strong><span style="">)</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">*50%.</span>
</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21.1pt; text-indent: 10.35pt;"><span style="font-size: small;"><strong><span style="">在</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Oracle</span>
</span>
</strong>
<strong><span style="">中可以通过查询</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">v$pga_target_advice</span>
</span>
</strong>
<strong><span style="">视图来对不同</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">设置进行评估,给出</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">命中率和过载等评估信息,以给出</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">设置建议如:</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21.1pt; text-indent: 10.35pt;"><span style="font-size: small;"><strong><span style='color: black; font-family: "Courier New";' lang="EN-US">select</span>
</strong>
<span style='color: black; font-family: "Courier New";' lang="EN-US"> a.PGA_TARGET_FOR_ESTIMATE / </span>
<span style='color: #0000f0; font-family: "Courier New";' lang="EN-US">1024</span>
<span style='color: black; font-family: "Courier New";' lang="EN-US"> / </span>
<span style='color: #0000f0; font-family: "Courier New";' lang="EN-US">1024</span>
</span>
<span style='color: black; font-family: "Courier New";' lang="EN-US"><span style="font-size: small;"> PGAMB,<br><span> </span>
a.PGA_TARGET_FACTOR,<br><span> </span>
a.ESTD_PGA_CACHE_HIT_PERCENTAGE,<br><span> </span>
a.ESTD_OVERALLOC_COUNT<br><span> </span>
<strong>from</strong>
v$pga_target_advice a;</span>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><strong><span style='font-size: 8pt; color: black; font-family: "Courier New";' lang="EN-US"><span> </span>
</span>
</strong>
<span style="font-size: small;"><strong><span style='color: black; font-family: "Courier New";' lang="EN-US"><span></span>
</span>
</strong>
<strong><span style="">还可以通过查询</span>
</strong>
<strong><span style='color: black; font-family: "Courier New";' lang="EN-US">v$pga_target_advice_histogram</span>
</strong>
<strong><span style="">视图来对不同工作区大小采样评估如:</span>
</strong>
<strong></strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><strong><span style='color: black; font-family: "Courier New";' lang="EN-US"><span> </span>
</span>
</strong>
<span style='color: black; font-family: "Courier New";' lang="EN-US"><span></span>
<strong>select</strong>
a.PGA_TARGET_FACTOR,a.low_optimal_size/</span>
<span style='color: #0000f0; font-family: "Courier New";' lang="EN-US">1024</span>
</span>
<span style="font-size: small;"><span style='color: black; font-family: "Courier New";' lang="EN-US"> low,<br><span> </span>
round(a.high_optimal_size/</span>
<span style='color: #0000f0; font-family: "Courier New";' lang="EN-US">1024</span>
</span>
<span style="font-size: small;"><span style='color: black; font-family: "Courier New";' lang="EN-US">) <strong>high</strong>
,<br><span> </span>
a.estd_optimal_executions estd_mp,est_total_executions estd_exec<br><span> </span>
<span></span>
<strong>from</strong>
v$pga_target_advice_histogram a<br><span> </span>
<span></span>
<strong>where</strong>
a.PGA_TARGET_FACTOR=</span>
<span style='color: #0000f0; font-family: "Courier New";' lang="EN-US">0.25</span>
<span style='color: black; font-family: "Courier New";' lang="EN-US"> <strong>and</strong>
a.estd_total_executions></span>
<span style='color: #0000f0; font-family: "Courier New";' lang="EN-US">0;</span>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: small;"><span style='color: black; font-family: "Courier New";' lang="EN-US">low_optimal_size: </span>
<strong><span style="">为评估区间的</span>
</strong>
<strong><span style='color: black; font-family: "Courier New";' lang="EN-US">optimal</span>
</strong>
<strong><span style="">下限(</span>
</strong>
<strong><span style='color: black; font-family: "Courier New";' lang="EN-US">bytes</span>
</strong>
<strong><span style="">)</span>
</strong>
<strong></strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: small;"><span style='color: black; font-family: "Courier New";' lang="EN-US">high_optimal_size: </span>
<strong><span style="">为评估区间的</span>
</strong>
<strong><span style='color: black; font-family: "Courier New";' lang="EN-US">optimal</span>
</strong>
<strong><span style="">上限(</span>
</strong>
<strong><span style='color: black; font-family: "Courier New";' lang="EN-US">bytes</span>
</strong>
<strong><span style="">)</span>
</strong>
<strong></strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: small;"><span style='color: black; font-family: "Courier New";' lang="EN-US">estd_optimal_executions</span>
<span style="">:<strong>为评估区间</strong>
</span>
<strong><span style='color: black; font-family: "Courier New";' lang="EN-US">optimal</span>
</strong>
<strong><span style="">执行次数</span>
</strong>
<strong></strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: small;"><span style='color: black; font-family: "Courier New";' lang="EN-US">est_total_executions</span>
<span style="">:<strong>为评估区间估计执行总次数</strong>
</span>
<strong></strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: small;"><strong><span style='color: black; font-family: "Courier New";' lang="EN-US">PGA</span>
</strong>
<strong><span style="">中的运行有</span>
</strong>
<strong><span style='color: black; font-family: "Courier New";' lang="EN-US">3</span>
</strong>
<strong><span style="">种运行方式:</span>
</strong>
<strong></strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: small;"><strong><span style='color: black; font-family: "Courier New";' lang="EN-US">Optimal: </span>
</strong>
<strong><span style="">优化方式,所有处理都在内存中完成</span>
</strong>
<strong></strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: small;"><strong><span style='color: black; font-family: "Courier New";' lang="EN-US">Onepass:</span>
</strong>
<strong><span style="">大部分操作在内存中完成,但需要使用到磁盘操作</span>
</strong>
<strong></strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: small;"><strong><span style='color: black; font-family: "Courier New";' lang="EN-US">Multipass:</span>
</strong>
<strong><span style="">大量操作需要产生磁盘交互,最差方式</span>
</strong>
<strong></strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: small;"><strong><span style="">当你需要调整</span>
</strong>
<strong><span style='color: black; font-family: "Courier New";' lang="EN-US">PGA</span>
</strong>
<strong><span style="">或想要分析当前</span>
</strong>
<strong><span style='color: black; font-family: "Courier New";' lang="EN-US">PGA</span>
</strong>
<strong><span style="">时可以通过以下</span>
</strong>
<strong><span style='color: black; font-family: "Courier New";' lang="EN-US">SQL</span>
</strong>
<strong><span style="">产生一个当前系统的</span>
</strong>
<strong><span style='color: black; font-family: "Courier New";' lang="EN-US">PGA</span>
</strong>
<strong><span style="">指标:</span>
</strong>
<strong></strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><strong><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;">select name,</span>
</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><strong><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span> </span>
value,</span>
</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><strong><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span> </span>
100 *</span>
</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><strong><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span> </span>
<span></span>
(value / decode((select sum(value)</span>
</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><strong><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span> </span>
from v$sysstat</span>
</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><strong><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span> </span>
where name like 'workarea executions%'),</span>
</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><strong><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span> </span>
0,</span>
</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><strong><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span> </span>
NULL,</span>
</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><strong><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span> </span>
(select sum(value)</span>
</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><strong><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span> </span>
<span></span>
from v$sysstat</span>
</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><strong><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span> </span>
where name like 'workarea executions%'))) pct</span>
</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><strong><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span> </span>
from v$sysstat</span>
</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><strong><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span></span>
where name like 'workarea executions%';</span>
</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: small;"><strong><span style="">还可以通过下面的</span>
</strong>
<strong><span lang="EN-US"><span style="font-family: Times New Roman;">SQL</span>
</span>
</strong>
<strong><span style="">语句查询当前</span>
</strong>
<strong><span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">内存消耗在什么地方:</span>
</strong>
<strong></strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: small;"><strong><span style="">首先通过</span>
</strong>
<strong><span lang="EN-US"><span style="font-family: Times New Roman;">OS</span>
</span>
</strong>
<strong><span style="">命令:</span>
</strong>
<strong><span lang="EN-US"><span style="font-family: Times New Roman;">ps –ef|grep LOCAL|head –l</span>
</span>
</strong>
<strong><span style="">查询到当前实例的</span>
</strong>
<strong><span lang="EN-US"><span style="font-family: Times New Roman;">Oracle</span>
</span>
</strong>
<strong><span style="">进程的进程号,如</span>
</strong>
<strong><span lang="EN-US"><span style="font-family: Times New Roman;">2803</span>
</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: small;"><strong><span style="">然后执行如下</span>
</strong>
<strong><span lang="EN-US"><span style="font-family: Times New Roman;">SQL</span>
</span>
</strong>
<strong><span style="">语句:</span>
</strong>
<strong></strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><strong><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;">select p.PROGRAM,p.pid,pm.category,pm.allocated,pm.used,pm.max_allocated</span>
</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><strong><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;">from v$process p,v$process_memory pm</span>
</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><strong><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;">where p.PID=pm.pid and p.SPID=2803;</span>
</span>
</span>
</strong>
</p>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">概念:</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21.1pt;"><span style="font-size: small;"><strong><span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">指程序全局区,是服务器进程(</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">ServerProcess</span>
</span>
</strong>
<strong><span style="">)使用的一块包含数据和控制信息的内存区域,</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">是非共享的内存,在服务器进程启动或创建时分配,并为服务器进程所专用。</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21.1pt;"><span style="font-size: small;"><strong><span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">的分配以及所存储的信息随</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Oracle</span>
</span>
</strong>
<strong><span style="">的工作状态(专有模式和共享模式)不同而不同,但不管如何</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">通常可分为固定</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">和可变</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">区域,如果服务器工作在专有服务器模式下,那么可变</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">就将分配在</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">自有区域内,如果工作在共享服务器模式下,那么可变</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">将分配在</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">SGA</span>
</span>
</strong>
<strong><span style="">(程序全局区)内,而在</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">自有区域内保留指向可变区域的地址指针。</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21.1pt;"><span style="font-size: small;"><strong><span style="">再细分的话,那么可变</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">区域有可以分为会话内存和私有</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">SQL</span>
</span>
</strong>
<strong><span style="">区,在会话内存中存放会话登录信息以及其他一些信息,对共享服务器模式这部分信息是共享的,而专有服务器模式这部分是私有的。私有</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">SQL</span>
</span>
</strong>
<strong><span style="">区存放绑定变量信息和查询状态以及查询工作区等信息,同样对于共享服务器模式这部分区域分配于</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">SGA</span>
</span>
</strong>
<strong><span style="">中。</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21.1pt;"><span style="font-size: small;"><strong><span style="">私有</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">SQL</span>
</span>
</strong>
<strong><span style="">区的分配</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Oracle</span>
</span>
</strong>
<strong><span style="">是通过游标(</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Cursor</span>
</span>
</strong>
<strong><span style="">)来完成,其实</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">的主要内存消耗就来自</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Cursor</span>
</span>
</strong>
<strong><span style="">,但是游标的打开和释放,</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Oracle</span>
</span>
</strong>
<strong><span style="">是不负责的,这部分工作完全交由用户程序来处理。但是</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Oracle</span>
</span>
</strong>
<strong><span style="">通过</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">OPEN_CURSORS</span>
</span>
</strong>
<strong><span style="">参数来控制打开游标的最大值。私有</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">SQL</span>
</span>
</strong>
<strong><span style="">区有可以再细分成永久区域和运行时区域,由于这部分区域完全由用户程序来使用和分配,因此这部分区域也称为</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">UGA</span>
</span>
</strong>
<strong><span style="">(用户全局区)。</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21.1pt;"><span style="font-size: small;"><strong><span style="">在永久区域中包含绑定变量等信息,这部分内存只有在游标被关闭时才会释放。在运行时区域中,存放</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">SQL</span>
</span>
</strong>
<strong><span style="">运行时所需要的信息,它在执行请求时首先创建,</span>
<span style="font-family: Times New Roman;"> </span>
</strong>
<strong><span style="">其中包含了查询执行状态信息,</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">SQL WorkAreas</span>
</span>
</strong>
<strong><span style="">(分组,排序,连接操作所使用的内存区域),对于</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Insert/Update/Delete</span>
</span>
</strong>
<strong><span style="">等操作这部分区域在执行完毕后就会释放,对于查询操作则是在结果集返回后或者查询被取消后返回。</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21.1pt;"><span style="font-size: small;"><strong><span style="">在</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">UGA</span>
</span>
</strong>
<strong><span style="">区域中还存在一个子区域称为</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">CGA</span>
</span>
</strong>
<strong><span style="">(全局调用区),这部分区域用于运行时执行一些低层操作时分配使用,比如</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">SQL</span>
</span>
</strong>
<strong><span style="">分析,</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Direct I/O Buffer</span>
</span>
</strong>
<strong><span style="">分配等。</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21.1pt;"><span style="font-size: small;"><strong><span style="">二、</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">管理:</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21.1pt;"><span style="font-size: small;"><strong><span style="">在</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">9i</span>
</span>
</strong>
<strong><span style="">之前</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Oracle</span>
</span>
</strong>
<strong><span style="">通过</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">*_area_size</span>
</span>
</strong>
<strong><span style="">等参数对</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">进行管理,这些参数主要有</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">sort_zrea_size</span>
</span>
</strong>
<strong><span style="">、</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">hash_area_size</span>
</span>
</strong>
<strong><span style="">、</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">bitmap_merge_size</span>
</span>
</strong>
<strong><span style="">、</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">create_bitmap_area_size</span>
</span>
</strong>
<strong><span style="">等。在</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Oracle</span>
</span>
</strong>
<strong><span style="">中可以通过</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">show parameter area_size</span>
</span>
</strong>
<strong><span style="">命令查看这些设置。</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21.1pt;"><span style="font-size: small;"><strong><span style="">从</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">9i</span>
</span>
</strong>
<strong><span style="">开始</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Oracle</span>
</span>
</strong>
<strong><span style="">提供了一种新的</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">内存管理方式,即自动内存管理,从而大大简化了</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Oracle</span>
</span>
</strong>
<strong><span style="">内存管理,通过这个功能</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Oracle</span>
</span>
</strong>
<strong><span style="">可以在总的内存使用限制下,实现</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">的自动管理与分配。</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21.1pt;"><span style="font-size: small;"><strong><span style="">在</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">9i</span>
</span>
</strong>
<strong><span style="">之后</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Oracle</span>
</span>
</strong>
<strong><span style="">通过</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA_AGGREGATE_TARGET</span>
</span>
</strong>
<strong><span style="">参数来控制</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">内存自动管理的最大内存使用上限,通过</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">WORKAREA_SIZE_POLICY</span>
</span>
</strong>
<strong><span style="">参数来管理自动内存管理的开启,当该参数设置为</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">AUTO</span>
</span>
</strong>
<strong><span style="">时将开启自动内存管理,设置为</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">MANUAL</span>
</span>
</strong>
<strong><span style="">时将使用手动管理。在</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">9i</span>
</span>
</strong>
<strong><span style="">中</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA_AGGREGATE_TARGET</span>
</span>
</strong>
<strong><span style="">参数只对专有服务器模式有效,对共享服务器模式将会自动失效,但是从</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">10G</span>
</span>
</strong>
<strong><span style="">开始</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA_AGGREGATE_TARGET</span>
</span>
</strong>
<strong><span style="">参数对这两种模式都会生效。</span>
</strong>
</span>
</p>
<p class="MsoNormal" style=""><strong><span lang="EN-US"><span><span style="font-family: Times New Roman;"><span style="font-size: small;">1、</span>
<span style='font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal;'> </span>
</span>
</span>
</span>
</strong>
<span style="font-size: small;"><strong><span style="">自动</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">管理实现原理:</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21.1pt;"><strong><span lang="EN-US"><span style="font-family: Times New Roman;"><span style="font-size: small;"><span> </span>
Oracle</span>
</span>
</span>
</strong>
<span style="font-size: small;"><strong><span style="">中对自动</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">管理采用反馈环(</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">FeedBack Loop</span>
</span>
</strong>
<strong><span style="">)算法来实现。当进程开始</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">SQL</span>
</span>
</strong>
<strong><span style="">执行时,首先通过</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Local Memory Manager</span>
</span>
</strong>
<strong><span style="">注册一个</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">ActiveWorkArea Profile</span>
</span>
</strong>
<strong><span style="">,工作区</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Profile</span>
</span>
</strong>
<strong><span style="">是进城与内存管理器之间通信的唯一接口,活动</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Profile</span>
</span>
</strong>
<strong><span style="">通过</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Local Memory Manager</span>
</span>
</strong>
<strong><span style="">来维护,存储在</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">SGA</span>
</span>
</strong>
<strong><span style="">中,有了这些</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Profile</span>
</span>
</strong>
<strong><span style="">,后台的</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Global Memory Manager</span>
</span>
</strong>
<strong><span style="">就可以计算出一个在一定上限内并能提供较好性能的</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Global Memory Bound</span>
</span>
</strong>
<strong><span style="">,这个值用于限制单个进程使用的</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">内存上限,</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Global Memory Manager</span>
</span>
</strong>
<strong><span style="">每个</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">3</span>
</span>
</strong>
<strong><span style="">秒钟更新一次</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Global Memory Bound</span>
</span>
</strong>
<strong><span style="">,</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Local Memory Manager</span>
</span>
</strong>
<strong><span style="">得到</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Global Memory Bound</span>
</span>
</strong>
<strong><span style="">后会计算出每个</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Active Statement</span>
</span>
</strong>
<strong><span style="">所要分配的</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">内存,称为</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Expect Size</span>
</span>
</strong>
<strong><span style="">,然后每个</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Active Statement</span>
</span>
</strong>
<strong><span style="">将会得到子所分得的</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Expect Size</span>
</span>
</strong>
<strong><span style="">,并在该内存中进行运算。</span>
</strong>
</span>
</p>
<p class="MsoNormal" style=""><strong><span lang="EN-US"><span><span style="font-family: Times New Roman;"><span style="font-size: small;">2、</span>
<span style='font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal;'> </span>
</span>
</span>
</span>
</strong>
<strong><span style="font-size: small;"><span style="">参数设置与内存分配:</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 39.1pt;"><span style="font-size: small;"><strong><span style="">在启用自动管理的</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Oracle</span>
</span>
</strong>
<strong><span style="">服务器中,实际内存的分配与</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA_AGGREGATE_TARGET</span>
</span>
</strong>
<strong><span style="">参数以及一些隐含参数的设置有关。主要有两种分配方式(以</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Oracle10gR2</span>
</span>
</strong>
<strong><span style="">和</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">11G</span>
</span>
</strong>
<strong><span style="">为例):</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 39.1pt;"><span style="font-size: small;"><strong><span style="">(</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">1</span>
</span>
</strong>
<strong><span style="">)、串行操作按照</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">min(5%*PGA_AGGREGATE_TARGET,100M)</span>
</span>
</strong>
<strong><span style="">方式分配;</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 39.1pt;"><span style="font-size: small;"><strong><span style="">(</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">2</span>
</span>
</strong>
<strong><span style="">)、并行操作按照</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">50%*PGA_AGGREGATE_TARGET/DOP</span>
</span>
</strong>
<strong><span style="">方式分配,其中</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">DOP</span>
</span>
</strong>
<strong><span style="">为并行度。</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 39.1pt;"><span style="font-size: small;"><strong><span style="">对于串行操作</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">5%*PGA_AGGREGATE_TARGET</span>
</span>
</strong>
<strong><span style="">这部分结果值受到</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">_smm_max_szie</span>
</span>
</strong>
<strong><span style="">隐含参数制约,该参数制定了自动管理下最大工作区限制,即</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">5%*PGA_AGGREGATE_TARGET</span>
</span>
</strong>
<strong><span style="">的内存大小不能超过</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">_smm_max_szie</span>
</span>
</strong>
<strong><span style="">值。具体限制如下:</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: Times New Roman;"><strong><span lang="EN-US"><span><span style="font-size: small;"> </span>
</span>
</span>
</strong>
<strong><span style="font-size: 9pt;" lang="EN-US">PGA_AGGREGATE_TARGET<=500M, _smm_max_szie=20%* PGA_AGGREGATE_TARGET</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><strong><span style="font-size: 9pt;" lang="EN-US"><span style="font-family: Times New Roman;"><span> </span>
PGA_AGGREGATE_TARGET[500M,1000M], _smm_max_szie=100M</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><strong><span style="font-size: 9pt;" lang="EN-US"><span style="font-family: Times New Roman;"><span> </span>
PGA_AGGREGATE_TARGET[1001M,2256M] ,_smm_max_szie=10%* PGA_AGGREGATE_TARGET</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><strong><span style="font-size: 9pt;" lang="EN-US"><span style="font-family: Times New Roman;"><span> </span>
PGA_AGGREGATE_TARGET>2560M, _smm_max_szie=250M</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><strong><span style="font-size: 9pt;" lang="EN-US"><span><span style="font-family: Times New Roman;"> </span>
</span>
</span>
</strong>
<span style="font-size: small;"><strong><span style="">对于并行那个操作,当</span>
</strong>
<strong><span lang="EN-US"><span style="font-family: Times New Roman;">DOP<=5</span>
</span>
</strong>
<strong><span style="">时</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">_smm_max_szie</span>
</span>
</strong>
<strong><span style="">会生效,当</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">DOP</span>
</span>
</strong>
<strong><span style="">超过</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">5</span>
</span>
</strong>
<strong><span style="">时将取决于另一个参数</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">_smm_px_max_size</span>
</span>
</strong>
<strong><span style="">。</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: small;"><strong><span style="">另外对于串行操作分配规则</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">min(5%*PGA_AGGREGATE_TARGET,100M)</span>
</span>
</strong>
<strong><span style="">中的</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">100M</span>
</span>
</strong>
<strong><span style="">,这个值取决于另一个隐含参数</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">_pga_max_size</span>
</span>
</strong>
<strong><span style="">,该参数制定了串行操作</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">的上限值(最大不能超过该值的</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">1/2</span>
</span>
</strong>
<strong><span style="">,其实这个值就是</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Global Memory Bound</span>
</span>
</strong>
<strong><span style="">),</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Oracle9iR2</span>
</span>
</strong>
<strong><span style="">中该值缺省为</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">200M</span>
</span>
</strong>
<strong><span style="">,因此在</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Oracle9i</span>
</span>
</strong>
<strong><span style="">中缺省的串行操作最大将被分配</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">100M</span>
</span>
</strong>
<strong><span style="">。但是在</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Oracle10GR2</span>
</span>
</strong>
<strong><span style="">中这个参数和</span>
</strong>
</span>
<strong><span style="font-size: 9pt;" lang="EN-US"><span style="font-family: Times New Roman;">PGA_AGGREGATE_TARGET</span>
</span>
</strong>
<strong><span style=""><span style="font-size: small;">相关,当改变</span>
</span>
</strong>
<strong><span style="font-size: 9pt;" lang="EN-US"><span style="font-family: Times New Roman;">PGA_AGGREGATE_TARGET</span>
</span>
</strong>
<strong><span style="">参数后</span>
<span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">_pga_max_size</span>
</span>
</strong>
<strong><span style=""><span style="font-size: small;">将自动改变,但是当</span>
</span>
</strong>
<strong><span style="font-size: 9pt;" lang="EN-US"><span style="font-family: Times New Roman;">PGA_AGGREGATE_TARGET>5G</span>
</span>
</strong>
<strong><span style="">后</span>
<span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">_pga_max_size</span>
</span>
</strong>
<span style="font-size: small;"><strong><span style="">参数将不再变化,在</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">1-5G</span>
</span>
</strong>
<strong><span style="">范围内</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">_pga_max_size</span>
</span>
</strong>
<strong><span style="">值将会按照</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">20%*</span>
</span>
</strong>
</span>
<strong><span style="font-size: 9pt;" lang="EN-US"><span style="font-family: Times New Roman;">PGA_AGGREGATE_TARGET</span>
</span>
</strong>
<span style="font-size: small;"><strong><span style="">设置增长。</span>
</strong>
<strong></strong>
</span>
</p>
<p class="MsoNormal" style=""><strong><span lang="EN-US"><span><span style="font-family: Times New Roman;"><span style="font-size: small;">3、</span>
<span style='font-family: "Times New Roman"; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal;'> </span>
</span>
</span>
</span>
</strong>
<span style="font-size: small;"><strong><span style="">设置</span>
</strong>
<strong><span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">参数:</span>
</strong>
<strong></strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21.1pt; text-indent: 10.35pt;"><span style="font-size: small;"><strong><span style="">可以通过</span>
</strong>
<strong><span lang="EN-US"><span style="font-family: Times New Roman;">alter system set </span>
</span>
</strong>
</span>
<strong><span style="font-size: 9pt;" lang="EN-US"><span style="font-family: Times New Roman;">PGA_AGGREGATE_TARGET</span>
</span>
</strong>
<span style="font-size: small;"><strong><span style="">命令来设置</span>
</strong>
<strong><span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">,对于</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA_AGGREGATE_TARGET</span>
</span>
</strong>
<strong><span style="">的设置</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Oracle</span>
</span>
</strong>
<strong><span style="">提供如下建议对于</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">OLTP</span>
</span>
</strong>
<strong><span style="">系统</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA_AGGREGATE_TARGET<=</span>
</span>
</strong>
<strong><span style="">(总内存</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">*80%</span>
</span>
</strong>
<strong><span style="">)</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">*20%</span>
</span>
</strong>
<strong><span style="">;对于</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">DSS</span>
</span>
</strong>
<strong><span style="">系统</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA_AGGREGATE_TARGET<=</span>
</span>
</strong>
<strong><span style="">(总内存</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">*80%</span>
</span>
</strong>
<strong><span style="">)</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">*50%.</span>
</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21.1pt; text-indent: 10.35pt;"><span style="font-size: small;"><strong><span style="">在</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">Oracle</span>
</span>
</strong>
<strong><span style="">中可以通过查询</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">v$pga_target_advice</span>
</span>
</strong>
<strong><span style="">视图来对不同</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">设置进行评估,给出</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">命中率和过载等评估信息,以给出</span>
<span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">设置建议如:</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21.1pt; text-indent: 10.35pt;"><span style="font-size: small;"><strong><span style='color: black; font-family: "Courier New";' lang="EN-US">select</span>
</strong>
<span style='color: black; font-family: "Courier New";' lang="EN-US"> a.PGA_TARGET_FOR_ESTIMATE / </span>
<span style='color: #0000f0; font-family: "Courier New";' lang="EN-US">1024</span>
<span style='color: black; font-family: "Courier New";' lang="EN-US"> / </span>
<span style='color: #0000f0; font-family: "Courier New";' lang="EN-US">1024</span>
</span>
<span style='color: black; font-family: "Courier New";' lang="EN-US"><span style="font-size: small;"> PGAMB,<br><span> </span>
a.PGA_TARGET_FACTOR,<br><span> </span>
a.ESTD_PGA_CACHE_HIT_PERCENTAGE,<br><span> </span>
a.ESTD_OVERALLOC_COUNT<br><span> </span>
<strong>from</strong>
v$pga_target_advice a;</span>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><strong><span style='font-size: 8pt; color: black; font-family: "Courier New";' lang="EN-US"><span> </span>
</span>
</strong>
<span style="font-size: small;"><strong><span style='color: black; font-family: "Courier New";' lang="EN-US"><span></span>
</span>
</strong>
<strong><span style="">还可以通过查询</span>
</strong>
<strong><span style='color: black; font-family: "Courier New";' lang="EN-US">v$pga_target_advice_histogram</span>
</strong>
<strong><span style="">视图来对不同工作区大小采样评估如:</span>
</strong>
<strong></strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><strong><span style='color: black; font-family: "Courier New";' lang="EN-US"><span> </span>
</span>
</strong>
<span style='color: black; font-family: "Courier New";' lang="EN-US"><span></span>
<strong>select</strong>
a.PGA_TARGET_FACTOR,a.low_optimal_size/</span>
<span style='color: #0000f0; font-family: "Courier New";' lang="EN-US">1024</span>
</span>
<span style="font-size: small;"><span style='color: black; font-family: "Courier New";' lang="EN-US"> low,<br><span> </span>
round(a.high_optimal_size/</span>
<span style='color: #0000f0; font-family: "Courier New";' lang="EN-US">1024</span>
</span>
<span style="font-size: small;"><span style='color: black; font-family: "Courier New";' lang="EN-US">) <strong>high</strong>
,<br><span> </span>
a.estd_optimal_executions estd_mp,est_total_executions estd_exec<br><span> </span>
<span></span>
<strong>from</strong>
v$pga_target_advice_histogram a<br><span> </span>
<span></span>
<strong>where</strong>
a.PGA_TARGET_FACTOR=</span>
<span style='color: #0000f0; font-family: "Courier New";' lang="EN-US">0.25</span>
<span style='color: black; font-family: "Courier New";' lang="EN-US"> <strong>and</strong>
a.estd_total_executions></span>
<span style='color: #0000f0; font-family: "Courier New";' lang="EN-US">0;</span>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: small;"><span style='color: black; font-family: "Courier New";' lang="EN-US">low_optimal_size: </span>
<strong><span style="">为评估区间的</span>
</strong>
<strong><span style='color: black; font-family: "Courier New";' lang="EN-US">optimal</span>
</strong>
<strong><span style="">下限(</span>
</strong>
<strong><span style='color: black; font-family: "Courier New";' lang="EN-US">bytes</span>
</strong>
<strong><span style="">)</span>
</strong>
<strong></strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: small;"><span style='color: black; font-family: "Courier New";' lang="EN-US">high_optimal_size: </span>
<strong><span style="">为评估区间的</span>
</strong>
<strong><span style='color: black; font-family: "Courier New";' lang="EN-US">optimal</span>
</strong>
<strong><span style="">上限(</span>
</strong>
<strong><span style='color: black; font-family: "Courier New";' lang="EN-US">bytes</span>
</strong>
<strong><span style="">)</span>
</strong>
<strong></strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: small;"><span style='color: black; font-family: "Courier New";' lang="EN-US">estd_optimal_executions</span>
<span style="">:<strong>为评估区间</strong>
</span>
<strong><span style='color: black; font-family: "Courier New";' lang="EN-US">optimal</span>
</strong>
<strong><span style="">执行次数</span>
</strong>
<strong></strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: small;"><span style='color: black; font-family: "Courier New";' lang="EN-US">est_total_executions</span>
<span style="">:<strong>为评估区间估计执行总次数</strong>
</span>
<strong></strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: small;"><strong><span style='color: black; font-family: "Courier New";' lang="EN-US">PGA</span>
</strong>
<strong><span style="">中的运行有</span>
</strong>
<strong><span style='color: black; font-family: "Courier New";' lang="EN-US">3</span>
</strong>
<strong><span style="">种运行方式:</span>
</strong>
<strong></strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: small;"><strong><span style='color: black; font-family: "Courier New";' lang="EN-US">Optimal: </span>
</strong>
<strong><span style="">优化方式,所有处理都在内存中完成</span>
</strong>
<strong></strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: small;"><strong><span style='color: black; font-family: "Courier New";' lang="EN-US">Onepass:</span>
</strong>
<strong><span style="">大部分操作在内存中完成,但需要使用到磁盘操作</span>
</strong>
<strong></strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: small;"><strong><span style='color: black; font-family: "Courier New";' lang="EN-US">Multipass:</span>
</strong>
<strong><span style="">大量操作需要产生磁盘交互,最差方式</span>
</strong>
<strong></strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: small;"><strong><span style="">当你需要调整</span>
</strong>
<strong><span style='color: black; font-family: "Courier New";' lang="EN-US">PGA</span>
</strong>
<strong><span style="">或想要分析当前</span>
</strong>
<strong><span style='color: black; font-family: "Courier New";' lang="EN-US">PGA</span>
</strong>
<strong><span style="">时可以通过以下</span>
</strong>
<strong><span style='color: black; font-family: "Courier New";' lang="EN-US">SQL</span>
</strong>
<strong><span style="">产生一个当前系统的</span>
</strong>
<strong><span style='color: black; font-family: "Courier New";' lang="EN-US">PGA</span>
</strong>
<strong><span style="">指标:</span>
</strong>
<strong></strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><strong><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;">select name,</span>
</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><strong><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span> </span>
value,</span>
</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><strong><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span> </span>
100 *</span>
</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><strong><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span> </span>
<span></span>
(value / decode((select sum(value)</span>
</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><strong><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span> </span>
from v$sysstat</span>
</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><strong><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span> </span>
where name like 'workarea executions%'),</span>
</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><strong><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span> </span>
0,</span>
</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><strong><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span> </span>
NULL,</span>
</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><strong><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span> </span>
(select sum(value)</span>
</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><strong><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span> </span>
<span></span>
from v$sysstat</span>
</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><strong><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span> </span>
where name like 'workarea executions%'))) pct</span>
</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><strong><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span> </span>
from v$sysstat</span>
</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><strong><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span></span>
where name like 'workarea executions%';</span>
</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: small;"><strong><span style="">还可以通过下面的</span>
</strong>
<strong><span lang="EN-US"><span style="font-family: Times New Roman;">SQL</span>
</span>
</strong>
<strong><span style="">语句查询当前</span>
</strong>
<strong><span lang="EN-US"><span style="font-family: Times New Roman;">PGA</span>
</span>
</strong>
<strong><span style="">内存消耗在什么地方:</span>
</strong>
<strong></strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: small;"><strong><span style="">首先通过</span>
</strong>
<strong><span lang="EN-US"><span style="font-family: Times New Roman;">OS</span>
</span>
</strong>
<strong><span style="">命令:</span>
</strong>
<strong><span lang="EN-US"><span style="font-family: Times New Roman;">ps –ef|grep LOCAL|head –l</span>
</span>
</strong>
<strong><span style="">查询到当前实例的</span>
</strong>
<strong><span lang="EN-US"><span style="font-family: Times New Roman;">Oracle</span>
</span>
</strong>
<strong><span style="">进程的进程号,如</span>
</strong>
<strong><span lang="EN-US"><span style="font-family: Times New Roman;">2803</span>
</span>
</strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: small;"><strong><span style="">然后执行如下</span>
</strong>
<strong><span lang="EN-US"><span style="font-family: Times New Roman;">SQL</span>
</span>
</strong>
<strong><span style="">语句:</span>
</strong>
<strong></strong>
</span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><strong><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;">select p.PROGRAM,p.pid,pm.category,pm.allocated,pm.used,pm.max_allocated</span>
</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><strong><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;">from v$process p,v$process_memory pm</span>
</span>
</span>
</strong>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><strong><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;">where p.PID=pm.pid and p.SPID=2803;</span>
</span>
</span>
</strong>
</p>