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

Oracle 10g系統管理:自動SGA內存管理

編輯:Oracle數據庫基礎

在Oracle 10g系統管理中,有一個自動SGA內存管理(ASMM)。下面介紹一下這個功能:

要使用自動管理,需要設置參數SGA_TARGET、STATISTICS_LEVEL(=TYPICAL或ALL,因為不支持統計集合,數據庫就沒有必要的歷史信息來確定大小)。在Oracle9i及以前版本中,只能用手動SGA內存管理,不存在參數SGA_TARGET,而且參數 SGA_MAX_SIZE只是一個上限,而不是動態目標,但10G中時SGA_TARGET設置不能超過它。

在Oracle 10g中,與內存相關的參數可以歸為兩類:

◆自動調優的SGA參數:目前這些參數包括DB_CACHE_SIZE、SHARED_POOL_SIZE、LARGE_POOL_SIZE和Java_POOL_SIZE。

◆手動SGA參數:這些參數包括LOG_BUFFER、STREAMS_POOL、DB_NK_CACHE_SIZE、DB_KEEP_CACHE_SIZE和DB_RECYCLE_CACHE_SIZE。

在Oracle 10g中,任何時候你都能查詢V$SGAINFO,來查看SGA的哪些組件的大小可以調整。(Oracle 10g系統管理相比之前的版本是大大增強了)

采用自動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個內存區分配和撤銷內存。

隨著時間的推移,當實例的內存需求越來越確定時,各個SGA組件的大小也越來越固定。即便數據庫關閉後又啟動,數據庫還能記得組件的大小,因此不必每次都從頭再來確定實例的正確大小。這是通過4個帶雙下劃線的參數做到的:__DB_CACHE_SIZE、__Java_POOL_SIZE、__LARGE_POOL_SIZE和__SHARED_POOL_SIZE。如果正常或立即關閉數據庫,則數據庫會把這些值記錄到存儲參數文件(SPFILE)中,並在啟動時再使用這些值來設置各個區的默認大小。

另外,如果知道4個區中某個區的最小值,那麼除了設置SGA_TARGET外,還可以設置這個參數。實例會使用你的設置作為下界(即這個區可能的最小大小),但是重要的一點要記住,這樣Oracle就不能縮小相應區的大小到設定的最小值以下了。

以上就對Oracle 10g系統管理中的自動SGA內存管理功能進行了簡單的介紹。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved