网络编程
位置:首页>> 网络编程>> 数据库>> Oracle9i 动态SGA,PGA特性探索(4)

Oracle9i 动态SGA,PGA特性探索(4)

 来源:asp之家 发布时间:2009-04-24 12:39:00 

标签:Oracle9i,动态,SGA,PGA

  SGA的阀值摘要
  由下面的表一可以看到,在监视SGA的内存使用时,有几个明显的阀值可以利用。我们可以写一些脚本并在其中集成一些智能,这样就可以在处理的需求变化时重新设置SGA。
RAM Area Too-small Condition Too-Large Condition
Shared pool Library cache misses No misses
Data buffer cache Hit ratio < 90% Hit ratio > 95%
PGA aggregate high multi-pass executions 100% optimal executions
  表1:SGA中的异常条件指示
  查看SGA内存区域的负载
  Oracle9i使用了一些新的内部视图或者在现有的视图中加入新的列来帮助查看Oracle9i中的内部内存分配情况。以下的新V$视图可以帮助监视Oracle9i连接的内存使用。
  V$PROCESS -在Oracle9i中加入了三个新的列以监视PGA内存的使用,新列的名字是pga_used_mem, pga_alloc_mem 和pga_max_mem。
  V$SYSSTAT -加入了很多新的统计行,包括有area statistics for optimal, one-pass和multi-pass。
  V$PGASTAT -该新视图展示了全部后台进程和专用连接的PGA内存使用
  V$SQL_PLAN--这个新视图包含了全部当前执行的SQL的执行计划信息。对于需要最优化的SQL语句的性能调整专家来说这是非常吸引人的。
  V$WORKAREA -这个新视图提供了Oracle9i连接的累积内存统计的详细信息。
  V$WORKAREA_ACTIVE - 这个新的视图提供了当前全部正在执行的SQL语句的内部内存使用信息。
  它们的目的是通过这些V$视图来监视SGA中的内存使用,然后根据Oracle实例的处理要求,通过ALTER SYSTEM命令重新分配内存。我们以下来看一些这些新的Oracle9i特性和脚本,它可以帮助我们查看详细的内存使用。
  当然我们不可能在这里详述所有的技术,以下就让我们看一个简单的例子,它通过使用V$SYSSTAT视图来决定何时重新设置PGA_AGGREGATE_TARGET参数。
  以下的查询可以得到自数据库实例启动后work areas被执行的全部数目和百分比。
work_area.sql
select
name profile,
cnt,
decode(total, 0, 0, round(cnt*100/total)) percentage
from
(
select
name,
value cnt,
(sum(value) over ()) total
from
v$sysstat
where
name like 'workarea exec%'
);
  这个查询的输出可能如下:
PROFILE CNT PERCENTAGE
----------------------------------- ---------- ----------
workarea executions - optimal 5395 95
workarea executions - onepass 284 5
workarea executions - multipass 0 0
  这个查询的输出是用来告诉DBA何时动态调整PGA_AGGREGATE_TARGET参数。在通常的情况下,如果multi-pass的执行大于0,就需要增加PGA_AGGREGATE_TARGET的值,并且在optimal executions是100%时减少它的值。

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com