為什麼 Windows 預設安裝上的 Oracle 11g 即使在空閒時也會不斷增加記憶體使用量?
我在我的 Windows XP 64 位桌面上安裝了 Oracle 11g,幾乎所有預設選項。現在,當我啟動數據庫時,即使數據庫未使用,它也會一次增加幾百 KB 的記憶體使用量。目前我正在查看 Windows 任務管理器,它顯示 oracle.exe 使用超過 1.4 G 並且還在計數。
發生了什麼?如何設置記憶體使用的最大限制?
它是一台開發機器,在大多數情況下,數據庫不會很大。即使它們很大,並髮使用者的數量也會很少。
您的 memory_target 設置為什麼?如果它設置得很高,那麼隨著時間的推移它會增長到最大尺寸,我不會感到驚訝。查看此處以獲取有關11g 中新的 memory_target 參數的更多資訊。這將限制 Oracle 嘗試獲取的記憶體量。
memory_target 參數將 Oracle 配置為自我管理過去需要單獨注意的記憶體參數:
- DB_CACHE_SIZE
- SHARED_POOL_SIZE
- LARGE_POOL_SIZE
- JAVA_POOL_SIZE
- PGA_AGGREGATE_TARGET
請注意,必須將 STATISTICS_LEVEL 設置為 TYPICAL。
這裡實際上涉及到兩個參數:memory_max_target 和 memory_target。第一個設置 memory_target 的最大值並需要重新啟動實例才能更改:
ALTER SYSTEM SET memory_max_target = 1500M SCOPE=SPFILE;
一旦到位,可以動態設置 memory_target 參數而無需重新啟動實例:
ALTER SYSTEM SET memory_target = 1000M;
對於想要基本的“設置並忘記它”記憶體管理設置的人來說,這是一個非常好的功能。為 memory_max_target 設置您認為需要的最高值,然後使用 memory_target 的值來調整您的需要。讓 Oracle 管理各個參數。Oracle 將使用實例統計資訊來管理這些值,因此隨著您的實例在使用模式方面的演變,Oracle 將考慮到這一點。
關於這些參數的另一個很好的參考可以在Oracle FAQ 的 Oracle Wiki中找到。