自動sga內存管理

自動sga內存管理

在Oracle 10g中,與內存相關的參數可以歸爲兩類:
a 自動調優的SGA參數:目前這些參數包括DB_CACHE_SIZE、SHARED_POOL_SIZE、LARGE_POOL_SIZE和JAVA_POOL_SIZE。
b 手動SGA 參數:這些參數包括LOG_BUFFER、STREAMS_POOL、DB_NK_CACHE_SIZE、DB_KEEP_CACHE_SIZE 和
DB_RECYCLE_CACHE_SIZE。


SYS@orcl>select  name,bytes/1024/1024,resizeable   from  v$sgainfo;


NAME                                          BYTES/1024/1024 RESIZE
--------------------------------------------- --------------- ------
Fixed SGA Size                                     1.16254425 No
Redo Buffers                                        2.8359375 No
Buffer Cache Size                                         172 Yes
Shared Pool Size                                           88 Yes
Large Pool Size                                             4 Yes
Java Pool Size                                              4 Yes
Streams Pool Size                                           0 Yes
Granule Size                                                4 No
Maximum SGA Size                                          272 No
Startup overhead in Shared Pool                            36 No
Free SGA Memory Available                                   0


SYS@orcl>select  component,current_size,min_size,max_size,last_oper_time  from  v$sga_dynamic_components;


COMPONENT                 CURRENT_SIZE   MIN_SIZE   MAX_SIZE LAST_OPER_TIME
------------------------- ------------ ---------- ---------- --------------------
shared pool                   96468992   92274688          0 2012-03-23  13:26:38
large pool                     4194304    4194304          0
java pool                      8388608    4194304          0 2012-03-23  14:02:29
streams pool                         0          0          0
DEFAULT buffer cache         159383552  159383552          0 2012-03-23  14:02:29
KEEP buffer cache              4194304          0          0 2012-03-23  13:32:57
RECYCLE buffer cache           4194304    4194304          0
DEFAULT 2K buffer cache              0          0          0
DEFAULT 4K buffer cache              0          0          0
DEFAULT 8K buffer cache              0          0          0
DEFAULT 16K buffer cache       4194304    4194304          0
DEFAULT 32K buffer cache             0          0          0
ASM Buffer Cache                     0          0          0


注意 :要使用自動SGA內存管理,參數STATISTICS_LEVEL必須設置爲TYPICAL或ALL。如果不支持統計集合,數據庫就沒有必要的歷史信息來確定大小。


採用自動SGA 內存管理時,確定自動調整組件大小的主要參數是SGA_TARGET,這個參數可以在數據庫啓動並運行時動態調整,
最大可以達到SGA_MAX_SIZE參數設置的值(默認等於SGA_TARGET,所以如果想增加SGA_TARGET,就必須在啓動數據庫實例之前
先把SGA_MAX_SIZE設置得大一些)。數據庫會使用SGA_TARGET值,再減去其他手動設置組件的大小(如DB_KEEP_CACHE_SIZE、
DB_RECYCLE_CACHE_SIZE等),並使用計算得到的內存量來設置默認緩衝區池、共享池、大池和Java池的大小。在運行時,實例會根
據需要動態地對這4個內存區分配和撤銷內存。如果共享池內存用光了,實例不會向用戶返回一個ORA-04031“Unable to allocate N bytes of
shared memory”(無法分配N字節的共享內存)錯誤,而是會把緩衝區緩存縮小几MB(一個顆粒的大小),再相應地增加共享池的大小。
隨着時間的推移,當實例的內存需求越來越確定時,各個SGA組件的大小也越來越固定。即便數據庫關閉後又啓動,數據庫還能記得組件的大小,因此不必每次都從頭再來確定實例的正確大小。這是通過4 個帶雙下劃線的參數做到的:__DB_CACHE_SIZE、
__JAVA_POOL_SIZE、__LARGE_POOL_SIZE和__SHARED_POOL_SIZE。如果正常或立即關閉數據庫,則數據庫會把這些值記錄到存儲
參數文件(SPFILE)中,並在啓動時再使用這些值來設置各個區的默認大小。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章