關於SGA的常用動態效能檢視

pingley發表於2012-02-07
關於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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章