Oracle

oracle 可以使用比 memory_max_target 更多的記憶體嗎?

  • December 7, 2018

我的系統有 34GB RAM,但是,我已經設置

memory_max_target = 3G
memory_target = 3G

Oracle 記憶體參數使用 G (GB)、M (MB) 或 K (KB) 指定

……我使用 AMM(自動記憶體管理)。

即使當我檢查我的記憶體的目前使用情況時就是這種情況

**free -m**

…它顯示總共使用了大約 33 GB。所以我猜,Oracle 也使用了其中的一些(是的,我的意思是超過memory_max_target大小,即 3 GB)。

所以,我的問題是:

  • Oracle 可以使用比我們設置的更多的記憶體memory_max_target嗎?
  • 或者這是 Oracle 永遠不會改變的“硬”限制,即使系統有足夠的可用記憶體?

free 的輸出包括記憶體和緩衝區,很多人陷入了認為他們的記憶體被使用而實際上沒有被使用的陷阱。訪問此站點進行解釋:http ://www.linuxatemyram.com/

但另一方面,是的,Oracle 絕對可以使用比memory_max_target參數配置更多的記憶體。參數,例如memory_max_targetmemory_max_size僅限制 SGA 的大小。在 12c 之前,PGA 不能被限制,即使有隱藏參數_pga_max_size。該參數限制了每個會話的 PGA 大小,但它不考慮所有類型的分配,因此即使是 1 個“胭脂”會話也會佔用數據庫伺服器的所有記憶體。

從 12c 開始,有參數pga_aggregate_limit,這是 PGA 的真正硬限制。

參考:

我意識到這是一個舊執行緒,但如果其他人遇到這個執行緒,我想更正給出的第一個答案,因為它不准確。受訪者表示“參數,如memory_max_target、memory_max_size僅限制SGA的大小”。不對。來自 Oracle 的文件:

管理實例記憶體的最簡單方法是允許 ​​Oracle 數據庫實例為您自動管理和調整它。為此(在大多數平台上),您只需設置目標記憶體大小初始化參數 (MEMORY_TARGET) 和可選的最大記憶體大小初始化參數 (MEMORY_MAX_TARGET)。然後實例調整到目標記憶體大小,根據需要在系統全域區域 (SGA) 和實常式序全域區域(實例 PGA)之間重新分配記憶體。

引用自:https://dba.stackexchange.com/questions/55621