ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 关于SGA的常用动态性能视图

关于SGA的常用动态性能视图

原创 Linux操作系统 作者:pingley 时间:2012-02-07 15:14:11 0 删除 编辑
关于SGA的常用动态性能视图
V$sgainfo
用于展现SGA的信息,包括不同SGA组件的大小,粒度,与空闲内存。
SQL> desc v$sgainfo
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 NAME                                               VARCHAR2(32)
 BYTES                                              NUMBER
 RESIZEABLE                                         VARCHAR2(3)
name:SGA统计值的名称
bytes:SGA统计值大小,单位bytes
resizeable:统计值是否可以调整YES or NO

V$sgastat
用于展现SGA的详细信息
SQL> desc v$sgastat
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 POOL                                               VARCHAR2(12)
 NAME                                               VARCHAR2(26)
 BYTES                                              NUMBER
pool:name所在的池
name:SGA组件名称
bytes:内存大小,单位bytes

v$sga_target_advice
用于展现对sga_target初始化参数的建议信息
SQL> desc v$sga_target_advice
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 SGA_SIZE                                           NUMBER
 SGA_SIZE_FACTOR                                    NUMBER
 ESTD_DB_TIME                                       NUMBER
 ESTD_DB_TIME_FACTOR                                NUMBER
 ESTD_PHYSICAL_READS                                NUMBER
SGA_SIZE:SGA大小
SGA_SIZE_FACTOR:SGA_SIZE与当前SGA大小的比值
ESTD_DB_TIME :预估的DB time
ESTD_DB_TIME_FACTOR:预估的DB time 与当前DB time的比值
ESTD_PHYSICAL_READS:预估的物理读
DB time: It is calculated by aggregating the CPU and wait times of all sessions not waiting
on idle wait events (non-idle user sessions). DB time is measured cumulatively from the time 
that the instance was started.
如果SGA内存管理没有使用AMM特性,不会生成该视图。

########################################################################################
下面对v$db_cache_advice的相关查询与对V$shared_pool_advice不是在同一个数据库中查询的结果
这里把他们放在一起,整合为一个关于SGA内存视图的博文。

从oracle9i版本开始,oracle引进了多个缓冲区内存设置相关的建议视图。
oracle根据系统运行过程中收集到的统计信息,及一些复杂的数据模型,预
估出不同大小的缓冲区设置时缓冲区中的表现。预估的效果可能与实际情况
有所偏差。
v$db_cache_advice是关于数据缓冲区设置的建议视图,预估的缓冲区的值的
范围从当前数据缓冲区值得10%~200%之间。

SQL> desc v$db_cache_advice;
Name                          Type         Nullable Default Comments 
----------------------------- ------------ -------- ------- -------- 
ID                            NUMBER       Y                         
NAME                          VARCHAR2(20) Y                         
BLOCK_SIZE                    NUMBER       Y                         
ADVICE_STATUS                 VARCHAR2(3)  Y                         
SIZE_FOR_ESTIMATE             NUMBER       Y                         
SIZE_FACTOR                   NUMBER       Y                         
BUFFERS_FOR_ESTIMATE          NUMBER       Y                         
ESTD_PHYSICAL_READ_FACTOR     NUMBER       Y                         
ESTD_PHYSICAL_READS           NUMBER       Y                         
ESTD_PHYSICAL_READ_TIME       NUMBER       Y                         
ESTD_PCT_OF_DB_TIME_FOR_READS NUMBER       Y                         
ESTD_CLUSTER_READS            NUMBER       Y                         
ESTD_CLUSTER_READ_TIME        NUMBER       Y   
查看视图结构

列含义解释:
ID             值的范围为1~8,其中前6个编号对于db_nk_cache_size,7对于ddb_keep_cache_size,8对应db_recycle_cache_size。                                    
NAME           缓冲池名称,default,keep,recycle等,如果没有设置keep,recycle池该视图中不会存在相应的记录。                                    
BLOCK_SIZE     块大小                                    
ADVICE_STATUS  对应初始化参数db_cache_advice             
SIZE_FOR_ESTIMATE    预估的数据缓冲区的大小,单位M                               
SIZE_FACTOR          SIZE_FOR_ESTIMATE与当前数据缓冲区大小的比值                                
BUFFERS_FOR_ESTIMATE      预估的数据缓冲区大小,以块为单位                             
ESTD_PHYSICAL_READ_FACTOR      当缓冲区设置为SIZE_FOR_ESTIMATE时,预估的物理读与当前的物理读的比值,如果当前的物理读为0,该值为空                    
ESTD_PHYSICAL_READS            当缓冲区设置为SIZE_FOR_ESTIMATE时,预估的物理读                
ESTD_PHYSICAL_READ_TIME        响应时间                   
ESTD_PCT_OF_DB_TIME_FOR_READS  物理读消耗的时间的百分比                 
ESTD_CLUSTER_READS             读取的数据块总数,仅RAC环境有效              
ESTD_CLUSTER_READ_TIME         读取花费的时间,仅对RAC环境有效 
     
下面查询default池的建议信息:
SQL> select size_for_estimate,size_factor,estd_physical_read_factor,estd_physical_reads
  2  from V$db_Cache_Advice
  3  where name = 'DEFAULT';
 
SIZE_FOR_ESTIMATE SIZE_FACTOR ESTD_PHYSICAL_READ_FACTOR ESTD_PHYSICAL_READS
----------------- ----------- ------------------------- -------------------
               16         0.1                    1.9942               37301
               32         0.2                    1.5334               28682
               48         0.3                    1.3367               25003
               64         0.4                    1.1974               22397
               80         0.5                    1.1248               21040
               96         0.6                    1.0871               20334
              112         0.7                    1.0443               19533
              128         0.8                    1.0102               18895
              144         0.9                    1.0029               18759
              160           1                         1               18705
              176         1.1                         1               18705
              192         1.2                         1               18705
              208         1.3                         1               18705
              224         1.4                         1               18705
              240         1.5                         1               18705
              256         1.6                         1               18705
              272         1.7                         1               18705
              288         1.8                         1               18705
              304         1.9                         1               18705
              320           2                         1               18705        
当前设置的默认池大小为160mb,从查询结果来看,设置的是比较合适的。 
   
衡量数据缓冲区设置是否合适的一个重要指标是:缓冲区命中率
SQL> select 1-sum(decode(name,'physical reads',value,0))/
  2  (sum(decode(name,'db block gets',value,0))+
  3  sum(decode(name,'consistent gets',value,0))) "Buffer cache hit ratio"
  4  from v$sysstat;
 
Buffer cache hit ratio
----------------------
     0.981732159175874
     
当该值低于95%的时候DBA需要注意是否数据缓冲区不足。数据缓冲区的命中率受很多因素影响,
并不能说缓冲区命中率低就说明数据库的数据缓冲区不足对于OLAP数据库(经常需要大量读取数据)
应该根据其业务特点进行分析。可以考虑增大数据缓冲区,设置多缓冲区(keep,recycle缓冲区。)
#############################################################################################

V$shared_pool_advice
用于预估不同共享池大小时,解析时间的不同。
SQL> desc V$shared_pool_advice
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 SHARED_POOL_SIZE_FOR_ESTIMATE                      NUMBER
 SHARED_POOL_SIZE_FACTOR                            NUMBER
 ESTD_LC_SIZE                                       NUMBER
 ESTD_LC_MEMORY_OBJECTS                             NUMBER
 ESTD_LC_TIME_SAVED                                 NUMBER
 ESTD_LC_TIME_SAVED_FACTOR                          NUMBER
 ESTD_LC_LOAD_TIME                                  NUMBER
 ESTD_LC_LOAD_TIME_FACTOR                           NUMBER
 ESTD_LC_MEMORY_OBJECT_HITS                         NUMBER
 
SHARED_POOL_SIZE_FOR_ESTIMATE:预估的共享池大小,单位M
SHARED_POOL_SIZE_FACTOR:预估的共享池大小与当前共享池大小的比值
ESTD_LC_SIZE:预估的共享池中用于库缓存的大小,单位M
ESTD_LC_MEMORY_OBJECTS:预估的共享池大小下库缓存中的对象数
ESTD_LC_TIME_SAVED:因为库缓存对象,可以节省的解析时间
ESTD_LC_TIME_SAVED_FACTOR:ESTD_LC_TIME_SAVED与当前共享池所需花费的解析时间的比值
ESTD_LC_LOAD_TIME:使用预估的共享池大小时,解析对象所花费的时间
ESTD_LC_LOAD_TIME_FACTOR:ESTD_LC_LOAD_TIME与当前共享池大小解析时间的比值
ESTD_LC_MEMORY_OBJECT_HITS:预估的共享池大小时,共享池中对象的命中次数。
 SQL> select shared_pool_size_for_estimate,shared_pool_size_factor,estd_lc_size,estd_lc_time_saved_factor,
estd_lc_load_time_factor,estd_lc_memory_object_hits
from v$shared_pool_advice;
  2    3
SHARED_POOL_SIZE_FOR_ESTIMATE SHARED_POOL_SIZE_FACTOR ESTD_LC_SIZE ESTD_LC_TIME_SAVED_FACTOR ESTD_LC_LOAD_TIME_FACTOR ESTD_LC_MEMORY_OBJECT_HITS
----------------------------- ----------------------- ------------ ------------------------- ------------------------ --------------------------
                           80                   .8696            2                     .9952                     1.16                       6342
                           92                       1           14                         1                        1                      29666
                          104                  1.1304           26                    1.0181                       .4                      30411
                          116                  1.2609           36                    1.0193                      .36                      30467
                          128                  1.3913           40                    1.0193                      .36                      30472
                          140                  1.5217           40                    1.0193                      .36                      30472
                          152                  1.6522           40                    1.0193                      .36                      30472
                          164                  1.7826           40                    1.0193                      .36                      30472
                          176                   1.913           40                    1.0193                      .36                      30472
                          188                  2.0435           40                    1.0193                      .36                      30472
                          
                          
从上面的查询可以看出当前共享池的大小设置为92MB,如果还有空闲内存可以把共享池大小调整到128MB,根据建议视图这样比较合适,性能会有所提高。

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

请登录后发表评论 登录
全部评论

注册时间:2012-02-06

  • 博文量
    169
  • 访问量
    720847