程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> oracle 11g 自動內存的管理

oracle 11g 自動內存的管理

編輯:Oracle數據庫基礎

Oracle對內存的管理的 優化從未間斷,從8i到11g不斷地提出新的管理概念。每個本版都對內存管理進行了簡化:

  1. 8i->9i:PGA的自動管理;
  2. 9i->10g:SGA的自動管理;
  3. 10g->11g:MEMORY(SGA+PGA)的自動管理。

在11g中Oracle引入了自動化內存管理(Automatic Memory Management)概念,僅用兩個參數就能完成Oracle的內存管理工作。DBA的工作看來又要輕松不少了,看看兩個參數:

1 MEMORY_TARGET:Oracle所能使用的最大內存,該參數可以動態調整。<BR>MEMORY_MAX_TARGET:MEMORY_TARGET參數所能動態設定的最大值,不能動態調整,需要重啟數據庫

注:Oracle的內存管理方式可以根據本版向下兼容的,11g可以實現10g,9i,8i時的管理方式。

Oracle環境:

下面通過一個小測試來看看Oracle的內存分配(沒有對PGA測試)。

 

01 SQL> select component,current_size,min_size,max_size from v$memory_dynamic_components; 02    03 COMPONENT                      CURRENT_SIZE   MIN_SIZE   MAX_SIZE               04 ------------------------------ ------------ ---------- ----------               05 shared pool                       130023424  109051904  130023424               06 large pool                          4194304    4194304    4194304               07 Java pool                           4194304    4194304    4194304               08 streams pool                              0          0          0               09 SGA Target                        322961408  322961408  322961408               10 DEFAULT buffer cache              176160768  176160768  197132288               11 KEEP buffer cache                         0          0          0               12 RECYCLE buffer cache                      0          0          0               13 DEFAULT 2K buffer cache                   0          0          0               14 DEFAULT 4K buffer cache                   0          0          0               15 DEFAULT 8K buffer cache                   0          0          0               16    17 COMPONENT                      CURRENT_SIZE   MIN_SIZE   MAX_SIZE               18 ------------------------------ ------------ ---------- ----------               19 DEFAULT 16K buffer cache                  0          0          0               20 DEFAULT 32K buffer cache                  0          0          0               21 Shared IO Pool                            0          0          0               22 PGA Target                        218103808  213909504  218103808               23 ASM Buffer Cache                          0          0          0               24    25 已選擇16行。 26    27 SQL> show parameter memory_target 28    29 NAME                                 TYPE        VALUE                          30 ------------------------------------ ----------- ------------------------------ 31 memory_target                        big integer 516M                           32    33 SQL> run 34   1* select (322961408+218103808)/1024/1024||'M' "SGA+PGA" from dual 35    36 SGA+                                                                            37 ----                                                                            38 516M

 

在此可以看出memory_target參數管理的內存是PGA與SGA之和。

單獨計算SGA,通過shared pool,streams pool,Java pool,large pool,buffer cache,
ASM Buffer Cache參數求和,計算得出當前SGA使用的大小(314572800)。

 

1 SQL> select (130023424+4194304+4194304+176160768) SGA from dual 2   2  ; 3    4        SGA                                                                      5 ----------                                                                      6  314572800通過SGA的目標值減去當前SGA的動態消耗。

 

在SGA中的包括LOG BUFFER,fixed_sga部分,在最開始的v$memory_dynamic_components視圖
並沒有包括這兩部分,也說明這兩個部分是固定的值,不會動態的改變。
出去SGA動態消耗後,再減去固定消耗,得到當前SGA還剩余多少。 1 SQL> select 8388608-7179824 from dual;<BR><BR>8388608-7179824                                                                <BR>---------------                                                                <BR>        1208784<BR>

 

在動態分配視圖的查詢結果中包含Shared IO pool部分,以下是對該參數的說明:
Shared IO Pool Memory
Wait until a shared I/O pool buffer becomes available. This happens when processes are
using these buffers for I/O and the current process needs to wait for the release
of any one of the buffers to the shared I/O pool.

Wait Time: 10msec

Parameters: None                                                               

說明:shared IO pool參數設置是為了盡量減小進程IO的等待而專門配置的參數。
從分析角度看應該是屬於PGA部分。

1 SQL> select 322961408-314572800 "sga target-sga" from dual;<BR><BR>sga target-sga<BR>--------------<BR>       8388608<BR><BR>SQL> select * from v$sgastat where pool is null;<BR><BR>POOL         NAME                            BYTES                             <BR>------------ -------------------------- ----------                             <BR>             fixed_sga                     1375792                             <BR>             buffer_cache                167772160                             <BR>             log_buffer                    5804032                             <BR><BR>SQL> select 1375792+5804032 "fixed_sga+log_buffer" from dual;<BR><BR>fixed_sga+log_buffer                                                           <BR>--------------------                                                           <BR>             7179824                                                <BR>
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved